┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/kitemviews/kitemlistview.cpp2
-rw-r--r--src/kitemviews/private/kitemlistsizehintresolver.cpp14
-rw-r--r--src/kitemviews/private/kitemlistsizehintresolver.h2
3 files changed, 11 insertions, 7 deletions
diff --git a/src/kitemviews/kitemlistview.cpp b/src/kitemviews/kitemlistview.cpp
index 2ea6657a5..347a4e6ea 100644
--- a/src/kitemviews/kitemlistview.cpp
+++ b/src/kitemviews/kitemlistview.cpp
@@ -1165,7 +1165,7 @@ void KItemListView::slotItemsRemoved(const KItemRangeList& itemRanges)
void KItemListView::slotItemsMoved(const KItemRange& itemRange, const QList<int>& movedToIndexes)
{
- m_sizeHintResolver->itemsMoved(itemRange.index, itemRange.count);
+ m_sizeHintResolver->itemsMoved(itemRange, movedToIndexes);
m_layouter->markAsDirty();
if (m_controller) {
diff --git a/src/kitemviews/private/kitemlistsizehintresolver.cpp b/src/kitemviews/private/kitemlistsizehintresolver.cpp
index 5db87f34d..e44630243 100644
--- a/src/kitemviews/private/kitemlistsizehintresolver.cpp
+++ b/src/kitemviews/private/kitemlistsizehintresolver.cpp
@@ -114,13 +114,17 @@ void KItemListSizeHintResolver::itemsRemoved(const KItemRangeList& itemRanges)
}
}
-void KItemListSizeHintResolver::itemsMoved(int index, int count)
+void KItemListSizeHintResolver::itemsMoved(const KItemRange& range, const QList<int>& movedToIndexes)
{
- while (count) {
- m_sizeHintCache[index] = QSizeF();
- ++index;
- --count;
+ QVector<QSizeF> newSizeHintCache(m_sizeHintCache);
+
+ const int movedRangeEnd = range.index + range.count;
+ for (int i = range.index; i < movedRangeEnd; ++i) {
+ const int newIndex = movedToIndexes.at(i);
+ newSizeHintCache[newIndex] = m_sizeHintCache.at(i);
}
+
+ m_sizeHintCache = newSizeHintCache;
}
void KItemListSizeHintResolver::itemsChanged(int index, int count, const QSet<QByteArray>& roles)
diff --git a/src/kitemviews/private/kitemlistsizehintresolver.h b/src/kitemviews/private/kitemlistsizehintresolver.h
index 5ec5f4a21..486f9b631 100644
--- a/src/kitemviews/private/kitemlistsizehintresolver.h
+++ b/src/kitemviews/private/kitemlistsizehintresolver.h
@@ -40,7 +40,7 @@ public:
void itemsInserted(const KItemRangeList& itemRanges);
void itemsRemoved(const KItemRangeList& itemRanges);
- void itemsMoved(int index, int count);
+ void itemsMoved(const KItemRange& range, const QList<int>& movedToIndexes);
void itemsChanged(int index, int count, const QSet<QByteArray>& roles);
void clearCache();