diff options
author | Tor Arne Vestbø <tor.arne.vestbo@qt.io> | 2018-07-31 17:32:25 +0200 |
---|---|---|
committer | Tor Arne Vestbø <tor.arne.vestbo@qt.io> | 2018-08-03 16:01:34 +0000 |
commit | a882ffc603bdc663e3d32905a1817a45167b84b1 (patch) | |
tree | 185ebb49c16a05b2024d900204eee58d0eadf373 /src/gui/kernel/qguiapplication.cpp | |
parent | 9f2a6715600bf872e41dcd8c4492480b93b4f599 (diff) |
Handle screen changes for non-top-level windows
The platform may emit screen changes for child windows before top-level
windows, so we need to update the top level screen as soon as possible.
Change-Id: I090c620725c9c3171f5b038708d78ddfeec8512d
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Diffstat (limited to 'src/gui/kernel/qguiapplication.cpp')
-rw-r--r-- | src/gui/kernel/qguiapplication.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp index 91348265cd..712699ddc9 100644 --- a/src/gui/kernel/qguiapplication.cpp +++ b/src/gui/kernel/qguiapplication.cpp @@ -2338,11 +2338,11 @@ void QGuiApplicationPrivate::processWindowScreenChangedEvent(QWindowSystemInterf if (QWindow *window = wse->window.data()) { if (window->screen() == wse->screen.data()) return; - if (window->isTopLevel()) { + if (QWindow *topLevelWindow = window->d_func()->topLevelWindow(QWindow::ExcludeTransients)) { if (QScreen *screen = wse->screen.data()) - window->d_func()->setTopLevelScreen(screen, false /* recreate */); + topLevelWindow->d_func()->setTopLevelScreen(screen, false /* recreate */); else // Fall back to default behavior, and try to find some appropriate screen - window->setScreen(0); + topLevelWindow->setScreen(0); } // we may have changed scaling, so trigger resize event if needed if (window->handle()) { |