on xenial help sign in
Fix adding items into an empty LVWPH
commitf7c9d16d205b5db5072e541db1d529f9f2243089 authorMichal Hruby <michal.mhr@gmail.com> dateThu 18 Jul 2013, 21:54 (13 years ago) parent212a1db
2 files changed+25−1
plugins/ListViewWithPageHeader/listviewwithpageheader.cpp+1−1 tests/plugins/ListViewWithPageHeader/listviewwithpageheadertestsection.cpp+24
plugins/ListViewWithPageHeader/listviewwithpageheader.cpp+1−1
@@ -806,7 +806,7 @@ void ListViewWithPageHeader::onModelUpdated(const QQuickChangeSet &changeSet, bo
806806 Q_FOREACH(const QQuickChangeSet::Insert &insert, changeSet.inserts()) {
807807// qDebug() << "ListViewWithPageHeader::onModelUpdated Insert" << insert.index << insert.count;
808808 const bool insertingInValidIndexes = insert.index > m_firstVisibleIndex && insert.index < m_firstVisibleIndex + m_visibleItems.count();
809− const bool firstItemWithViewOnTop = insert.index == 0 && m_firstVisibleIndex == 0 && m_visibleItems.first()->y() + m_clipItem->y() > contentY();
809+ const bool firstItemWithViewOnTop = !m_visibleItems.isEmpty() && insert.index == 0 && m_firstVisibleIndex == 0 && m_visibleItems.first()->y() + m_clipItem->y() > contentY();
810810 if (insertingInValidIndexes || firstItemWithViewOnTop)
811811 {
812812 // If the items we are adding won't be really visible
tests/plugins/ListViewWithPageHeader/listviewwithpageheadertestsection.cpp+24
@@ -770,6 +770,30 @@ private Q_SLOTS:
770770 QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
771771 }
772772
773+ void testRemoveItems()
774+ {
775+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
776+ QCOMPARE(lvwph->m_firstVisibleIndex, 0);
777+ verifyItem(0, 50., 190., false, "Agressive", false);
778+ verifyItem(1, 240., 240., false, "Regular", false);
779+ verifyItem(2, 480., 390., false, "Mild", false);
780+ QMetaObject::invokeMethod(model, "removeItems", Q_ARG(QVariant, 0), Q_ARG(QVariant, 3));
781+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 0);
782+ QCOMPARE(lvwph->m_minYExtent, 0.);
783+ QCOMPARE(lvwph->m_clipItem->y(), 0.);
784+ QCOMPARE(lvwph->m_clipItem->clip(), false);
785+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
786+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
787+ QCOMPARE(lvwph->contentY(), 0.);
788+
789+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 0), Q_ARG(QVariant, 100), Q_ARG(QVariant, "Agressive"));
790+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 1), Q_ARG(QVariant, 125), Q_ARG(QVariant, "Regular"));
791+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 2);
792+ QCOMPARE(lvwph->m_firstVisibleIndex, 0);
793+ verifyItem(0, 50., 140., false, "Agressive", false);
794+ verifyItem(1, 190., 165., false, "Regular", false);
795+ }
796+
773797 void testInsertItemsStealSectionItem()
774798 {
775799 QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 1), Q_ARG(QVariant, 125), Q_ARG(QVariant, "Regular"));