summaryrefslogtreecommitdiffstats
path: root/source/l/qt/QTBUG-21900_Buttons_in_Qt_applications_not_clickable_when_run_under_gnome-shell.patch
diff options
context:
space:
mode:
Diffstat (limited to 'source/l/qt/QTBUG-21900_Buttons_in_Qt_applications_not_clickable_when_run_under_gnome-shell.patch')
-rw-r--r--source/l/qt/QTBUG-21900_Buttons_in_Qt_applications_not_clickable_when_run_under_gnome-shell.patch97
1 files changed, 0 insertions, 97 deletions
diff --git a/source/l/qt/QTBUG-21900_Buttons_in_Qt_applications_not_clickable_when_run_under_gnome-shell.patch b/source/l/qt/QTBUG-21900_Buttons_in_Qt_applications_not_clickable_when_run_under_gnome-shell.patch
deleted file mode 100644
index 4d9834a8d..000000000
--- a/source/l/qt/QTBUG-21900_Buttons_in_Qt_applications_not_clickable_when_run_under_gnome-shell.patch
+++ /dev/null
@@ -1,97 +0,0 @@
-From a91e9dd202640598d8dec091c67ec94536390e7f Mon Sep 17 00:00:00 2001
-From: "Owen W. Taylor" <otaylor@fishsoup.net>
-Date: Mon, 17 Oct 2011 17:27:43 -0400
-Subject: [PATCH] Fix logic for figuring out what ConfigureNotify positions can be trusted
-
-When reading ahead in the queue for ConfigureNotify events, it's necessary
-to look for intermediate ReparentNotify events as well, since they will
-determine whether the position in the event can be trusted or not.
-
-Bug: https://bugreports.qt.nokia.com/browse/QTBUG-21900
----
- src/gui/kernel/qapplication_x11.cpp | 47 +++++++++++++++++++++++++++++++-----
- 1 file changed, 41 insertions(+), 6 deletions(-)
-
---- a/src/gui/kernel/qapplication_x11.cpp
-+++ b/src/gui/kernel/qapplication_x11.cpp
-@@ -816,6 +816,27 @@ static Bool qt_sync_request_scanner(Disp
- #endif
- #endif // QT_NO_XSYNC
-
-+struct qt_configure_event_data
-+{
-+ WId window;
-+ WId parent;
-+};
-+
-+static Bool qt_configure_event_scanner(Display*, XEvent *event, XPointer arg)
-+{
-+ qt_configure_event_data *data =
-+ reinterpret_cast<qt_configure_event_data*>(arg);
-+ if (event->type == ConfigureNotify &&
-+ event->xconfigure.window == data->window) {
-+ return true;
-+ } else if (event->type == ReparentNotify &&
-+ event->xreparent.window == data->window) {
-+ data->parent = event->xreparent.parent;
-+ }
-+
-+ return false;
-+}
-+
- static void qt_x11_create_intern_atoms()
- {
- const char *names[QX11Data::NAtoms];
-@@ -5281,8 +5302,11 @@ bool QETWidget::translateConfigEvent(con
- if (d->extra->compress_events) {
- // ConfigureNotify compression for faster opaque resizing
- XEvent otherEvent;
-- while (XCheckTypedWindowEvent(X11->display, internalWinId(), ConfigureNotify,
-- &otherEvent)) {
-+ qt_configure_event_data configureData;
-+ configureData.window = internalWinId();
-+ configureData.parent = d->topData()->parentWinId;
-+ while (XCheckIfEvent(X11->display, &otherEvent,
-+ &qt_configure_event_scanner, (XPointer)&configureData)) {
- if (qt_x11EventFilter(&otherEvent))
- continue;
-
-@@ -5295,13 +5319,19 @@ bool QETWidget::translateConfigEvent(con
- newSize.setWidth(otherEvent.xconfigure.width);
- newSize.setHeight(otherEvent.xconfigure.height);
-
-+ trust = isVisible()
-+ && (configureData.parent == XNone ||
-+ configureData.parent == QX11Info::appRootWindow());
-+
- if (otherEvent.xconfigure.send_event || trust) {
- newCPos.rx() = otherEvent.xconfigure.x +
- otherEvent.xconfigure.border_width;
- newCPos.ry() = otherEvent.xconfigure.y +
- otherEvent.xconfigure.border_width;
- isCPos = true;
-- }
-+ } else {
-+ isCPos = false;
-+ }
- }
- #ifndef QT_NO_XSYNC
- qt_sync_request_event_data sync_event;
-@@ -5314,9 +5344,14 @@ bool QETWidget::translateConfigEvent(con
- }
-
- if (!isCPos) {
-- // we didn't get an updated position of the toplevel.
-- // either we haven't moved or there is a bug in the window manager.
-- // anyway, let's query the position to be certain.
-+ // If the last configure event didn't have a trustable position,
-+ // it's necessary to query, see ICCCM 4.24:
-+ //
-+ // Any real ConfigureNotify event on a top-level window implies
-+ // that the window position on the root may have changed, even
-+ // though the event reports that the window position in its
-+ // parent is unchanged because the window may have been reparented.
-+
- int x, y;
- Window child;
- XTranslateCoordinates(X11->display, internalWinId(),