summaryrefslogtreecommitdiffstats
path: root/src/gui/kernel/qwindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/kernel/qwindow.cpp')
-rw-r--r--src/gui/kernel/qwindow.cpp34
1 files changed, 21 insertions, 13 deletions
diff --git a/src/gui/kernel/qwindow.cpp b/src/gui/kernel/qwindow.cpp
index d6f9fad070..6724d68c95 100644
--- a/src/gui/kernel/qwindow.cpp
+++ b/src/gui/kernel/qwindow.cpp
@@ -367,12 +367,31 @@ void QWindowPrivate::setScreen(QScreen *newScreen, bool recreate)
if (newScreen) {
q->connect(screen, SIGNAL(destroyed(QObject*)), q, SLOT(screenDestroyed(QObject*)));
if (shouldRecreate)
- q->create();
+ create(true);
}
emit q->screenChanged(newScreen);
}
}
+void QWindowPrivate::create(bool recursive)
+{
+ Q_Q(QWindow);
+ if (!platformWindow) {
+ platformWindow = QGuiApplicationPrivate::platformIntegration()->createPlatformWindow(q);
+ QObjectList childObjects = q->children();
+ for (int i = 0; i < childObjects.size(); i ++) {
+ QObject *object = childObjects.at(i);
+ if (object->isWindowType()) {
+ QWindow *window = static_cast<QWindow *>(object);
+ if (recursive)
+ window->d_func()->create(true);
+ if (window->d_func()->platformWindow)
+ window->d_func()->platformWindow->setParent(platformWindow);
+ }
+ }
+ }
+}
+
void QWindowPrivate::clearFocusObject()
{
}
@@ -490,18 +509,7 @@ bool QWindow::isVisible() const
void QWindow::create()
{
Q_D(QWindow);
- if (!d->platformWindow) {
- d->platformWindow = QGuiApplicationPrivate::platformIntegration()->createPlatformWindow(this);
- QObjectList childObjects = children();
- for (int i = 0; i < childObjects.size(); i ++) {
- QObject *object = childObjects.at(i);
- if(object->isWindowType()) {
- QWindow *window = static_cast<QWindow *>(object);
- if (window->d_func()->platformWindow)
- window->d_func()->platformWindow->setParent(d->platformWindow);
- }
- }
- }
+ d->create(false);
}
/*!