aboutsummaryrefslogtreecommitdiffstats
path: root/src/quicktemplates2/qquickcontainer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/quicktemplates2/qquickcontainer.cpp')
-rw-r--r--src/quicktemplates2/qquickcontainer.cpp32
1 files changed, 28 insertions, 4 deletions
diff --git a/src/quicktemplates2/qquickcontainer.cpp b/src/quicktemplates2/qquickcontainer.cpp
index 2bc37e9c..54e03c81 100644
--- a/src/quicktemplates2/qquickcontainer.cpp
+++ b/src/quicktemplates2/qquickcontainer.cpp
@@ -253,13 +253,17 @@ void QQuickContainerPrivate::insertItem(int index, QQuickItem *item)
q->itemAdded(index, item);
- if (contentModel->count() == 1 && currentIndex == -1)
+ int count = contentModel->count();
+ for (int i = index + 1; i < count; ++i)
+ q->itemMoved(i, itemAt(i));
+
+ if (count == 1 && currentIndex == -1)
q->setCurrentIndex(index);
updatingCurrent = false;
}
-void QQuickContainerPrivate::moveItem(int from, int to)
+void QQuickContainerPrivate::moveItem(int from, int to, QQuickItem *item)
{
Q_Q(QQuickContainer);
int oldCurrent = currentIndex;
@@ -267,6 +271,16 @@ void QQuickContainerPrivate::moveItem(int from, int to)
updatingCurrent = true;
+ q->itemMoved(to, item);
+
+ if (from < to) {
+ for (int i = from; i < to; ++i)
+ q->itemMoved(i, itemAt(i));
+ } else {
+ for (int i = from; i > to; --i)
+ q->itemMoved(i, itemAt(i));
+ }
+
if (from == oldCurrent)
q->setCurrentIndex(to);
else if (from < oldCurrent && to >= oldCurrent)
@@ -300,6 +314,10 @@ void QQuickContainerPrivate::removeItem(int index, QQuickItem *item)
q->itemRemoved(index, item);
+ int count = contentModel->count();
+ for (int i = index; i < count; ++i)
+ q->itemMoved(i, itemAt(i));
+
if (currentChanged)
emit q->currentIndexChanged();
@@ -476,7 +494,7 @@ void QQuickContainer::insertItem(int index, QQuickItem *item)
if (oldIndex < index)
--index;
if (oldIndex != index)
- d->moveItem(oldIndex, index);
+ d->moveItem(oldIndex, index, item);
} else {
d->insertItem(index, item);
}
@@ -497,7 +515,7 @@ void QQuickContainer::moveItem(int from, int to)
to = count - 1;
if (from != to)
- d->moveItem(from, to);
+ d->moveItem(from, to, d->itemAt(from));
}
/*!
@@ -735,6 +753,12 @@ void QQuickContainer::itemAdded(int index, QQuickItem *item)
Q_UNUSED(item);
}
+void QQuickContainer::itemMoved(int index, QQuickItem *item)
+{
+ Q_UNUSED(index);
+ Q_UNUSED(item);
+}
+
void QQuickContainer::itemRemoved(int index, QQuickItem *item)
{
Q_UNUSED(index);