┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/kitemviews/private
diff options
context:
space:
mode:
Diffstat (limited to 'src/kitemviews/private')
-rw-r--r--src/kitemviews/private/kitemlistsizehintresolver.cpp14
-rw-r--r--src/kitemviews/private/kitemlistsizehintresolver.h2
2 files changed, 10 insertions, 6 deletions
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();