mirror of
https://github.com/glfw/glfw.git
synced 2024-11-29 15:44:35 +00:00
Cleanup of clipboard and string atoms.
This commit is contained in:
parent
82b8dd5040
commit
f3e39ce680
@ -88,7 +88,7 @@ Atom _glfwWriteSelection(XSelectionRequestEvent* request)
|
|||||||
if (property == None)
|
if (property == None)
|
||||||
property = _glfw.x11.selection.property;
|
property = _glfw.x11.selection.property;
|
||||||
|
|
||||||
if (request->target == _glfw.x11.selection.targets)
|
if (request->target == _glfw.x11.TARGETS)
|
||||||
{
|
{
|
||||||
// The list of supported targets was requested
|
// The list of supported targets was requested
|
||||||
|
|
||||||
@ -139,7 +139,7 @@ void _glfwPlatformSetClipboardString(_GLFWwindow* window, const char* string)
|
|||||||
|
|
||||||
// Set the specified window as owner of the selection
|
// Set the specified window as owner of the selection
|
||||||
XSetSelectionOwner(_glfw.x11.display,
|
XSetSelectionOwner(_glfw.x11.display,
|
||||||
_glfw.x11.selection.atom,
|
_glfw.x11.CLIPBOARD,
|
||||||
window->x11.handle, CurrentTime);
|
window->x11.handle, CurrentTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -155,7 +155,7 @@ const char* _glfwPlatformGetClipboardString(_GLFWwindow* window)
|
|||||||
_glfw.x11.selection.target = _glfw.x11.selection.formats[i];
|
_glfw.x11.selection.target = _glfw.x11.selection.formats[i];
|
||||||
|
|
||||||
XConvertSelection(_glfw.x11.display,
|
XConvertSelection(_glfw.x11.display,
|
||||||
_glfw.x11.selection.atom,
|
_glfw.x11.CLIPBOARD,
|
||||||
_glfw.x11.selection.target,
|
_glfw.x11.selection.target,
|
||||||
_glfw.x11.selection.property,
|
_glfw.x11.selection.property,
|
||||||
window->x11.handle, CurrentTime);
|
window->x11.handle, CurrentTime);
|
||||||
|
@ -518,26 +518,28 @@ static GLboolean initDisplay(void)
|
|||||||
// Detect whether an EWMH-conformant window manager is running
|
// Detect whether an EWMH-conformant window manager is running
|
||||||
detectEWMH();
|
detectEWMH();
|
||||||
|
|
||||||
|
// Find or create string format atoms
|
||||||
|
_glfw.x11.UTF8_STRING =
|
||||||
|
XInternAtom(_glfw.x11.display, "UTF8_STRING", False);
|
||||||
|
_glfw.x11.COMPOUND_STRING =
|
||||||
|
XInternAtom(_glfw.x11.display, "COMPOUND_STRING", False);
|
||||||
|
|
||||||
// Find or create selection property atom
|
// Find or create selection property atom
|
||||||
_glfw.x11.selection.property =
|
_glfw.x11.selection.property =
|
||||||
XInternAtom(_glfw.x11.display, "GLFW_SELECTION", False);
|
XInternAtom(_glfw.x11.display, "GLFW_SELECTION", False);
|
||||||
|
|
||||||
// Find or create clipboard atom
|
// Find or create standard clipboard atoms
|
||||||
_glfw.x11.selection.atom =
|
_glfw.x11.TARGETS = XInternAtom(_glfw.x11.display, "TARGETS", False);
|
||||||
XInternAtom(_glfw.x11.display, "CLIPBOARD", False);
|
_glfw.x11.CLIPBOARD = XInternAtom(_glfw.x11.display, "CLIPBOARD", False);
|
||||||
|
|
||||||
// Find or create selection target atoms
|
// Find or create selection target atoms
|
||||||
_glfw.x11.selection.formats[_GLFW_CLIPBOARD_FORMAT_UTF8] =
|
_glfw.x11.selection.formats[_GLFW_CLIPBOARD_FORMAT_UTF8] =
|
||||||
XInternAtom(_glfw.x11.display, "UTF8_STRING", False);
|
_glfw.x11.UTF8_STRING;
|
||||||
_glfw.x11.selection.formats[_GLFW_CLIPBOARD_FORMAT_COMPOUND] =
|
_glfw.x11.selection.formats[_GLFW_CLIPBOARD_FORMAT_COMPOUND] =
|
||||||
XInternAtom(_glfw.x11.display, "COMPOUND_STRING", False);
|
_glfw.x11.COMPOUND_STRING;
|
||||||
_glfw.x11.selection.formats[_GLFW_CLIPBOARD_FORMAT_STRING] =
|
_glfw.x11.selection.formats[_GLFW_CLIPBOARD_FORMAT_STRING] =
|
||||||
XA_STRING;
|
XA_STRING;
|
||||||
|
|
||||||
_glfw.x11.selection.targets = XInternAtom(_glfw.x11.display,
|
|
||||||
"TARGETS",
|
|
||||||
False);
|
|
||||||
|
|
||||||
return GL_TRUE;
|
return GL_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -132,6 +132,12 @@ typedef struct _GLFWlibraryX11
|
|||||||
Atom NET_WM_STATE_FULLSCREEN;
|
Atom NET_WM_STATE_FULLSCREEN;
|
||||||
Atom NET_ACTIVE_WINDOW;
|
Atom NET_ACTIVE_WINDOW;
|
||||||
|
|
||||||
|
// Selection atoms
|
||||||
|
Atom TARGETS;
|
||||||
|
Atom CLIPBOARD;
|
||||||
|
Atom UTF8_STRING;
|
||||||
|
Atom COMPOUND_STRING;
|
||||||
|
|
||||||
// True if window manager supports EWMH
|
// True if window manager supports EWMH
|
||||||
GLboolean hasEWMH;
|
GLboolean hasEWMH;
|
||||||
|
|
||||||
@ -176,11 +182,9 @@ typedef struct _GLFWlibraryX11
|
|||||||
} timer;
|
} timer;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
Atom atom;
|
|
||||||
Atom formats[_GLFW_CLIPBOARD_FORMAT_COUNT];
|
Atom formats[_GLFW_CLIPBOARD_FORMAT_COUNT];
|
||||||
char* string;
|
char* string;
|
||||||
Atom target;
|
Atom target;
|
||||||
Atom targets;
|
|
||||||
Atom property;
|
Atom property;
|
||||||
int status;
|
int status;
|
||||||
} selection;
|
} selection;
|
||||||
|
@ -872,8 +872,6 @@ void _glfwPlatformDestroyWindow(_GLFWwindow* window)
|
|||||||
|
|
||||||
void _glfwPlatformSetWindowTitle(_GLFWwindow* window, const char* title)
|
void _glfwPlatformSetWindowTitle(_GLFWwindow* window, const char* title)
|
||||||
{
|
{
|
||||||
Atom type = XInternAtom(_glfw.x11.display, "UTF8_STRING", False);
|
|
||||||
|
|
||||||
#if defined(X_HAVE_UTF8_STRING)
|
#if defined(X_HAVE_UTF8_STRING)
|
||||||
Xutf8SetWMProperties(_glfw.x11.display,
|
Xutf8SetWMProperties(_glfw.x11.display,
|
||||||
window->x11.handle,
|
window->x11.handle,
|
||||||
@ -893,7 +891,7 @@ void _glfwPlatformSetWindowTitle(_GLFWwindow* window, const char* title)
|
|||||||
if (_glfw.x11.NET_WM_NAME != None)
|
if (_glfw.x11.NET_WM_NAME != None)
|
||||||
{
|
{
|
||||||
XChangeProperty(_glfw.x11.display, window->x11.handle,
|
XChangeProperty(_glfw.x11.display, window->x11.handle,
|
||||||
_glfw.x11.NET_WM_NAME, type, 8,
|
_glfw.x11.NET_WM_NAME, _glfw.x11.UTF8_STRING, 8,
|
||||||
PropModeReplace,
|
PropModeReplace,
|
||||||
(unsigned char*) title, strlen(title));
|
(unsigned char*) title, strlen(title));
|
||||||
}
|
}
|
||||||
@ -901,7 +899,7 @@ void _glfwPlatformSetWindowTitle(_GLFWwindow* window, const char* title)
|
|||||||
if (_glfw.x11.NET_WM_ICON_NAME != None)
|
if (_glfw.x11.NET_WM_ICON_NAME != None)
|
||||||
{
|
{
|
||||||
XChangeProperty(_glfw.x11.display, window->x11.handle,
|
XChangeProperty(_glfw.x11.display, window->x11.handle,
|
||||||
_glfw.x11.NET_WM_ICON_NAME, type, 8,
|
_glfw.x11.NET_WM_ICON_NAME, _glfw.x11.UTF8_STRING, 8,
|
||||||
PropModeReplace,
|
PropModeReplace,
|
||||||
(unsigned char*) title, strlen(title));
|
(unsigned char*) title, strlen(title));
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user