on xenial help sign in
Make sure minYExtent is updated before setting the new content height
9925da6Albert Astals
plugins/ListViewWithPageHeader/listviewwithpageheader.cpp+1
@@ -1244,6 +1244,7 @@ void ListViewWithPageHeader::updatePolish()
1244 }
1244 }
1245
1245
1246 m_contentHeightDirty = false;
1246 m_contentHeightDirty = false;
1247+ adjustMinYExtent();
1247 setContentHeight(contentHeight);
1248 setContentHeight(contentHeight);
1248 }
1249 }
1249}
1250}
tests/plugins/ListViewWithPageHeader/listviewwithpageheadertest.cpp+22−1
@@ -19,6 +19,7 @@
19#include <QAbstractItemModel>
19#include <QAbstractItemModel>
20#include <QQmlEngine>
20#include <QQmlEngine>
21#include <QQuickView>
21#include <QQuickView>
22+#include <QSignalSpy>
22#include <QtTestGui>
23#include <QtTestGui>
23#pragma GCC diagnostic push
24#pragma GCC diagnostic push
24#pragma GCC diagnostic ignored "-pedantic"
25#pragma GCC diagnostic ignored "-pedantic"
@@ -1521,7 +1522,7 @@ private Q_SLOTS:
1521 QCOMPARE(lvwph->m_firstVisibleIndex, 1);
1522 QCOMPARE(lvwph->m_firstVisibleIndex, 1);
1522 verifyItem(0, -458., 1000., false);
1523 verifyItem(0, -458., 1000., false);
1523 verifyItem(1, 542., 350., true);
1524 verifyItem(1, 542., 350., true);
1524− QCOMPARE(lvwph->m_minYExtent, 362.5);
1525+ QCOMPARE(lvwph->m_minYExtent, 525.);
1525 QCOMPARE(lvwph->m_clipItem->y(), 658.);
1526 QCOMPARE(lvwph->m_clipItem->y(), 658.);
1526 QCOMPARE(lvwph->m_clipItem->clip(), false);
1527 QCOMPARE(lvwph->m_clipItem->clip(), false);
1527 QCOMPARE(lvwph->m_headerItem->y(), 0.);
1528 QCOMPARE(lvwph->m_headerItem->y(), 0.);
@@ -1634,6 +1635,26 @@ private Q_SLOTS:
1634 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1635 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1635 }
1636 }
1636
1637
1638+ void addingRemoveItemsShouldNotChangeContentY()
1639+ {
1640+ QSignalSpy spy(lvwph, SIGNAL(contentYChanged()));
1641+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 0), Q_ARG(QVariant, 150));
1642+ QMetaObject::invokeMethod(model, "removeItems", Q_ARG(QVariant, 1), Q_ARG(QVariant, 6));
1643+
1644+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 1);
1645+ QCOMPARE(lvwph->m_firstVisibleIndex, 0);
1646+ verifyItem(0, 50., 150., false);
1647+ QCOMPARE(lvwph->m_minYExtent, 0.);
1648+ QCOMPARE(lvwph->m_clipItem->y(), 0.);
1649+ QCOMPARE(lvwph->m_clipItem->clip(), false);
1650+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
1651+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
1652+ QCOMPARE(lvwph->contentY(), 0.);
1653+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1654+
1655+ QCOMPARE(spy.count(), 0);
1656+ }
1657+
1637private:
1658private:
1638 QQuickView *view;
1659 QQuickView *view;
1639 ListViewWithPageHeader *lvwph;
1660 ListViewWithPageHeader *lvwph;
tests/plugins/ListViewWithPageHeader/listviewwithpageheadertestsection.cpp+22−1
@@ -19,6 +19,7 @@
19#include <QAbstractItemModel>
19#include <QAbstractItemModel>
20#include <QQmlEngine>
20#include <QQmlEngine>
21#include <QQuickView>
21#include <QQuickView>
22+#include <QSignalSpy>
22#include <QtTestGui>
23#include <QtTestGui>
23#pragma GCC diagnostic push
24#pragma GCC diagnostic push
24#pragma GCC diagnostic ignored "-pedantic"
25#pragma GCC diagnostic ignored "-pedantic"
@@ -1875,7 +1876,7 @@ private Q_SLOTS:
1875 QCOMPARE(lvwph->m_firstVisibleIndex, 1);
1876 QCOMPARE(lvwph->m_firstVisibleIndex, 1);
1876 verifyItem(0, -498., 1040., false, "Regular", true);
1877 verifyItem(0, -498., 1040., false, "Regular", true);
1877 verifyItem(1, 542., 390., true, "Mild", true);
1878 verifyItem(1, 542., 390., true, "Mild", true);
1878− QCOMPARE(lvwph->m_minYExtent, 1250/3.);
1879+ QCOMPARE(lvwph->m_minYExtent, 525.);
1879 QCOMPARE(lvwph->m_clipItem->y(), 738.);
1880 QCOMPARE(lvwph->m_clipItem->y(), 738.);
1880 QCOMPARE(lvwph->m_clipItem->clip(), false);
1881 QCOMPARE(lvwph->m_clipItem->clip(), false);
1881 QCOMPARE(lvwph->m_headerItem->y(), 0.);
1882 QCOMPARE(lvwph->m_headerItem->y(), 0.);
@@ -2055,6 +2056,26 @@ private Q_SLOTS:
2055 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
2056 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
2056 }
2057 }
2057
2058
2059+ void addingRemoveItemsShouldNotChangeContentY()
2060+ {
2061+ QSignalSpy spy(lvwph, SIGNAL(contentYChanged()));
2062+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 0), Q_ARG(QVariant, 150), Q_ARG(QVariant, "Agressive"));
2063+ QMetaObject::invokeMethod(model, "removeItems", Q_ARG(QVariant, 1), Q_ARG(QVariant, 6));
2064+
2065+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 1);
2066+ QCOMPARE(lvwph->m_firstVisibleIndex, 0);
2067+ verifyItem(0, 50., 190., false, "Agressive", false);
2068+ QCOMPARE(lvwph->m_minYExtent, 0.);
2069+ QCOMPARE(lvwph->m_clipItem->y(), 0.);
2070+ QCOMPARE(lvwph->m_clipItem->clip(), false);
2071+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
2072+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
2073+ QCOMPARE(lvwph->contentY(), 0.);
2074+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
2075+
2076+ QCOMPARE(spy.count(), 0);
2077+ }
2078+
2058private:
2079private:
2059 QQuickView *view;
2080 QQuickView *view;
2060 ListViewWithPageHeader *lvwph;
2081 ListViewWithPageHeader *lvwph;