21 #include "../../SDL_internal.h" 23 #if SDL_VIDEO_DRIVER_X11 33 #ifdef X_HAVE_UTF8_STRING 34 #define TEXT_FORMAT X11_XInternAtom(display, "UTF8_STRING", False) 36 #define TEXT_FORMAT XA_STRING 51 Window parent = RootWindow(dpy, DefaultScreen(dpy));
52 XSetWindowAttributes xattr;
54 CopyFromParent, InputOnly,
55 CopyFromParent, 0, &xattr);
67 return X11_XInternAtom(display,
"SDL_CUTBUFFER", False);
76 Atom XA_CLIPBOARD = X11_XInternAtom(display,
"CLIPBOARD", 0);
79 window = GetWindow(
_this);
81 return SDL_SetError(
"Couldn't find a window to own the selection");
86 X11_XChangeProperty(display, DefaultRootWindow(display),
88 (
const unsigned char *)text,
SDL_strlen(text));
90 if (XA_CLIPBOARD != None &&
91 X11_XGetSelectionOwner(display, XA_CLIPBOARD) != window) {
92 X11_XSetSelectionOwner(display, XA_CLIPBOARD, window, CurrentTime);
95 if (X11_XGetSelectionOwner(display, XA_PRIMARY) != window) {
96 X11_XSetSelectionOwner(display, XA_PRIMARY, window, CurrentTime);
105 Display *display = videodata->
display;
112 unsigned long nbytes;
113 unsigned long overflow;
118 Atom XA_CLIPBOARD = X11_XInternAtom(display,
"CLIPBOARD", 0);
119 if (XA_CLIPBOARD == None) {
127 window = GetWindow(
_this);
128 format = TEXT_FORMAT;
129 owner = X11_XGetSelectionOwner(display, XA_CLIPBOARD);
132 owner = DefaultRootWindow(display);
133 selection = XA_CUT_BUFFER0;
135 }
else if (owner == window) {
136 owner = DefaultRootWindow(display);
141 selection = X11_XInternAtom(display,
"SDL_SELECTION", False);
142 X11_XConvertSelection(display, XA_CLIPBOARD, format, selection, owner,
154 if (waitElapsed > 1000) {
165 if (X11_XGetWindowProperty(display, owner, selection, 0, INT_MAX/4, False,
166 format, &seln_type, &seln_format, &nbytes, &overflow, &
src)
168 if (seln_type == format) {
char * X11_GetClipboardText(_THIS)
return Display return Display Bool Bool int int int return Display XEvent Bool(*) XPointer return Display return Display dpy)
struct wl_display * display
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
SDL_bool selection_waiting
static SDL_VideoDevice * _this
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
SDL_bool X11_HasClipboardText(_THIS)
Uint32 SDL_GetTicks(void)
Get the number of milliseconds since the SDL library initialization.
int X11_SetClipboardText(_THIS, const char *text)
Atom X11_GetSDLCutBufferClipboardType(Display *display)
static char text[MAX_TEXT_LENGTH]
EGLSurface EGLNativeWindowType * window