diff options
-rw-r--r-- | src/quick/items/qquickitemview.cpp | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/src/quick/items/qquickitemview.cpp b/src/quick/items/qquickitemview.cpp index e70e923c4d..95c7ed5f78 100644 --- a/src/quick/items/qquickitemview.cpp +++ b/src/quick/items/qquickitemview.cpp @@ -1659,12 +1659,19 @@ void QQuickItemViewPrivate::refill(qreal from, qreal to) bool added = addVisibleItems(fillFrom, fillTo, false); bool removed = removeNonVisibleItems(bufferFrom, bufferTo); - if (buffer && bufferMode != NoBuffer) { - if (bufferMode & BufferAfter) - fillTo = bufferTo; - if (bufferMode & BufferBefore) - fillFrom = bufferFrom; - added |= addVisibleItems(fillFrom, fillTo, true); + if (requestedIndex == -1 && buffer && bufferMode != NoBuffer) { + if (added) { + // We've already created a new delegate this frame. + // Just schedule a buffer refill. + fillCacheBuffer = true; + q->polish(); + } else { + if (bufferMode & BufferAfter) + fillTo = bufferTo; + if (bufferMode & BufferBefore) + fillFrom = bufferFrom; + added |= addVisibleItems(fillFrom, fillTo, true); + } } if (added || removed) { |