From 7b4110fe62c92a057f76df6e534206a14acd3363 Mon Sep 17 00:00:00 2001 From: maintenance team Date: Mon, 2 Nov 2009 12:51:45 +0000 Subject: [PATCH] Patch for 4.5.2 --- .../patches/qapplication_X11_clipboard.patch | 92 +++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100755 config_files/patches/qapplication_X11_clipboard.patch diff --git a/config_files/patches/qapplication_X11_clipboard.patch b/config_files/patches/qapplication_X11_clipboard.patch new file mode 100755 index 0000000..696e8a8 --- /dev/null +++ b/config_files/patches/qapplication_X11_clipboard.patch @@ -0,0 +1,92 @@ +From 9e5fa633913ef952ca4ef5312fe396bcfc885321 Mon Sep 17 00:00:00 2001 +From: Denis Dzyubenko +Date: Wed, 22 Jul 2009 17:12:17 +0200 +Subject: [PATCH] Revert "Added a check that X11 timestamp goes forward only." + +In some cases we might get an invalid timestamp that is far away in +the future, so remembering it will break all consequent X calls that +require a timestamp because it just contains junk (for example +clipboard will stop working). This happens with XIM+SCIM pair - +whenever we start input method and type something to the widget, we +get a XKeyPress event with a commited string, however the 'serial' and +'time' members of the XEvent structure are not initialized (according +to valgrind) and contain junk. + +This reverts commit 2ed015b8a0ffad63f0f59b0e2255057f416895fb. + +Reviewed-By: Brad +--- + src/gui/kernel/qapplication_x11.cpp | 35 +++++++++++++++-------------------- + 1 files changed, 15 insertions(+), 20 deletions(-) + +diff --git a/src/gui/kernel/qapplication_x11.cpp b/src/gui/kernel/qapplication_x11.cpp +index 163ceb6..abedfd6 100644 +--- a/src/gui/kernel/qapplication_x11.cpp ++++ b/src/gui/kernel/qapplication_x11.cpp +@@ -3142,48 +3142,43 @@ int QApplication::x11ProcessEvent(XEvent* event) + #ifdef ALIEN_DEBUG + //qDebug() << "QApplication::x11ProcessEvent:" << event->type; + #endif +- Time time = 0, userTime = 0; + switch (event->type) { + case ButtonPress: + pressed_window = event->xbutton.window; +- userTime = event->xbutton.time; ++ X11->userTime = event->xbutton.time; + // fallthrough intended + case ButtonRelease: +- time = event->xbutton.time; ++ X11->time = event->xbutton.time; + break; + case MotionNotify: +- time = event->xmotion.time; ++ X11->time = event->xmotion.time; + break; + case XKeyPress: +- userTime = event->xkey.time; ++ X11->userTime = event->xkey.time; + // fallthrough intended + case XKeyRelease: +- time = event->xkey.time; ++ X11->time = event->xkey.time; + break; + case PropertyNotify: +- time = event->xproperty.time; ++ X11->time = event->xproperty.time; + break; + case EnterNotify: + case LeaveNotify: +- time = event->xcrossing.time; ++ X11->time = event->xcrossing.time; + break; + case SelectionClear: +- time = event->xselectionclear.time; ++ X11->time = event->xselectionclear.time; + break; + default: +-#ifndef QT_NO_XFIXES +- if (X11->use_xfixes && event->type == (X11->xfixes_eventbase + XFixesSelectionNotify)) { +- XFixesSelectionNotifyEvent *req = +- reinterpret_cast(event); +- time = req->selection_timestamp; +- } +-#endif + break; + } +- if (time > X11->time) +- X11->time = time; +- if (userTime > X11->userTime) +- X11->userTime = userTime; ++#ifndef QT_NO_XFIXES ++ if (X11->use_xfixes && event->type == (X11->xfixes_eventbase + XFixesSelectionNotify)) { ++ XFixesSelectionNotifyEvent *req = ++ reinterpret_cast(event); ++ X11->time = req->selection_timestamp; ++ } ++#endif + + QETWidget *widget = (QETWidget*)QWidget::find((WId)event->xany.window); + +-- +1.6.1 + -- 2.30.2