1*4882a593SmuzhiyunFrom 29cf880dbd7a193d7a56338054ff8e857bb147fa Mon Sep 17 00:00:00 2001
2*4882a593SmuzhiyunFrom: Jeffy Chen <jeffy.chen@rock-chips.com>
3*4882a593SmuzhiyunDate: Fri, 6 Mar 2020 17:20:40 +0800
4*4882a593SmuzhiyunSubject: [PATCH 15/28] qscreen: Update toplevel windows' screen when needed
5*4882a593Smuzhiyun
6*4882a593SmuzhiyunUpdate toplevel windows' screen when creating new primary screen, since
7*4882a593Smuzhiyunwe cleared it during destroying the old one.
8*4882a593Smuzhiyun
9*4882a593SmuzhiyunSigned-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
10*4882a593Smuzhiyun---
11*4882a593Smuzhiyun src/gui/kernel/qscreen.cpp | 16 ++++++++++++++++
12*4882a593Smuzhiyun 1 file changed, 16 insertions(+)
13*4882a593Smuzhiyun
14*4882a593Smuzhiyundiff --git a/src/gui/kernel/qscreen.cpp b/src/gui/kernel/qscreen.cpp
15*4882a593Smuzhiyunindex e33d77c1..90c1fae7 100644
16*4882a593Smuzhiyun--- a/src/gui/kernel/qscreen.cpp
17*4882a593Smuzhiyun+++ b/src/gui/kernel/qscreen.cpp
18*4882a593Smuzhiyun@@ -74,7 +74,23 @@ QScreen::QScreen(QPlatformScreen *screen)
19*4882a593Smuzhiyun     : QObject(*new QScreenPrivate(), nullptr)
20*4882a593Smuzhiyun {
21*4882a593Smuzhiyun     Q_D(QScreen);
22*4882a593Smuzhiyun+    QScreen *primaryScreen = QGuiApplication::primaryScreen();
23*4882a593Smuzhiyun+
24*4882a593Smuzhiyun     d->setPlatformScreen(screen);
25*4882a593Smuzhiyun+
26*4882a593Smuzhiyun+    if (primaryScreen)
27*4882a593Smuzhiyun+        return;
28*4882a593Smuzhiyun+
29*4882a593Smuzhiyun+    // Move any leftover windows to this new screen
30*4882a593Smuzhiyun+    const auto allWindows = QGuiApplication::allWindows();
31*4882a593Smuzhiyun+    for (QWindow *window : allWindows) {
32*4882a593Smuzhiyun+        if (!window->isTopLevel())
33*4882a593Smuzhiyun+            continue;
34*4882a593Smuzhiyun+
35*4882a593Smuzhiyun+        const bool wasVisible = window->isVisible();
36*4882a593Smuzhiyun+        window->setScreen(this);
37*4882a593Smuzhiyun+        window->setVisible(wasVisible);
38*4882a593Smuzhiyun+    }
39*4882a593Smuzhiyun }
40*4882a593Smuzhiyun
41*4882a593Smuzhiyun void QScreenPrivate::updateGeometriesWithSignals()
42*4882a593Smuzhiyun--
43*4882a593Smuzhiyun2.20.1
44*4882a593Smuzhiyun
45