summaryrefslogtreecommitdiffstats
path: root/src/widgets/kernel
diff options
context:
space:
mode:
authorTor Arne Vestbø <tor.arne.vestbo@qt.io>2017-01-31 13:40:46 +0100
committerTor Arne Vestbø <tor.arne.vestbo@qt.io>2017-02-09 14:10:36 +0000
commit7e98eb5f5fd40b350e12ca7b835bfa263ca5bd35 (patch)
treec266d099ca7efc2e086bd9df0e05376b6fca17b6 /src/widgets/kernel
parent0c6911e5cde24c45d6f2c08b6e71064bdd1eccfa (diff)
Prevent Qt::ForeignWindow from propagating into QWidget for non-toplevels
Qt::ForeignWindow implies Qt::Window, which QtWidgets interprets as a top level window, but this is not the case on a QtGui level. A foreign window can be a child window as well, so we have to make sure the QWindow state is not propagated to QWidget, which would result in the QWidget becoming top level. Change-Id: Ie0c2d769ce92e6988a4d62da46f5fc2da74bdf08 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'src/widgets/kernel')
-rw-r--r--src/widgets/kernel/qwidget.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp
index 759821a057..d35ad87c8d 100644
--- a/src/widgets/kernel/qwidget.cpp
+++ b/src/widgets/kernel/qwidget.cpp
@@ -1483,6 +1483,8 @@ void QWidgetPrivate::create_sys(WId window, bool initializeWindow, bool destroyO
win->handle()->setFrameStrutEventsEnabled(true);
data.window_flags = win->flags();
+ if (!win->isTopLevel()) // In a Widget world foreign windows can only be top level
+ data.window_flags &= ~Qt::ForeignWindow;
if (!topData()->role.isNull())
QXcbWindowFunctions::setWmWindowRole(win, topData()->role.toLatin1());