aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaj Grönholm <kaj.gronholm@qt.io>2023-09-19 09:45:19 +0300
committerKaj Grönholm <kaj.gronholm@qt.io>2023-09-21 08:03:00 +0300
commitaf24ed58c250cce32e8d2dc12cfc36de79706f92 (patch)
tree3816e59bab2a18574b0fb346165986fbf9281928
parentd77693a028ce4c0faffafb612b8f4881d38e99ac (diff)
Fix add-remove loop in ItemView
In ItemView refill() method, change order to add-add-remove instead of add-remove-add. This fixes the infinite add-remove loop in some specific cases. Task-number: QTBUG-31492 Change-Id: I73ae45f340b561330b8d1f88f3a1cc3b7e9c05a8 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
-rw-r--r--src/quick/items/qquickitemview.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/quick/items/qquickitemview.cpp b/src/quick/items/qquickitemview.cpp
index 1df0736cc9..ff845936b9 100644
--- a/src/quick/items/qquickitemview.cpp
+++ b/src/quick/items/qquickitemview.cpp
@@ -1787,7 +1787,6 @@ void QQuickItemViewPrivate::refill(qreal from, qreal to)
qreal fillTo = to;
bool added = addVisibleItems(fillFrom, fillTo, bufferFrom, bufferTo, false);
- bool removed = removeNonVisibleItems(bufferFrom, bufferTo);
if (requestedIndex == -1 && buffer && bufferMode != NoBuffer) {
if (added) {
@@ -1803,6 +1802,8 @@ void QQuickItemViewPrivate::refill(qreal from, qreal to)
}
}
+ bool removed = removeNonVisibleItems(bufferFrom, bufferTo);
+
if (added || removed) {
markExtentsDirty();
updateBeginningEnd();