From b1b50553cf73795e25337d5e5bb70530c90dd350 Mon Sep 17 00:00:00 2001 From: Bea Lam Date: Wed, 3 Aug 2011 15:40:58 +1000 Subject: Fix ListView refill() where delegate size == 0 When refilling, if a delegate item is positioned at the start of the buffer, it should only be removed if its height is > 0. Otherwise refill() will constantly remove it in removeNonVisibleItems() and add it again in the next frame in addVisibleItems(). Regression from aa99d4f5cb4f1f512d1db90536752b518dbea449 Task-number: QTBUG-20712 Change-Id: I21d25fde21e0b559a378c9e202ace58947417a4d Reviewed-on: http://codereview.qt.nokia.com/2541 Reviewed-by: Qt Sanity Bot Reviewed-by: Martin Jones --- src/declarative/items/qsglistview.cpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src') diff --git a/src/declarative/items/qsglistview.cpp b/src/declarative/items/qsglistview.cpp index d9792d1770..e1623390f8 100644 --- a/src/declarative/items/qsglistview.cpp +++ b/src/declarative/items/qsglistview.cpp @@ -603,6 +603,8 @@ bool QSGListViewPrivate::removeNonVisibleItems(int bufferFrom, int bufferTo) while (visibleItems.count() > 1 && (item = visibleItems.first()) && item->endPosition() <= bufferFrom) { if (item->attached->delayRemove()) break; + if (item->size() == 0) + break; // qDebug() << "refill: remove first" << visibleIndex << "top end pos" << item->endPosition(); if (item->index != -1) visibleIndex++; -- cgit v1.2.3