aboutsummaryrefslogtreecommitdiffstats
path: root/src/quicktemplates2/qquickcontainer.cpp
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2017-10-22 22:18:32 +0200
committerJ-P Nurmi <jpnurmi@qt.io>2017-10-22 22:20:46 +0200
commitd1990ff285a8a265fc41d193179ce8fb6746f7b3 (patch)
treed4e78a873de079a04d2b4d64d81e4a4af84b3ae7 /src/quicktemplates2/qquickcontainer.cpp
parent309170a7f97759aa3f2e25a6c5202a6438a8bf4f (diff)
parent53c4bc2d1004fe963759b4009508bbc3e3fbca3e (diff)
Merge remote-tracking branch 'origin/5.9' into 5.10
Diffstat (limited to 'src/quicktemplates2/qquickcontainer.cpp')
-rw-r--r--src/quicktemplates2/qquickcontainer.cpp40
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);