summaryrefslogtreecommitdiffstats
path: root/src/gui/guikernel/qwindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/guikernel/qwindow.cpp')
-rw-r--r--src/gui/guikernel/qwindow.cpp41
1 files changed, 17 insertions, 24 deletions
diff --git a/src/gui/guikernel/qwindow.cpp b/src/gui/guikernel/qwindow.cpp
index 7b57a949f0..60647953f2 100644
--- a/src/gui/guikernel/qwindow.cpp
+++ b/src/gui/guikernel/qwindow.cpp
@@ -54,11 +54,10 @@
QT_BEGIN_NAMESPACE
QWindow::QWindow(QWindow *parent)
- : QObject(*new QWindowPrivate())
+ : QObject(*new QWindowPrivate(), parent)
{
- if (parent) {
- setParent(parent);
- }
+ Q_D(QWindow);
+ d->parentWindow = parent;
}
QWindow::~QWindow()
@@ -90,15 +89,15 @@ void QWindow::create()
d->windowFlags = d->platformWindow->setWindowFlags(d->windowFlags);
if (!d->windowTitle.isNull())
d->platformWindow->setWindowTitle(d->windowTitle);
- }
- Q_ASSERT(d->platformWindow);
-
- 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);
- window->setParent(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);
+ }
}
}
}
@@ -120,26 +119,20 @@ void QWindow::setParent(QWindow *parent)
{
Q_D(QWindow);
- if (d->parent == parent)
+ if (d->parentWindow == parent)
return;
QObject::setParent(parent);
- if (parent) {
- if (parent->d_func()->platformWindow) {
- if(!d->platformWindow) {
- create();
- }
+ if (d->platformWindow) {
+ if (parent && parent->d_func()->platformWindow) {
d->platformWindow->setParent(parent->d_func()->platformWindow);
- d->parent = parent;
- }
- } else {
- d->parent = 0;
- if (d->parentWindow) {
+ } else if (!parent) {
d->platformWindow->setParent(0);
}
}
+ d->parentWindow = parent;
}
void QWindow::setWindowFormat(const QWindowFormat &format)