aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKonstantin Ritt <ritt.ks@gmail.com>2016-04-08 06:54:29 +0400
committerKonstantin Ritt <ritt.ks@gmail.com>2016-04-09 16:28:00 +0000
commite13f6fbdc2c979b71ab6330148b330c9fc1b220a (patch)
tree0378b7d72a39dc91c3f706f25aa60cb83e1846ce /src
parent139528166b31c0ee1cfb4757a8421bb13e47a5e6 (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.cpp34
-rw-r--r--src/templates/qquickpage.cpp28
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))