diff options
author | Konstantin Ritt <ritt.ks@gmail.com> | 2016-04-08 06:54:29 +0400 |
---|---|---|
committer | Konstantin Ritt <ritt.ks@gmail.com> | 2016-04-09 16:28:00 +0000 |
commit | e13f6fbdc2c979b71ab6330148b330c9fc1b220a (patch) | |
tree | 0378b7d72a39dc91c3f706f25aa60cb83e1846ce /src | |
parent | 139528166b31c0ee1cfb4757a8421bb13e47a5e6 (diff) |
Relayout on the header|footer geometry and visibility changes
When the header or footer item's visibility changes, contentItem's
geometry have to be adjusted.
Change-Id: I9e73c48ff2301f8b371fc797ac4972ef5937b22f
Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/templates/qquickapplicationwindow.cpp | 34 | ||||
-rw-r--r-- | src/templates/qquickpage.cpp | 28 |
2 files changed, 52 insertions, 10 deletions
diff --git a/src/templates/qquickapplicationwindow.cpp b/src/templates/qquickapplicationwindow.cpp index caa75a2d..43d51030 100644 --- a/src/templates/qquickapplicationwindow.cpp +++ b/src/templates/qquickapplicationwindow.cpp @@ -114,6 +114,8 @@ public: void relayout(); + void itemGeometryChanged(QQuickItem *item, const QRectF &newRect, const QRectF &oldRect) override; + void itemVisibilityChanged(QQuickItem *item) override; void itemImplicitWidthChanged(QQuickItem *item) override; void itemImplicitHeightChanged(QQuickItem *item) override; @@ -188,6 +190,20 @@ void QQuickApplicationWindowPrivate::relayout() } } +void QQuickApplicationWindowPrivate::itemGeometryChanged(QQuickItem *item, const QRectF &newRect, const QRectF &oldRect) +{ + Q_UNUSED(item) + Q_UNUSED(newRect) + Q_UNUSED(oldRect) + relayout(); +} + +void QQuickApplicationWindowPrivate::itemVisibilityChanged(QQuickItem *item) +{ + Q_UNUSED(item); + relayout(); +} + void QQuickApplicationWindowPrivate::itemImplicitWidthChanged(QQuickItem *item) { Q_UNUSED(item); @@ -244,9 +260,11 @@ QQuickApplicationWindow::~QQuickApplicationWindow() { Q_D(QQuickApplicationWindow); if (d->header) - QQuickItemPrivate::get(d->header)->removeItemChangeListener(d, QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight); + QQuickItemPrivate::get(d->header)->removeItemChangeListener(d, QQuickItemPrivate::Geometry | QQuickItemPrivate::Visibility | + QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight); if (d->footer) - QQuickItemPrivate::get(d->footer)->removeItemChangeListener(d, QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight); + QQuickItemPrivate::get(d->footer)->removeItemChangeListener(d, QQuickItemPrivate::Geometry | QQuickItemPrivate::Visibility | + QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight); } /*! @@ -309,14 +327,16 @@ void QQuickApplicationWindow::setHeader(QQuickItem *header) return; if (d->header) { - QQuickItemPrivate::get(d->header)->removeItemChangeListener(d, QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight); + QQuickItemPrivate::get(d->header)->removeItemChangeListener(d, QQuickItemPrivate::Geometry | QQuickItemPrivate::Visibility | + QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight); d->header->setParentItem(nullptr); } d->header = header; if (header) { header->setParentItem(contentItem()); QQuickItemPrivate *p = QQuickItemPrivate::get(header); - p->addItemChangeListener(d, QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight); + p->addItemChangeListener(d, QQuickItemPrivate::Geometry | QQuickItemPrivate::Visibility | + QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight); if (qFuzzyIsNull(header->z())) header->setZ(1); if (QQuickToolBar *toolBar = qobject_cast<QQuickToolBar *>(header)) @@ -353,14 +373,16 @@ void QQuickApplicationWindow::setFooter(QQuickItem *footer) return; if (d->footer) { - QQuickItemPrivate::get(d->footer)->removeItemChangeListener(d, QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight); + QQuickItemPrivate::get(d->footer)->removeItemChangeListener(d, QQuickItemPrivate::Geometry | QQuickItemPrivate::Visibility | + QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight); d->footer->setParentItem(nullptr); } d->footer = footer; if (footer) { footer->setParentItem(contentItem()); QQuickItemPrivate *p = QQuickItemPrivate::get(footer); - p->addItemChangeListener(d, QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight); + p->addItemChangeListener(d, QQuickItemPrivate::Geometry | QQuickItemPrivate::Visibility | + QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight); if (qFuzzyIsNull(footer->z())) footer->setZ(1); if (QQuickToolBar *toolBar = qobject_cast<QQuickToolBar *>(footer)) diff --git a/src/templates/qquickpage.cpp b/src/templates/qquickpage.cpp index 5a14b777..98b71724 100644 --- a/src/templates/qquickpage.cpp +++ b/src/templates/qquickpage.cpp @@ -93,6 +93,8 @@ public: void relayout(); + void itemGeometryChanged(QQuickItem *item, const QRectF &newRect, const QRectF &oldRect) override; + void itemVisibilityChanged(QQuickItem *item) override; void itemImplicitWidthChanged(QQuickItem *item) override; void itemImplicitHeightChanged(QQuickItem *item) override; @@ -125,6 +127,20 @@ void QQuickPagePrivate::relayout() } } +void QQuickPagePrivate::itemGeometryChanged(QQuickItem *item, const QRectF &newRect, const QRectF &oldRect) +{ + Q_UNUSED(item) + Q_UNUSED(newRect) + Q_UNUSED(oldRect) + relayout(); +} + +void QQuickPagePrivate::itemVisibilityChanged(QQuickItem *item) +{ + Q_UNUSED(item); + relayout(); +} + void QQuickPagePrivate::itemImplicitWidthChanged(QQuickItem *item) { Q_UNUSED(item); @@ -168,14 +184,16 @@ void QQuickPage::setHeader(QQuickItem *header) return; if (d->header) { - QQuickItemPrivate::get(d->header)->removeItemChangeListener(d, QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight); + QQuickItemPrivate::get(d->header)->removeItemChangeListener(d, QQuickItemPrivate::Geometry | QQuickItemPrivate::Visibility | + QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight); d->header->setParentItem(nullptr); } d->header = header; if (header) { header->setParentItem(this); QQuickItemPrivate *p = QQuickItemPrivate::get(header); - p->addItemChangeListener(d, QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight); + p->addItemChangeListener(d, QQuickItemPrivate::Geometry | QQuickItemPrivate::Visibility | + QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight); if (qFuzzyIsNull(header->z())) header->setZ(1); if (QQuickToolBar *toolBar = qobject_cast<QQuickToolBar *>(header)) @@ -212,14 +230,16 @@ void QQuickPage::setFooter(QQuickItem *footer) return; if (d->footer) { - QQuickItemPrivate::get(d->footer)->removeItemChangeListener(d, QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight); + QQuickItemPrivate::get(d->footer)->removeItemChangeListener(d, QQuickItemPrivate::Geometry | QQuickItemPrivate::Visibility | + QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight); d->footer->setParentItem(nullptr); } d->footer = footer; if (footer) { footer->setParentItem(this); QQuickItemPrivate *p = QQuickItemPrivate::get(footer); - p->addItemChangeListener(d, QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight); + p->addItemChangeListener(d, QQuickItemPrivate::Geometry | QQuickItemPrivate::Visibility | + QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight); if (qFuzzyIsNull(footer->z())) footer->setZ(1); if (QQuickToolBar *toolBar = qobject_cast<QQuickToolBar *>(footer)) |