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 57 return X11_XInternAtom(display,
"SDL_CUTBUFFER", False);
66 Atom XA_CLIPBOARD = X11_XInternAtom(display,
"CLIPBOARD", 0);
69 window = GetWindow(
_this);
71 return SDL_SetError(
"Couldn't find a window to own the selection");
76 X11_XChangeProperty(display, DefaultRootWindow(display),
78 (
const unsigned char *)text,
SDL_strlen(text));
80 if (XA_CLIPBOARD != None &&
81 X11_XGetSelectionOwner(display, XA_CLIPBOARD) != window) {
82 X11_XSetSelectionOwner(display, XA_CLIPBOARD, window, CurrentTime);
85 if (X11_XGetSelectionOwner(display, XA_PRIMARY) != window) {
86 X11_XSetSelectionOwner(display, XA_PRIMARY, window, CurrentTime);
95 Display *display = videodata->
display;
102 unsigned long nbytes;
103 unsigned long overflow;
108 Atom XA_CLIPBOARD = X11_XInternAtom(display,
"CLIPBOARD", 0);
109 if (XA_CLIPBOARD == None) {
117 window = GetWindow(
_this);
118 format = TEXT_FORMAT;
119 owner = X11_XGetSelectionOwner(display, XA_CLIPBOARD);
122 owner = DefaultRootWindow(display);
123 selection = XA_CUT_BUFFER0;
125 }
else if (owner == window) {
126 owner = DefaultRootWindow(display);
131 selection = X11_XInternAtom(display,
"SDL_SELECTION", False);
132 X11_XConvertSelection(display, XA_CLIPBOARD, format, selection, owner,
144 if (waitElapsed > 1000) {
155 if (X11_XGetWindowProperty(display, owner, selection, 0, INT_MAX/4, False,
156 format, &seln_type, &seln_format, &nbytes, &overflow, &
src)
158 if (seln_type == format) {
uint32_t Uint32
An unsigned 32-bit integer type.
char * X11_GetClipboardText(_THIS)
struct wl_display * display
SDL_bool selection_waiting
static SDL_VideoDevice * _this
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]
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
The type used to identify a window.