Blob Blame History Raw
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