on xenial help sign in
LVWPH: Make sure m_firstVisibleIndex is correctly set on removeNonVisibleItems

commitfb68af0e5448d1e8c0ddf118e3c52f5118383acc authorAlbert Astals <albert.astals@canonical.com> dateWed 19 Mar 2014, 16:39 (13 years ago) parentd37765f5387f6b
2 files changed+23
plugins/DashViews/listviewwithpageheader.cpp+3 tests/plugins/DashViews/listviewwithpageheadertest.cpp+20
plugins/DashViews/listviewwithpageheader.cpp+3
@@ -772,6 +772,9 @@ bool ListViewWithPageHeader::removeNonVisibleItems(qreal bufferFrom, qreal buffe
772772 ++i;
773773 }
774774 }
775+ if (!foundVisible) {
776+ m_firstVisibleIndex = -1;
777+ }
775778 if (m_firstVisibleIndex != oldFirstVisibleIndex) {
776779 adjustMinYExtent();
777780 }
tests/plugins/DashViews/listviewwithpageheadertest.cpp+20
@@ -1887,6 +1887,26 @@ private Q_SLOTS:
18871887 QTRY_COMPARE(lvwph->m_visibleItems.count(), 1);
18881888 }
18891889
1890+ void testResizeScrolledBigItem()
1891+ {
1892+ QMetaObject::invokeMethod(model, "removeItems", Q_ARG(QVariant, 0), Q_ARG(QVariant, 6));
1893+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 0);
1894+
1895+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 0), Q_ARG(QVariant, 10000));
1896+ changeContentY(8000);
1897+
1898+ // Pretend the list is busy requesting some other index
1899+ lvwph->m_asyncRequestedIndex = 4;
1900+
1901+ lvwph->m_visibleItems[0]->m_item->setHeight(100);
1902+ // This resize makes the item go outside the viewport so its deleted
1903+ QCOMPARE(lvwph->m_visibleItems.count(), 0);
1904+ QCOMPARE(lvwph->m_firstVisibleIndex, -1);
1905+ // On the next polish the item will be readded
1906+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 1);
1907+ QTRY_COMPARE(lvwph->m_firstVisibleIndex, 0);
1908+ }
1909+
18901910private:
18911911 QQuickView *view;
18921912 ListViewWithPageHeader *lvwph;