92 Atom requested_type = None;
93 bool sent_request =
false;
95 for(
int cnt = 0; cnt < 5;)
100 if( event.type != SelectionNotify )
106 Atom target =
event.xselection.target;
107 if(event.xselection.property == None)
117 "ClipboardX11::getText: Conversion failed: "
127 requested_type = XA_STRING;
128 XConvertSelection(
_display, atom_type, requested_type, atom_type,
131 else if(target == requested_type)
140 "ClipboardX11::getText: can only handle 8-bit data (is "
141 << prop.
format <<
"-bit) -> retry "
159 "ClipboardX11::getText: wrong target: " <<
getAtomName(target)
165 return std::string();
239 "ClipboardX11: handle selection request: "
240 "selection=" <<
getAtomName(sel_req.selection) <<
", "
250 XSelectionEvent response;
251 response.type = SelectionNotify;
252 response.display = sel_req.display;
253 response.requestor = sel_req.requestor;
254 response.selection = sel_req.selection;
255 response.target = sel_req.target;
256 response.property = sel_req.property;
257 response.time = sel_req.time;
261 static Atom supported[] = {
276 else if( sel_req.target == XA_STRING
292 response.property = None;
295 XSendEvent(
_display, sel_req.requestor, False, 0, (XEvent*)&response);
324 unsigned long nitems;
325 unsigned long bytes_after;
326 unsigned char *ret = 0;
328 int read_bytes = 1024;
339 _display, w, property, 0, read_bytes, False, AnyPropertyType,
340 &actual_type, &actual_format, &nitems, &bytes_after,
345 }
while( bytes_after );
347 Property p = {ret, actual_format, nitems, actual_type};