diff options
author | Kaj Grönholm <kaj.gronholm@qt.io> | 2023-09-19 09:45:19 +0300 |
---|---|---|
committer | Kaj Grönholm <kaj.gronholm@qt.io> | 2023-09-21 08:03:00 +0300 |
commit | af24ed58c250cce32e8d2dc12cfc36de79706f92 (patch) | |
tree | 3816e59bab2a18574b0fb346165986fbf9281928 | |
parent | d77693a028ce4c0faffafb612b8f4881d38e99ac (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.cpp | 3 |
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(); |