diff --git a/src/gui/kernel/qwindow_qpa.cpp b/src/gui/kernel/qwindow_qpa.cpp index 163b72fd81..d9a73632b7 100644 --- a/src/gui/kernel/qwindow_qpa.cpp +++ b/src/gui/kernel/qwindow_qpa.cpp @@ -83,8 +83,11 @@ public: }; QWindow::QWindow(QWindow *parent) - : QObject(*new QWindowPrivate(), parent) + : QObject(*new QWindowPrivate()) { + if (parent) { + setParent(parent); + } } QWindow::~QWindow() @@ -131,9 +134,12 @@ WId QWindow::winId() const return d->platformWindow->winId(); } -void QWindow::setParent(const QWindow *parent) +void QWindow::setParent(QWindow *parent) { Q_D(QWindow); + if (QObject::parent() == parent) { + return; + } //How should we support lazy init when setting parent if (!parent->d_func()->platformWindow) { const_cast(parent)->create(); @@ -143,6 +149,7 @@ void QWindow::setParent(const QWindow *parent) create(); } d->platformWindow->setParent(parent->d_func()->platformWindow); + QObject::setParent(parent); } void QWindow::setWindowFormat(const QWindowFormat &format) diff --git a/src/gui/kernel/qwindow_qpa.h b/src/gui/kernel/qwindow_qpa.h index fc73b1b93c..3b31d106e0 100644 --- a/src/gui/kernel/qwindow_qpa.h +++ b/src/gui/kernel/qwindow_qpa.h @@ -92,7 +92,7 @@ public: void create(); WId winId() const; - void setParent(const QWindow *parent); + void setParent(QWindow *parent); void setWindowFormat(const QWindowFormat &format); QWindowFormat requestedWindowFormat() const;