qt5-qtbase/qtbase-opensource-src-5.5-disconnect_displays.patch

42 lines
2.0 KiB
Diff

diff -rupN qtbase-opensource-src-5.5.0/src/gui/kernel/qplatformintegration.cpp qtbase-opensource-src-5.5.0-new/src/gui/kernel/qplatformintegration.cpp
--- qtbase-opensource-src-5.5.0/src/gui/kernel/qplatformintegration.cpp 2015-06-29 22:04:53.000000000 +0200
+++ qtbase-opensource-src-5.5.0-new/src/gui/kernel/qplatformintegration.cpp 2015-07-12 10:24:17.195000304 +0200
@@ -456,6 +456,14 @@ void QPlatformIntegration::screenAdded(Q
} else {
QGuiApplicationPrivate::screen_list.append(screen);
}
+
+ // All screens might have been removed before a new one is added, so
+ // iterate over the toplevel windows and set their screen to the current
+ // primary screen if the window has no screen set
+ foreach (QWindow *window, QGuiApplication::topLevelWindows()) {
+ if (window->screen() == 0)
+ window->setScreen(QGuiApplicationPrivate::screen_list.at(0));
+ }
emit qGuiApp->screenAdded(screen);
}
diff -rupN qtbase-opensource-src-5.5.0/src/gui/kernel/qwindow.cpp qtbase-opensource-src-5.5.0-new/src/gui/kernel/qwindow.cpp
--- qtbase-opensource-src-5.5.0/src/gui/kernel/qwindow.cpp 2015-06-29 22:04:52.000000000 +0200
+++ qtbase-opensource-src-5.5.0-new/src/gui/kernel/qwindow.cpp 2015-07-12 11:51:18.832889497 +0200
@@ -372,15 +372,14 @@ void QWindowPrivate::setTopLevelScreen(Q
return;
}
if (newScreen != topLevelScreen) {
- const bool shouldRecreate = recreate && windowRecreationRequired(newScreen);
- const bool shouldShow = visibilityOnDestroy && !topLevelScreen;
+ const bool shouldRecreate = recreate/* && windowRecreationRequired(newScreen)*/;
if (shouldRecreate && platformWindow)
q->destroy();
connectToScreen(newScreen);
- if (shouldShow)
- q->setVisible(true);
- else if (newScreen && shouldRecreate)
+ if (newScreen && shouldRecreate) {
create(true);
+ q->setVisible(visibilityOnDestroy);
+ }
emitScreenChangedRecursion(newScreen);
}
}