diff options
author | J-P Nurmi <jpnurmi@qt.io> | 2017-10-22 22:18:32 +0200 |
---|---|---|
committer | J-P Nurmi <jpnurmi@qt.io> | 2017-10-22 22:20:46 +0200 |
commit | d1990ff285a8a265fc41d193179ce8fb6746f7b3 (patch) | |
tree | d4e78a873de079a04d2b4d64d81e4a4af84b3ae7 /src/quicktemplates2/qquickcontainer.cpp | |
parent | 309170a7f97759aa3f2e25a6c5202a6438a8bf4f (diff) | |
parent | 53c4bc2d1004fe963759b4009508bbc3e3fbca3e (diff) |
Merge remote-tracking branch 'origin/5.9' into 5.10
Change-Id: I9188f94e40e2ecb4da1963ce2fcf915ab7a4b4fb
Diffstat (limited to 'src/quicktemplates2/qquickcontainer.cpp')
-rw-r--r-- | src/quicktemplates2/qquickcontainer.cpp | 40 |
1 files changed, 29 insertions, 11 deletions
diff --git a/src/quicktemplates2/qquickcontainer.cpp b/src/quicktemplates2/qquickcontainer.cpp index a62de655..07fe04d2 100644 --- a/src/quicktemplates2/qquickcontainer.cpp +++ b/src/quicktemplates2/qquickcontainer.cpp @@ -324,6 +324,24 @@ void QQuickContainerPrivate::removeItem(int index, QQuickItem *item) updatingCurrent = false; } +void QQuickContainerPrivate::reorderItems() +{ + Q_Q(QQuickContainer); + if (!contentItem) + return; + + QList<QQuickItem *> siblings = effectiveContentItem(contentItem)->childItems(); + + int to = 0; + for (int i = 0; i < siblings.count(); ++i) { + QQuickItem* sibling = siblings.at(i); + if (QQuickItemPrivate::get(sibling)->isTransparentForPositioner()) + continue; + int index = contentModel->indexOf(sibling, nullptr); + q->moveItem(index, to++); + } +} + void QQuickContainerPrivate::_q_currentIndexChanged() { Q_Q(QQuickContainer); @@ -347,18 +365,11 @@ void QQuickContainerPrivate::itemParentChanged(QQuickItem *item, QQuickItem *par void QQuickContainerPrivate::itemSiblingOrderChanged(QQuickItem *) { - // reorder the restacked items (eg. by a Repeater) - Q_Q(QQuickContainer); - QList<QQuickItem *> siblings = effectiveContentItem(contentItem)->childItems(); + if (!componentComplete) + return; - int to = 0; - for (int i = 0; i < siblings.count(); ++i) { - QQuickItem* sibling = siblings.at(i); - if (QQuickItemPrivate::get(sibling)->isTransparentForPositioner()) - continue; - int index = contentModel->indexOf(sibling, nullptr); - q->moveItem(index, to++); - } + // reorder the restacked items (eg. by a Repeater) + reorderItems(); } void QQuickContainerPrivate::itemDestroyed(QQuickItem *item) @@ -737,6 +748,13 @@ QQuickItem *QQuickContainer::currentItem() const return itemAt(d->currentIndex); } +void QQuickContainer::componentComplete() +{ + Q_D(QQuickContainer); + QQuickControl::componentComplete(); + d->reorderItems(); +} + void QQuickContainer::itemChange(ItemChange change, const ItemChangeData &data) { Q_D(QQuickContainer); |