From b01aec8e81a5839ee520ed4e6e4fedf1d2ec419a Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Mon, 20 Feb 2012 13:59:41 +1000 Subject: cacheBuffer makes delegates appear briefly in wrong position Set delegates that are created asynchronously to non-visible. This would have happened the next time addVisibleItems() was called. Task-number: QTBUG-24364 Change-Id: I4b628bef186c8c41bd6a4d9e4ac402d59bcb4972 Reviewed-by: Bea Lam --- src/quick/items/qquickitemview.cpp | 2 ++ tests/auto/qtquick2/qquicklistview/tst_qquicklistview.cpp | 3 +-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/quick/items/qquickitemview.cpp b/src/quick/items/qquickitemview.cpp index 4d7c92ad1c..955375e287 100644 --- a/src/quick/items/qquickitemview.cpp +++ b/src/quick/items/qquickitemview.cpp @@ -2754,6 +2754,8 @@ void QQuickItemView::initItem(int index, QQuickItem *item) Q_D(QQuickItemView); item->setZ(1); if (d->requestedIndex == index) { + if (d->requestedAsync) + item->setVisible(false); item->setParentItem(contentItem()); QDeclarative_setParent_noEvent(item, contentItem()); d->requestedItem = d->newViewItem(index, item); diff --git a/tests/auto/qtquick2/qquicklistview/tst_qquicklistview.cpp b/tests/auto/qtquick2/qquicklistview/tst_qquicklistview.cpp index 393dd09d36..298b272629 100644 --- a/tests/auto/qtquick2/qquicklistview/tst_qquicklistview.cpp +++ b/tests/auto/qtquick2/qquicklistview/tst_qquicklistview.cpp @@ -2095,8 +2095,7 @@ void tst_QQuickListView::sectionsPositioning() listview->setContentY(20); QTRY_COMPARE(QQuickItemPrivate::get(listview)->polishScheduled, false); canvas->rootObject()->setProperty("sectionPositioning", QVariant(int(QQuickViewSection::InlineLabels | QQuickViewSection::CurrentLabelAtStart))); - item = findVisibleChild(contentItem, "sect_new"); // inline label restored - QVERIFY(item); + QTRY_VERIFY(item = findVisibleChild(contentItem, "sect_new")); // inline label restored QCOMPARE(item->y(), 340.); // Turn sticky header off -- cgit v1.2.3