You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.9 KiB
52 lines
1.9 KiB
qt-bugs@ issue : none, probably even won't be
|
|
bugs.kde.org number : 80072
|
|
applied: no
|
|
author: Lubos Lunak <l.lunak@kde.org>
|
|
|
|
A crude hack for KDE #80072. No good idea how to fix it properly yet :(.
|
|
|
|
================================================================================
|
|
Index: src/kernel/qclipboard_x11.cpp
|
|
===================================================================
|
|
--- src/kernel/qclipboard_x11.cpp.orig
|
|
+++ src/kernel/qclipboard_x11.cpp
|
|
@@ -112,6 +112,7 @@ static int pending_timer_id = 0;
|
|
static bool pending_clipboard_changed = FALSE;
|
|
static bool pending_selection_changed = FALSE;
|
|
|
|
+Q_EXPORT bool qt_qclipboard_bailout_hack = false;
|
|
|
|
// event capture mechanism for qt_xclb_wait_for_event
|
|
static bool waiting_for_data = FALSE;
|
|
@@ -464,6 +465,15 @@ static Bool checkForClipboardEvents(Disp
|
|
|| e->xselectionclear.selection == qt_xa_clipboard)));
|
|
}
|
|
|
|
+static bool selection_request_pending = false;
|
|
+
|
|
+static Bool check_selection_request_pending( Display*, XEvent* e, XPointer )
|
|
+ {
|
|
+ if( e->type == SelectionRequest && e->xselectionrequest.owner == owner->winId())
|
|
+ selection_request_pending = true;
|
|
+ return False;
|
|
+ }
|
|
+
|
|
bool qt_xclb_wait_for_event( Display *dpy, Window win, int type, XEvent *event,
|
|
int timeout )
|
|
{
|
|
@@ -515,6 +525,14 @@ bool qt_xclb_wait_for_event( Display *dp
|
|
do {
|
|
if ( XCheckTypedWindowEvent(dpy,win,type,event) )
|
|
return TRUE;
|
|
+ if( qt_qclipboard_bailout_hack ) {
|
|
+ XEvent dummy;
|
|
+ selection_request_pending = false;
|
|
+ if ( owner != NULL )
|
|
+ XCheckIfEvent(dpy,&dummy,check_selection_request_pending,NULL);
|
|
+ if( selection_request_pending )
|
|
+ return TRUE;
|
|
+ }
|
|
|
|
// process other clipboard events, since someone is probably requesting data from us
|
|
XEvent e;
|