on xenial help sign in
Allow for the pageHeader to grow when overshooting

This removes the unused feaure of the pageHeader changing the size by itself Wasn't strictly needed but simplifies the code

commitb5e4e158909e411fa1f575f621596d1c31dce63d authorAlbert Astals <albert.astals@canonical.com> dateFri 21 Jun 2013, 18:13 (13 years ago) parent631e710
5 files changed+14−435
plugins/ListViewWithPageHeader/listviewwithpageheader.cpp+10−14 tests/plugins/ListViewWithPageHeader/listviewwithpageheadertest.cpp+1−199 tests/plugins/ListViewWithPageHeader/listviewwithpageheadertestsection.cpp+1−222 tests/plugins/ListViewWithPageHeader/test.qml+1 tests/plugins/ListViewWithPageHeader/test_section.qml+1
plugins/ListViewWithPageHeader/listviewwithpageheader.cpp+10−14
@@ -226,14 +226,12 @@ void ListViewWithPageHeader::setHeader(QQuickItem *headerItem)
226226 if (m_headerItem) {
227227 oldHeaderHeight = m_headerItem->height();
228228 oldHeaderY = m_headerItem->y();
229− QQuickItemPrivate::get(m_headerItem)->removeItemChangeListener(this, QQuickItemPrivate::Geometry);
230229 m_headerItem->setParentItem(nullptr);
231230 }
232231 m_headerItem = headerItem;
233232 if (m_headerItem) {
234233 m_headerItem->setParentItem(contentItem());
235234 m_headerItem->setZ(1);
236− QQuickItemPrivate::get(m_headerItem)->addItemChangeListener(this, QQuickItemPrivate::Geometry);
237235 }
238236 qreal newHeaderHeight = m_headerItem ? m_headerItem->height() : 0;
239237 if (!m_visibleItems.isEmpty() && newHeaderHeight != oldHeaderHeight) {
@@ -366,7 +364,9 @@ void ListViewWithPageHeader::viewportMoved(Qt::Orientations orient)
366364 if (contentY() < -m_minYExtent) {
367365 // Stick the header item to the top when dragging down
368366 m_headerItem->setY(contentY());
367+ m_headerItem->setHeight(m_headerItem->implicitHeight() + (-m_minYExtent - contentY()));
369368 } else {
369+ m_headerItem->setHeight(m_headerItem->implicitHeight());
370370 // We are going down (but it's not because of the rebound at the end)
371371 // (but the header was not shown by it's own position)
372372 // or the header is partially shown
@@ -824,19 +824,15 @@ void ListViewWithPageHeader::onModelUpdated(const QQuickChangeSet &changeSet, bo
824824 m_contentHeightDirty = true;
825825}
826826
827−void ListViewWithPageHeader::itemGeometryChanged(QQuickItem *item, const QRectF &newGeometry, const QRectF &oldGeometry)
827+void ListViewWithPageHeader::itemGeometryChanged(QQuickItem * /*item*/, const QRectF &newGeometry, const QRectF &oldGeometry)
828828{
829829 const qreal heightDiff = newGeometry.height() - oldGeometry.height();
830830 if (heightDiff != 0) {
831− if (item == m_headerItem) {
832− headerHeightChanged(newGeometry.height(), oldGeometry.height(), oldGeometry.y());
833− } else {
834− if (oldGeometry.y() + oldGeometry.height() + m_clipItem->y() < contentY() && !m_visibleItems.isEmpty()) {
835− ListItem *firstItem = m_visibleItems.first();
836− firstItem->setY(firstItem->y() - heightDiff);
837− adjustMinYExtent();
838− layout();
839− }
831+ if (oldGeometry.y() + oldGeometry.height() + m_clipItem->y() < contentY() && !m_visibleItems.isEmpty()) {
832+ ListItem *firstItem = m_visibleItems.first();
833+ firstItem->setY(firstItem->y() - heightDiff);
834+ adjustMinYExtent();
835+ layout();
840836 }
841837 refill();
842838 adjustMinYExtent();
@@ -887,7 +883,7 @@ void ListViewWithPageHeader::adjustMinYExtent()
887883 nonCreatedHeight = m_firstVisibleIndex * visibleItemsHeight / visibleItems;
888884// qDebug() << m_firstVisibleIndex << visibleItemsHeight << visibleItems << nonCreatedHeight;
889885 }
890− m_minYExtent = nonCreatedHeight - m_visibleItems.first()->y() - m_clipItem->y() + (m_headerItem ? m_headerItem->height() : 0);
886+ m_minYExtent = nonCreatedHeight - m_visibleItems.first()->y() - m_clipItem->y() + (m_headerItem ? m_headerItem->implicitHeight() : 0);
891887 }
892888}
893889
@@ -996,7 +992,7 @@ void ListViewWithPageHeader::updatePolish()
996992 m_minYExtent = qMax(m_minYExtent, -(contentHeight - height()));
997993 }
998994 } else {
999− contentHeight = m_headerItem ? m_headerItem->height() : 0;
995+ contentHeight = m_headerItem ? m_headerItem->implicitHeight() : 0;
1000996 if (!m_visibleItems.isEmpty()) {
1001997 foreach(ListItem *item, m_visibleItems) {
1002998 contentHeight += item->height();
tests/plugins/ListViewWithPageHeader/listviewwithpageheadertest.cpp+1−199
@@ -173,7 +173,7 @@ private Q_SLOTS:
173173 QCOMPARE(lvwph->m_clipItem->y(), -5.);
174174 QCOMPARE(lvwph->m_clipItem->clip(), false);
175175 QCOMPARE(lvwph->m_headerItem->y(), -5.);
176− QCOMPARE(lvwph->m_headerItem->height(), 50.);
176+ QCOMPARE(lvwph->m_headerItem->height(), 55.);
177177 QCOMPARE(lvwph->contentY(), -5.);
178178 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
179179
@@ -564,204 +564,6 @@ private Q_SLOTS:
564564 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
565565 }
566566
567− void testGrowHeaderAtTop()
568− {
569− lvwph->m_headerItem->setHeight(100);
570−
571− QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
572− QCOMPARE(lvwph->m_firstVisibleIndex, 0);
573− verifyItem(0, 100., 150., false);
574− verifyItem(1, 250., 200., false);
575− verifyItem(2, 450., 350., false);
576− verifyItem(3, 800., 350., true);
577− QCOMPARE(lvwph->m_minYExtent, 0.);
578− QCOMPARE(lvwph->m_clipItem->y(), 0.);
579− QCOMPARE(lvwph->m_clipItem->clip(), false);
580− QCOMPARE(lvwph->m_headerItem->y(), 0.);
581− QCOMPARE(lvwph->m_headerItem->height(), 100.);
582− QCOMPARE(lvwph->contentY(), 0.);
583− QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
584− }
585−
586− void testGrowHeaderAtBottom()
587− {
588− scrollToBottom();
589− QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
590− QCOMPARE(lvwph->m_firstVisibleIndex, 3);
591− verifyItem(0, -508., 350., true);
592− verifyItem(1, -158, 350., false);
593− verifyItem(2, 192, 350., false);
594− QCOMPARE(lvwph->m_minYExtent, 350.);
595− QCOMPARE(lvwph->m_clipItem->y(), 1258.);
596− QCOMPARE(lvwph->m_clipItem->clip(), false);
597− QCOMPARE(lvwph->m_headerItem->y(), 0.);
598− QCOMPARE(lvwph->m_headerItem->height(), 50.);
599− QCOMPARE(lvwph->contentY(), 1258.);
600− QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
601−
602− lvwph->m_headerItem->setHeight(100);
603−
604− QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
605− QCOMPARE(lvwph->m_firstVisibleIndex, 3);
606− verifyItem(0, -508., 350., true);
607− verifyItem(1, -158, 350., false);
608− verifyItem(2, 192, 350., false);
609− QCOMPARE(lvwph->m_minYExtent, 400.);
610− QCOMPARE(lvwph->m_clipItem->y(), 1258.);
611− QCOMPARE(lvwph->m_clipItem->clip(), false);
612− QCOMPARE(lvwph->m_headerItem->y(), 0.);
613− QCOMPARE(lvwph->m_headerItem->height(), 100.);
614− QCOMPARE(lvwph->contentY(), 1258.);
615− QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
616−
617− changeContentY(-30);
618−
619− QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
620− QCOMPARE(lvwph->m_firstVisibleIndex, 3);
621− verifyItem(0, -508., 350., true);
622− verifyItem(1, -158, 350., false);
623− verifyItem(2, 192, 350., false);
624− QCOMPARE(lvwph->m_minYExtent, 400.);
625− QCOMPARE(lvwph->m_clipItem->y(), 1258.);
626− QCOMPARE(lvwph->m_clipItem->clip(), true);
627− QCOMPARE(lvwph->m_headerItem->y(), 1158.);
628− QCOMPARE(lvwph->m_headerItem->height(), 100.);
629− QCOMPARE(lvwph->contentY(), 1228.);
630− QCOMPARE(lvwph->m_headerItemShownHeight, 30.);
631−
632−
633− scrollToTop();
634−
635− QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
636− QCOMPARE(lvwph->m_firstVisibleIndex, 0);
637− verifyItem(0, 100., 150., false);
638− verifyItem(1, 250., 200., false);
639− verifyItem(2, 450., 350., false);
640− verifyItem(3, 800., 350., true);
641− QCOMPARE(lvwph->m_minYExtent, 50.);
642− QCOMPARE(lvwph->m_clipItem->y(), -50.);
643− QCOMPARE(lvwph->m_clipItem->clip(), false);
644− QCOMPARE(lvwph->m_headerItem->y(), -50.);
645− QCOMPARE(lvwph->m_headerItem->height(), 100.);
646− QCOMPARE(lvwph->contentY(), -50.);
647− QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
648− }
649−
650− void testGrowHeaderPartlyShown()
651− {
652− scrollToBottom();
653− QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
654− QCOMPARE(lvwph->m_firstVisibleIndex, 3);
655− verifyItem(0, -508., 350., true);
656− verifyItem(1, -158, 350., false);
657− verifyItem(2, 192, 350., false);
658− QCOMPARE(lvwph->m_minYExtent, 350.);
659− QCOMPARE(lvwph->m_clipItem->y(), 1258.);
660− QCOMPARE(lvwph->m_clipItem->clip(), false);
661− QCOMPARE(lvwph->m_headerItem->y(), 0.);
662− QCOMPARE(lvwph->m_headerItem->height(), 50.);
663− QCOMPARE(lvwph->contentY(), 1258.);
664− QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
665−
666− changeContentY(-30);
667−
668− QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
669− QCOMPARE(lvwph->m_firstVisibleIndex, 3);
670− verifyItem(0, -508., 350., true);
671− verifyItem(1, -158, 350., false);
672− verifyItem(2, 192, 350., false);
673− QCOMPARE(lvwph->m_minYExtent, 350.);
674− QCOMPARE(lvwph->m_clipItem->y(), 1258.);
675− QCOMPARE(lvwph->m_clipItem->clip(), true);
676− QCOMPARE(lvwph->m_headerItem->y(), 1208.);
677− QCOMPARE(lvwph->m_headerItem->height(), 50.);
678− QCOMPARE(lvwph->contentY(), 1228.);
679− QCOMPARE(lvwph->m_headerItemShownHeight, 30.);
680−
681− lvwph->m_headerItem->setHeight(100);
682−
683− QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
684− QCOMPARE(lvwph->m_firstVisibleIndex, 3);
685− verifyItem(0, -508., 350., true);
686− verifyItem(1, -158, 350., false);
687− verifyItem(2, 192, 350., false);
688− QCOMPARE(lvwph->m_minYExtent, 350.);
689− QCOMPARE(lvwph->m_clipItem->y(), 1308.);
690− QCOMPARE(lvwph->m_clipItem->clip(), true);
691− QCOMPARE(lvwph->m_headerItem->y(), 1208.);
692− QCOMPARE(lvwph->m_headerItem->height(), 100.);
693− QCOMPARE(lvwph->contentY(), 1228.);
694− QCOMPARE(lvwph->m_headerItemShownHeight, 80.);
695−
696− scrollToTop();
697−
698− QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
699− QCOMPARE(lvwph->m_firstVisibleIndex, 0);
700− verifyItem(0, 100., 150., false);
701− verifyItem(1, 250., 200., false);
702− verifyItem(2, 450., 350., false);
703− verifyItem(3, 800., 350., true);
704− QCOMPARE(lvwph->m_minYExtent, 0.);
705− QCOMPARE(lvwph->m_clipItem->y(), 0.);
706− QCOMPARE(lvwph->m_clipItem->clip(), false);
707− QCOMPARE(lvwph->m_headerItem->y(), 0.);
708− QCOMPARE(lvwph->m_headerItem->height(), 100.);
709− QCOMPARE(lvwph->contentY(), 0.);
710− QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
711− }
712−
713− void testShrinkHeaderMoreThanPartlyShown()
714− {
715− scrollToBottom();
716− lvwph->m_headerItem->setHeight(100);
717− changeContentY(-30);
718−
719− QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
720− QCOMPARE(lvwph->m_firstVisibleIndex, 3);
721− verifyItem(0, -508., 350., true);
722− verifyItem(1, -158, 350., false);
723− verifyItem(2, 192, 350., false);
724− QCOMPARE(lvwph->m_minYExtent, 400.);
725− QCOMPARE(lvwph->m_clipItem->y(), 1258.);
726− QCOMPARE(lvwph->m_clipItem->clip(), true);
727− QCOMPARE(lvwph->m_headerItem->y(), 1158.);
728− QCOMPARE(lvwph->m_headerItem->height(), 100.);
729− QCOMPARE(lvwph->contentY(), 1228.);
730− QCOMPARE(lvwph->m_headerItemShownHeight, 30.);
731−
732− lvwph->m_headerItem->setHeight(50);
733−
734− QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
735− QCOMPARE(lvwph->m_firstVisibleIndex, 3);
736− verifyItem(0, -508., 350., true);
737− verifyItem(1, -158, 350., false);
738− verifyItem(2, 192, 350., false);
739− QCOMPARE(lvwph->m_minYExtent, 380.);
740− QCOMPARE(lvwph->m_clipItem->y(), 1228.);
741− QCOMPARE(lvwph->m_clipItem->clip(), false);
742− QCOMPARE(lvwph->m_headerItem->y(), 1158.);
743− QCOMPARE(lvwph->m_headerItem->height(), 50.);
744− QCOMPARE(lvwph->contentY(), 1228.);
745− QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
746− QTRY_VERIFY(lvwph->isAtYEnd());
747−
748− scrollToTop();
749−
750− QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
751− QCOMPARE(lvwph->m_firstVisibleIndex, 0);
752− verifyItem(0, 50., 150., false);
753− verifyItem(1, 200., 200., false);
754− verifyItem(2, 400., 350., false);
755− verifyItem(3, 750., 350., true);
756− QCOMPARE(lvwph->m_minYExtent, 30.);
757− QCOMPARE(lvwph->m_clipItem->y(), -30.);
758− QCOMPARE(lvwph->m_clipItem->clip(), false);
759− QCOMPARE(lvwph->m_headerItem->y(), -30.);
760− QCOMPARE(lvwph->m_headerItem->height(), 50.);
761− QCOMPARE(lvwph->contentY(), -30.);
762− QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
763− }
764−
765567 void testSetEmptyHeaderAtTop()
766568 {
767569 lvwph->setHeader(nullptr);
tests/plugins/ListViewWithPageHeader/listviewwithpageheadertestsection.cpp+1−222
@@ -182,7 +182,7 @@ private Q_SLOTS:
182182 QCOMPARE(lvwph->m_clipItem->y(), -5.);
183183 QCOMPARE(lvwph->m_clipItem->clip(), false);
184184 QCOMPARE(lvwph->m_headerItem->y(), -5.);
185− QCOMPARE(lvwph->m_headerItem->height(), 50.);
185+ QCOMPARE(lvwph->m_headerItem->height(), 55.);
186186 QCOMPARE(lvwph->contentY(), -5.);
187187 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
188188 QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
@@ -614,227 +614,6 @@ private Q_SLOTS:
614614 QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
615615 }
616616
617− void testGrowHeaderAtTop()
618− {
619− lvwph->m_headerItem->setHeight(100);
620−
621− QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
622− QCOMPARE(lvwph->m_firstVisibleIndex, 0);
623− verifyItem(0, 100., 190., false, "Agressive", false);
624− verifyItem(1, 290., 240., false, "Regular", false);
625− verifyItem(2, 530., 390., false, "Mild", false);
626− QCOMPARE(lvwph->m_minYExtent, 0.);
627− QCOMPARE(lvwph->m_clipItem->y(), 0.);
628− QCOMPARE(lvwph->m_clipItem->clip(), false);
629− QCOMPARE(lvwph->m_headerItem->y(), 0.);
630− QCOMPARE(lvwph->m_headerItem->height(), 100.);
631− QCOMPARE(lvwph->contentY(), 0.);
632− QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
633− QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
634− }
635−
636− void testGrowHeaderAtBottom()
637− {
638− scrollToBottom();
639− QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
640− QCOMPARE(lvwph->m_firstVisibleIndex, 3);
641− verifyItem(0, -588., 390., true, "Bold", true);
642− verifyItem(1, -198, 350., false, QString(), true);
643− verifyItem(2, 152, 390., false, "Lazy", false);
644− QCOMPARE(lvwph->m_minYExtent, 310.);
645− QCOMPARE(lvwph->m_clipItem->y(), 1458.);
646− QCOMPARE(lvwph->m_clipItem->clip(), false);
647− QCOMPARE(lvwph->m_headerItem->y(), 0.);
648− QCOMPARE(lvwph->m_headerItem->height(), 50.);
649− QCOMPARE(lvwph->contentY(), 1458.);
650− QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
651− QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
652− QCOMPARE(section(lvwph->m_topSectionItem), QString("Bold"));
653− QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
654−
655− lvwph->m_headerItem->setHeight(100);
656−
657− QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
658− QCOMPARE(lvwph->m_firstVisibleIndex, 3);
659− verifyItem(0, -588., 390., true, "Bold", true);
660− verifyItem(1, -198, 350., false, QString(), true);
661− verifyItem(2, 152, 390., false, "Lazy", false);
662− QCOMPARE(lvwph->m_minYExtent, 360.);
663− QCOMPARE(lvwph->m_clipItem->y(), 1458.);
664− QCOMPARE(lvwph->m_clipItem->clip(), false);
665− QCOMPARE(lvwph->m_headerItem->y(), 0.);
666− QCOMPARE(lvwph->m_headerItem->height(), 100.);
667− QCOMPARE(lvwph->contentY(), 1458.);
668− QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
669− QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
670− QCOMPARE(section(lvwph->m_topSectionItem), QString("Bold"));
671− QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
672−
673− changeContentY(-30);
674−
675− QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
676− QCOMPARE(lvwph->m_firstVisibleIndex, 3);
677− verifyItem(0, -588., 390., true, "Bold", true);
678− verifyItem(1, -198, 350., false, QString(), true);
679− verifyItem(2, 152, 390., false, "Lazy", false);
680− QCOMPARE(lvwph->m_minYExtent, 360.);
681− QCOMPARE(lvwph->m_clipItem->y(), 1458.);
682− QCOMPARE(lvwph->m_clipItem->clip(), true);
683− QCOMPARE(lvwph->m_headerItem->y(), 1358.);
684− QCOMPARE(lvwph->m_headerItem->height(), 100.);
685− QCOMPARE(lvwph->contentY(), 1428.);
686− QCOMPARE(lvwph->m_headerItemShownHeight, 30.);
687− QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
688− QCOMPARE(section(lvwph->m_topSectionItem), QString("Bold"));
689− QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
690−
691− scrollToTop();
692−
693− QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
694− QCOMPARE(lvwph->m_firstVisibleIndex, 0);
695− verifyItem(0, 100., 190., false, "Agressive", false);
696− verifyItem(1, 290., 240., false, "Regular", false);
697− verifyItem(2, 530., 390., false, "Mild", false);
698− QCOMPARE(lvwph->m_minYExtent, 50.);
699− QCOMPARE(lvwph->m_clipItem->y(), -50.);
700− QCOMPARE(lvwph->m_clipItem->clip(), false);
701− QCOMPARE(lvwph->m_headerItem->y(), -50.);
702− QCOMPARE(lvwph->m_headerItem->height(), 100.);
703− QCOMPARE(lvwph->contentY(), -50.);
704− QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
705− QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
706− }
707−
708− void testGrowHeaderPartlyShown()
709− {
710− scrollToBottom();
711− QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
712− QCOMPARE(lvwph->m_firstVisibleIndex, 3);
713− verifyItem(0, -588., 390., true, "Bold", true);
714− verifyItem(1, -198, 350., false, QString(), true);
715− verifyItem(2, 152, 390., false, "Lazy", false);
716− QCOMPARE(lvwph->m_minYExtent, 310.);
717− QCOMPARE(lvwph->m_clipItem->y(), 1458.);
718− QCOMPARE(lvwph->m_clipItem->clip(), false);
719− QCOMPARE(lvwph->m_headerItem->y(), 0.);
720− QCOMPARE(lvwph->m_headerItem->height(), 50.);
721− QCOMPARE(lvwph->contentY(), 1458.);
722− QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
723− QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
724− QCOMPARE(section(lvwph->m_topSectionItem), QString("Bold"));
725− QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
726−
727− changeContentY(-30);
728−
729− QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
730− QCOMPARE(lvwph->m_firstVisibleIndex, 3);
731− verifyItem(0, -588., 390., true, "Bold", true);
732− verifyItem(1, -198, 350., false, QString(), true);
733− verifyItem(2, 152, 390., false, "Lazy", false);
734− QCOMPARE(lvwph->m_minYExtent, 310.);
735− QCOMPARE(lvwph->m_clipItem->y(), 1458.);
736− QCOMPARE(lvwph->m_clipItem->clip(), true);
737− QCOMPARE(lvwph->m_headerItem->y(), 1408.);
738− QCOMPARE(lvwph->m_headerItem->height(), 50.);
739− QCOMPARE(lvwph->contentY(), 1428.);
740− QCOMPARE(lvwph->m_headerItemShownHeight, 30.);
741− QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
742− QCOMPARE(section(lvwph->m_topSectionItem), QString("Bold"));
743− QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
744−
745− lvwph->m_headerItem->setHeight(100);
746−
747− QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
748− QCOMPARE(lvwph->m_firstVisibleIndex, 3);
749− verifyItem(0, -588., 390., true, "Bold", true);
750− verifyItem(1, -198, 350., false, QString(), true);
751− verifyItem(2, 152, 390., false, "Lazy", false);
752− QCOMPARE(lvwph->m_minYExtent, 310.);
753− QCOMPARE(lvwph->m_clipItem->y(), 1508.);
754− QCOMPARE(lvwph->m_clipItem->clip(), true);
755− QCOMPARE(lvwph->m_headerItem->y(), 1408.);
756− QCOMPARE(lvwph->m_headerItem->height(), 100.);
757− QCOMPARE(lvwph->contentY(), 1428.);
758− QCOMPARE(lvwph->m_headerItemShownHeight, 80.);
759− QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
760− QCOMPARE(section(lvwph->m_topSectionItem), QString("Bold"));
761− QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
762−
763− scrollToTop();
764−
765− QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
766− QCOMPARE(lvwph->m_firstVisibleIndex, 0);
767− verifyItem(0, 100., 190., false, "Agressive", false);
768− verifyItem(1, 290., 240., false, "Regular", false);
769− verifyItem(2, 530., 390., false, "Mild", false);
770− QCOMPARE(lvwph->m_minYExtent, 0.);
771− QCOMPARE(lvwph->m_clipItem->y(), 0.);
772− QCOMPARE(lvwph->m_clipItem->clip(), false);
773− QCOMPARE(lvwph->m_headerItem->y(), 0.);
774− QCOMPARE(lvwph->m_headerItem->height(), 100.);
775− QCOMPARE(lvwph->contentY(), 0.);
776− QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
777− QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
778− }
779−
780− void testShrinkHeaderMoreThanPartlyShown()
781− {
782− scrollToBottom();
783− lvwph->m_headerItem->setHeight(100);
784− changeContentY(-30);
785−
786− QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
787− QCOMPARE(lvwph->m_firstVisibleIndex, 3);
788− verifyItem(0, -588., 390., true, "Bold", true);
789− verifyItem(1, -198, 350., false, QString(), true);
790− verifyItem(2, 152, 390., false, "Lazy", false);
791− QCOMPARE(lvwph->m_minYExtent, 360.);
792− QCOMPARE(lvwph->m_clipItem->y(), 1458.);
793− QCOMPARE(lvwph->m_clipItem->clip(), true);
794− QCOMPARE(lvwph->m_headerItem->y(), 1358.);
795− QCOMPARE(lvwph->m_headerItem->height(), 100.);
796− QCOMPARE(lvwph->contentY(), 1428.);
797− QCOMPARE(lvwph->m_headerItemShownHeight, 30.);
798− QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
799− QCOMPARE(section(lvwph->m_topSectionItem), QString("Bold"));
800− QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
801−
802− lvwph->m_headerItem->setHeight(50);
803−
804− QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
805− QCOMPARE(lvwph->m_firstVisibleIndex, 3);
806− verifyItem(0, -588., 390., true, "Bold", true);
807− verifyItem(1, -198, 350., false, QString(), true);
808− verifyItem(2, 152, 390., false, "Lazy", false);
809− QCOMPARE(lvwph->m_minYExtent, 340.);
810− QCOMPARE(lvwph->m_clipItem->y(), 1428.);
811− QCOMPARE(lvwph->m_clipItem->clip(), false);
812− QCOMPARE(lvwph->m_headerItem->y(), 1358.);
813− QCOMPARE(lvwph->m_headerItem->height(), 50.);
814− QCOMPARE(lvwph->contentY(), 1428.);
815− QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
816− QTRY_VERIFY(lvwph->isAtYEnd());
817− QVERIFY(!QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
818− QCOMPARE(section(lvwph->m_topSectionItem), QString("Bold"));
819− QCOMPARE(lvwph->m_topSectionItem->y(), 0.);
820−
821− scrollToTop();
822−
823− QTRY_COMPARE(lvwph->m_visibleItems.count(), 3);
824− QCOMPARE(lvwph->m_firstVisibleIndex, 0);
825− verifyItem(0, 50., 190., false, "Agressive", false);
826− verifyItem(1, 240., 240., false, "Regular", false);
827− verifyItem(2, 480., 390., false, "Mild", false);
828− QCOMPARE(lvwph->m_minYExtent, 30.);
829− QCOMPARE(lvwph->m_clipItem->y(), -30.);
830− QCOMPARE(lvwph->m_clipItem->clip(), false);
831− QCOMPARE(lvwph->m_headerItem->y(), -30.);
832− QCOMPARE(lvwph->m_headerItem->height(), 50.);
833− QCOMPARE(lvwph->contentY(), -30.);
834− QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
835− QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
836− }
837−
838617 void testSetEmptyHeaderAtTop()
839618 {
840619 lvwph->setHeader(nullptr);
tests/plugins/ListViewWithPageHeader/test.qml+1
@@ -85,6 +85,7 @@ Rectangle {
8585 color: "transparent"
8686 width: parent.width
8787 height: 50
88+ implicitHeight: 50
8889 Text {
8990 anchors.fill: parent
9091 text: "APPS"
tests/plugins/ListViewWithPageHeader/test_section.qml+1
@@ -85,6 +85,7 @@ Rectangle {
8585 color: "transparent"
8686 width: parent.width
8787 height: 50
88+ implicitHeight: 50
8889 Text {
8990 anchors.fill: parent
9091 text: "APPS"