@@ -1456,6 +1456,86 @@ private Q_SLOTS:
14561456 QVERIFY (lvwph->isAtYEnd());
14571457 }
14581458
1459+ void growWindow()
1460+ {
1461+ view->rootObject()->setHeight(850);
1462+
1463+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 5);
1464+ QCOMPARE(lvwph->m_firstVisibleIndex, 0);
1465+ verifyItem(0, 50., 190., false, "Agressive", false);
1466+ verifyItem(1, 240., 240., false, "Regular", false);
1467+ verifyItem(2, 480., 390., false, "Mild", false);
1468+ verifyItem(3, 870., 390., true, "Bold", true);
1469+ verifyItem(4, 1260., 350., true, QString(), true);
1470+ QCOMPARE(lvwph->m_minYExtent, 0.);
1471+ QCOMPARE(lvwph->m_clipItem->y(), 0.);
1472+ QCOMPARE(lvwph->m_clipItem->clip(), false);
1473+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
1474+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
1475+ QCOMPARE(lvwph->contentY(), 0.);
1476+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1477+ }
1478+
1479+ void growWindowAtBottom()
1480+ {
1481+ // Need a bunch small items at the bottom to trigger the problem
1482+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 6), Q_ARG(QVariant, 50), Q_ARG(QVariant, "Agressive"));
1483+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 6), Q_ARG(QVariant, 50), Q_ARG(QVariant, "Agressive"));
1484+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 6), Q_ARG(QVariant, 50), Q_ARG(QVariant, "Agressive"));
1485+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 6), Q_ARG(QVariant, 50), Q_ARG(QVariant, "Agressive"));
1486+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 6), Q_ARG(QVariant, 50), Q_ARG(QVariant, "Agressive"));
1487+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 6), Q_ARG(QVariant, 50), Q_ARG(QVariant, "Agressive"));
1488+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 6), Q_ARG(QVariant, 50), Q_ARG(QVariant, "Regular"));
1489+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 6), Q_ARG(QVariant, 50), Q_ARG(QVariant, "Regular"));
1490+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 6), Q_ARG(QVariant, 50), Q_ARG(QVariant, "Regular"));
1491+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 6), Q_ARG(QVariant, 50), Q_ARG(QVariant, "Regular"));
1492+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 6), Q_ARG(QVariant, 50), Q_ARG(QVariant, "Regular"));
1493+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 6), Q_ARG(QVariant, 50), Q_ARG(QVariant, "Regular"));
1494+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 6), Q_ARG(QVariant, 50), Q_ARG(QVariant, "Agressive"));
1495+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 6), Q_ARG(QVariant, 50), Q_ARG(QVariant, "Agressive"));
1496+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 6), Q_ARG(QVariant, 50), Q_ARG(QVariant, "Agressive"));
1497+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 6), Q_ARG(QVariant, 50), Q_ARG(QVariant, "Agressive"));
1498+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 6), Q_ARG(QVariant, 50), Q_ARG(QVariant, "Agressive"));
1499+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 6), Q_ARG(QVariant, 50), Q_ARG(QVariant, "Agressive"));
1500+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 6), Q_ARG(QVariant, 50), Q_ARG(QVariant, "Agressive"));
1501+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 6), Q_ARG(QVariant, 50), Q_ARG(QVariant, "Agressive"));
1502+
1503+ scrollToBottom();
1504+
1505+ view->rootObject()->setHeight(850);
1506+
1507+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 21);
1508+ QCOMPARE(lvwph->m_firstVisibleIndex, 5);
1509+ verifyItem(0, -660., 390., true, "Lazy", true);
1510+ verifyItem(1, -270., 90., true, "Agressive", true);
1511+ verifyItem(2, -180, 50., true, QString(), true);
1512+ verifyItem(3, -130, 50., true, QString(), true);
1513+ verifyItem(4, -80, 50., true, QString(), true);
1514+ verifyItem(5, -30, 50., false, QString(), true);
1515+ verifyItem(6, 20, 50., false, QString(), true);
1516+ verifyItem(7, 70, 50., false, QString(), true);
1517+ verifyItem(8, 120, 50., false, QString(), true);
1518+ verifyItem(9, 170, 90., false, "Regular", false);
1519+ verifyItem(10, 260, 50., false, QString(), true);
1520+ verifyItem(11, 310, 50., false, QString(), true);
1521+ verifyItem(12, 360, 50., false, QString(), true);
1522+ verifyItem(13, 410, 50., false, QString(), true);
1523+ verifyItem(14, 460, 50., false, QString(), true);
1524+ verifyItem(15, 510, 90., false, "Agressive", false);
1525+ verifyItem(16, 600, 50., false, QString(), true);
1526+ verifyItem(17, 650, 50., false, QString(), true);
1527+ verifyItem(18, 700, 50., false, QString(), true);
1528+ verifyItem(19, 750, 50., false, QString(), true);
1529+ verifyItem(20, 800, 50., false, QString(), true);
1530+ QCOMPARE(lvwph->m_minYExtent, 5 * 1510./21. + 660 - 1970 + 50);
1531+ QCOMPARE(lvwph->m_clipItem->y(), 1970.);
1532+ QCOMPARE(lvwph->m_clipItem->clip(), false);
1533+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
1534+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
1535+ QCOMPARE(lvwph->contentY(), 1970.);
1536+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1537+ }
1538+
14591539private:
14601540 QQuickView *view;
14611541 ListViewWithPageHeader *lvwph;