summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/gui/kernel/qwidget_x11.cpp12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/gui/kernel/qwidget_x11.cpp b/src/gui/kernel/qwidget_x11.cpp
index 007de7f..10fb009 100644
--- a/src/gui/kernel/qwidget_x11.cpp
+++ b/src/gui/kernel/qwidget_x11.cpp
@@ -358,6 +358,8 @@ Q_GUI_EXPORT void qt_x11_wait_for_window_manager(QWidget* w)
if (!w->testAttribute(Qt::WA_WState_Created))
return;
+ WId winid = w->internalWinId();
+
// first deliver events that are already in the local queue
QApplication::sendPostedEvents();
@@ -379,26 +381,26 @@ Q_GUI_EXPORT void qt_x11_wait_for_window_manager(QWidget* w)
switch (state) {
case Initial:
case Reparented:
- if (ev.type == MapNotify)
+ if (ev.type == MapNotify && ev.xany.window == winid)
state = Mapped;
break;
case Mapped:
- if (ev.type == Expose)
+ if (ev.type == Expose && ev.xany.window == winid)
return;
break;
}
} else {
switch (state) {
case Initial:
- if (ev.type == ReparentNotify)
+ if (ev.type == ReparentNotify && ev.xany.window == winid)
state = Reparented;
break;
case Reparented:
- if (ev.type == MapNotify)
+ if (ev.type == MapNotify && ev.xany.window == winid)
state = Mapped;
break;
case Mapped:
- if (ev.type == Expose)
+ if (ev.type == Expose && ev.xany.window == winid)
return;
break;
}