From d8784df713659f932731af2fd8f95b569e215842 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20Lind?= Date: Wed, 27 Apr 2011 10:12:17 +0200 Subject: [PATCH] use QObject parent logic when setting parent for QWindow (cherry picked from commit 2be9fdb4b58accea4078654efed49a50acf6c74d) --- src/gui/kernel/qwindow_qpa.cpp | 11 +++++++++-- src/gui/kernel/qwindow_qpa.h | 2 +- 2 files changed, 10 insertions(+), 3 deletions(-) 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;