diff options
Diffstat (limited to 'source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-21900.patch')
-rw-r--r-- | source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-21900.patch | 84 |
1 files changed, 0 insertions, 84 deletions
diff --git a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-21900.patch b/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-21900.patch deleted file mode 100644 index 018872f6d..000000000 --- a/source/l/qt/patches/qt-everywhere-opensource-src-4.8.5-QTBUG-21900.patch +++ /dev/null @@ -1,84 +0,0 @@ -diff -up qt-everywhere-opensource-src-4.8.5/src/gui/kernel/qapplication_x11.cpp.QTBUG-21900 qt-everywhere-opensource-src-4.8.5/src/gui/kernel/qapplication_x11.cpp ---- qt-everywhere-opensource-src-4.8.5/src/gui/kernel/qapplication_x11.cpp.QTBUG-21900 2013-05-30 16:18:05.000000000 -0500 -+++ qt-everywhere-opensource-src-4.8.5/src/gui/kernel/qapplication_x11.cpp 2013-06-09 11:53:45.891771748 -0500 -@@ -818,6 +818,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]; -@@ -5302,8 +5323,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; - -@@ -5316,13 +5340,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; -@@ -5335,9 +5365,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’s position on the root may have changed, even -+ // though the event reports that the window’s position in its -+ // parent is unchanged because the window may have been reparented. -+ - int x, y; - Window child; - XTranslateCoordinates(X11->display, internalWinId(), |