diff options
author | Liang Qi <liang.qi@qt.io> | 2019-03-30 21:52:42 +0100 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2019-04-01 13:48:48 +0000 |
commit | ad313595e0662fa2e91676feef65aad5b4525a86 (patch) | |
tree | 1f420ccf6ff754457d8fd063c7adc6fdc59c5f1c /src/gui/kernel/qscreen.cpp | |
parent | a49c5648919a0bd2d8206ae7fb5033c9f84e0a86 (diff) |
Revert "Revert "Remove deprecated screen maintenance functions in QPlatformIntegration""
This reverts commit 300940a6c9eb0f74cefda7d76a5d19f56ec50253.
The fixes for leaf modules landed already.
Task-number: QTBUG-74816
Change-Id: I1c7f0705c20d030419ceedca485106af73946b3c
Reviewed-by: Jesus Fernandez <Jesus.Fernandez@qt.io>
Diffstat (limited to 'src/gui/kernel/qscreen.cpp')
-rw-r--r-- | src/gui/kernel/qscreen.cpp | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/src/gui/kernel/qscreen.cpp b/src/gui/kernel/qscreen.cpp index f208eb02be..952023dd1b 100644 --- a/src/gui/kernel/qscreen.cpp +++ b/src/gui/kernel/qscreen.cpp @@ -106,9 +106,18 @@ void QScreenPrivate::setPlatformScreen(QPlatformScreen *screen) */ QScreen::~QScreen() { - if (!qApp) + // Remove screen + const bool wasPrimary = QGuiApplication::primaryScreen() == this; + QGuiApplicationPrivate::screen_list.removeOne(this); + QGuiApplicationPrivate::resetCachedDevicePixelRatio(); + + if (!qGuiApp) return; + QScreen *newPrimaryScreen = QGuiApplication::primaryScreen(); + if (wasPrimary && newPrimaryScreen) + emit qGuiApp->primaryScreenChanged(newPrimaryScreen); + // Allow clients to manage windows that are affected by the screen going // away, before we fall back to moving them to the primary screen. emit qApp->screenRemoved(this); @@ -116,11 +125,8 @@ QScreen::~QScreen() if (QGuiApplication::closingDown()) return; - QScreen *primaryScreen = QGuiApplication::primaryScreen(); - if (this == primaryScreen) - return; - - bool movingFromVirtualSibling = primaryScreen && primaryScreen->handle()->virtualSiblings().contains(handle()); + bool movingFromVirtualSibling = newPrimaryScreen + && newPrimaryScreen->handle()->virtualSiblings().contains(handle()); // Move any leftover windows to the primary screen const auto allWindows = QGuiApplication::allWindows(); @@ -129,7 +135,7 @@ QScreen::~QScreen() continue; const bool wasVisible = window->isVisible(); - window->setScreen(primaryScreen); + window->setScreen(newPrimaryScreen); // Re-show window if moved from a virtual sibling screen. Otherwise // leave it up to the application developer to show the window. |