Salome HOME
Patch for 4.5.2
authormaintenance team <salome-mnt@opencascade.com>
Mon, 2 Nov 2009 12:51:45 +0000 (12:51 +0000)
committermaintenance team <salome-mnt@opencascade.com>
Mon, 2 Nov 2009 12:51:45 +0000 (12:51 +0000)
config_files/patches/qapplication_X11_clipboard.patch [new file with mode: 0755]

diff --git a/config_files/patches/qapplication_X11_clipboard.patch b/config_files/patches/qapplication_X11_clipboard.patch
new file mode 100755 (executable)
index 0000000..696e8a8
--- /dev/null
@@ -0,0 +1,92 @@
+From 9e5fa633913ef952ca4ef5312fe396bcfc885321 Mon Sep 17 00:00:00 2001
+From: Denis Dzyubenko <denis.dzyubenko@nokia.com>
+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<XFixesSelectionNotifyEvent *>(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<XFixesSelectionNotifyEvent *>(event);
++        X11->time = req->selection_timestamp;
++    }
++#endif
+     QETWidget *widget = (QETWidget*)QWidget::find((WId)event->xany.window);
+-- 
+1.6.1
+