93 lines
3.2 KiB
Diff
93 lines
3.2 KiB
Diff
|
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
|
||
|
|