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