diff options
Diffstat (limited to 'src/layouts')
-rw-r--r-- | src/layouts/qquicklayout.cpp | 8 | ||||
-rw-r--r-- | src/layouts/qquicklayout_p.h | 7 |
2 files changed, 14 insertions, 1 deletions
diff --git a/src/layouts/qquicklayout.cpp b/src/layouts/qquicklayout.cpp index ddf44b7b..f28a7d07 100644 --- a/src/layouts/qquicklayout.cpp +++ b/src/layouts/qquicklayout.cpp @@ -759,6 +759,7 @@ void QQuickLayout::itemChange(ItemChange change, const ItemChangeData &value) QObject::connect(item, SIGNAL(implicitWidthChanged()), this, SLOT(invalidateSenderItem())); QObject::connect(item, SIGNAL(implicitHeightChanged()), this, SLOT(invalidateSenderItem())); QObject::connect(item, SIGNAL(baselineOffsetChanged(qreal)), this, SLOT(invalidateSenderItem())); + QQuickItemPrivate::get(item)->addItemChangeListener(this, QQuickItemPrivate::SiblingOrder); if (isReady()) updateLayoutItems(); } else if (change == ItemChildRemovedChange) { @@ -766,6 +767,7 @@ void QQuickLayout::itemChange(ItemChange change, const ItemChangeData &value) QObject::disconnect(item, SIGNAL(implicitWidthChanged()), this, SLOT(invalidateSenderItem())); QObject::disconnect(item, SIGNAL(implicitHeightChanged()), this, SLOT(invalidateSenderItem())); QObject::disconnect(item, SIGNAL(baselineOffsetChanged(qreal)), this, SLOT(invalidateSenderItem())); + QQuickItemPrivate::get(item)->removeItemChangeListener(this, QQuickItemPrivate::SiblingOrder); if (isReady()) updateLayoutItems(); } @@ -797,6 +799,12 @@ bool QQuickLayout::isReady() const return d_func()->m_isReady; } +void QQuickLayout::itemSiblingOrderChanged(QQuickItem *item) +{ + Q_UNUSED(item); + updateLayoutItems(); +} + void QQuickLayout::rearrange(const QSizeF &/*size*/) { m_dirty = false; diff --git a/src/layouts/qquicklayout_p.h b/src/layouts/qquicklayout_p.h index d613f5bd..4379d7f8 100644 --- a/src/layouts/qquicklayout_p.h +++ b/src/layouts/qquicklayout_p.h @@ -40,6 +40,7 @@ #include <QPointer> #include <QQuickItem> #include <private/qquickitem_p.h> +#include <QtQuick/private/qquickitemchangelistener_p.h> #include <QtGui/private/qlayoutpolicy_p.h> QT_BEGIN_NAMESPACE @@ -53,7 +54,8 @@ class QQuickLayoutAttached; #endif class QQuickLayoutPrivate; -class QQuickLayout : public QQuickItem +class QQuickLayout : public QQuickItem, public QQuickItemChangeListener + { Q_OBJECT public: @@ -92,6 +94,9 @@ public: bool isReady() const; + /* QQuickItemChangeListener */ + void itemSiblingOrderChanged(QQuickItem *item) Q_DECL_OVERRIDE; + protected: void updatePolish() Q_DECL_OVERRIDE; |