From 67169ffa7dbf9e83e0fea35930457dc7792ef05d Mon Sep 17 00:00:00 2001 From: Jochen Seemann Date: Tue, 2 Feb 2016 22:23:38 +0100 Subject: clear parentItem of old header and footer items This patch completes the support in QQuickApplicationWindow and QQuickPage to dynamically change the header and footer item. Change-Id: Id230db135ca2957d94aa126e9d58ac486c88557c Reviewed-by: J-P Nurmi --- src/templates/qquickapplicationwindow.cpp | 8 ++++++-- src/templates/qquickpage.cpp | 8 ++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) (limited to 'src/templates') diff --git a/src/templates/qquickapplicationwindow.cpp b/src/templates/qquickapplicationwindow.cpp index b7a71a9f..92d080f3 100644 --- a/src/templates/qquickapplicationwindow.cpp +++ b/src/templates/qquickapplicationwindow.cpp @@ -242,8 +242,10 @@ void QQuickApplicationWindow::setHeader(QQuickItem *header) { Q_D(QQuickApplicationWindow); if (d->header != header) { - if (d->header) + if (d->header) { QQuickItemPrivate::get(d->header)->removeItemChangeListener(d, QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight); + d->header->setParentItem(Q_NULLPTR); + } d->header = header; if (header) { header->setParentItem(contentItem()); @@ -276,8 +278,10 @@ void QQuickApplicationWindow::setFooter(QQuickItem *footer) { Q_D(QQuickApplicationWindow); if (d->footer != footer) { - if (d->footer) + if (d->footer) { QQuickItemPrivate::get(d->footer)->removeItemChangeListener(d, QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight); + d->footer->setParentItem(Q_NULLPTR); + } d->footer = footer; if (footer) { footer->setParentItem(contentItem()); diff --git a/src/templates/qquickpage.cpp b/src/templates/qquickpage.cpp index 8302dca0..6a65e7c4 100644 --- a/src/templates/qquickpage.cpp +++ b/src/templates/qquickpage.cpp @@ -160,8 +160,10 @@ void QQuickPage::setHeader(QQuickItem *header) { Q_D(QQuickPage); if (d->header != header) { - if (d->header) + if (d->header) { QQuickItemPrivate::get(d->header)->removeItemChangeListener(d, QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight); + d->header->setParentItem(Q_NULLPTR); + } d->header = header; if (header) { header->setParentItem(this); @@ -194,8 +196,10 @@ void QQuickPage::setFooter(QQuickItem *footer) { Q_D(QQuickPage); if (d->footer != footer) { - if (d->footer) + if (d->footer) { QQuickItemPrivate::get(d->footer)->removeItemChangeListener(d, QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight); + d->footer->setParentItem(Q_NULLPTR); + } d->footer = footer; if (footer) { footer->setParentItem(this); -- cgit v1.2.3