aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/items/qquickitemview.cpp
diff options
context:
space:
mode:
authorAndrew den Exter <andrew.den-exter@nokia.com>2012-07-12 13:15:41 +1000
committerQt by Nokia <qt-info@nokia.com>2012-07-13 13:17:12 +0200
commit04fc2234562507a071e214635e6fe7dc63eda95b (patch)
tree1e21da977ecf3e8503c1a512f30f879b3f0450be /src/quick/items/qquickitemview.cpp
parentd83eb21fb296b73bd111d907dfb9ecde373b9bb3 (diff)
Fix item positioning with multiple removes before the visible area.
The index of the previous first visible item needs to be adjusted when items are removed before it in order to comparable against later changes. Change-Id: I3c72abb4dfc9c2ccc9b299dda186ecdc3994a735 Reviewed-by: Bea Lam <bea.lam@nokia.com>
Diffstat (limited to 'src/quick/items/qquickitemview.cpp')
-rw-r--r--src/quick/items/qquickitemview.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/quick/items/qquickitemview.cpp b/src/quick/items/qquickitemview.cpp
index 34a8cf5284..a9022bda59 100644
--- a/src/quick/items/qquickitemview.cpp
+++ b/src/quick/items/qquickitemview.cpp
@@ -1871,11 +1871,12 @@ bool QQuickItemViewPrivate::applyModelChanges(ChangeResult *totalInsertionResult
visibleAffected = true;
if (!visibleAffected && needsRefillForAddedOrRemovedIndex(removals[i].index))
visibleAffected = true;
- if (prevFirstVisibleIndex >= 0 && removals[i].index < prevFirstVisibleIndex) {
- if (removals[i].index + removals[i].count < prevFirstVisibleIndex)
+ const int correctedFirstVisibleIndex = prevFirstVisibleIndex - removalResult.countChangeBeforeVisible;
+ if (correctedFirstVisibleIndex >= 0 && removals[i].index < correctedFirstVisibleIndex) {
+ if (removals[i].index + removals[i].count < correctedFirstVisibleIndex)
removalResult.countChangeBeforeVisible += removals[i].count;
else
- removalResult.countChangeBeforeVisible += (prevFirstVisibleIndex - removals[i].index);
+ removalResult.countChangeBeforeVisible += (correctedFirstVisibleIndex - removals[i].index);
}
}
if (runDelayedRemoveTransition) {