on xenial help sign in
Make sure minYExtent is updated before setting the new content height

Otherwise bad things can happen in the positioning . Approved by PS Jenkins bot, Michał Sawicz.

commit9925da6dd27b40ca79c140003dc032f8d50fb18c authorAlbert Astals <albert.astals@canonical.com> dateMon 19 Aug 2013, 10:53 (13 years ago) parentdc9fcf9d732470
3 files changed+45−2
plugins/ListViewWithPageHeader/listviewwithpageheader.cpp+1 tests/plugins/ListViewWithPageHeader/listviewwithpageheadertest.cpp+22−1 tests/plugins/ListViewWithPageHeader/listviewwithpageheadertestsection.cpp+22−1
plugins/ListViewWithPageHeader/listviewwithpageheader.cpp+1
@@ -1244,6 +1244,7 @@ void ListViewWithPageHeader::updatePolish()
12441244 }
12451245
12461246 m_contentHeightDirty = false;
1247+ adjustMinYExtent();
12471248 setContentHeight(contentHeight);
12481249 }
12491250}
tests/plugins/ListViewWithPageHeader/listviewwithpageheadertest.cpp+22−1
@@ -19,6 +19,7 @@
1919#include <QAbstractItemModel>
2020#include <QQmlEngine>
2121#include <QQuickView>
22+#include <QSignalSpy>
2223#include <QtTestGui>
2324#pragma GCC diagnostic push
2425#pragma GCC diagnostic ignored "-pedantic"
@@ -1521,7 +1522,7 @@ private Q_SLOTS:
15211522 QCOMPARE(lvwph->m_firstVisibleIndex, 1);
15221523 verifyItem(0, -458., 1000., false);
15231524 verifyItem(1, 542., 350., true);
1524− QCOMPARE(lvwph->m_minYExtent, 362.5);
1525+ QCOMPARE(lvwph->m_minYExtent, 525.);
15251526 QCOMPARE(lvwph->m_clipItem->y(), 658.);
15261527 QCOMPARE(lvwph->m_clipItem->clip(), false);
15271528 QCOMPARE(lvwph->m_headerItem->y(), 0.);
@@ -1634,6 +1635,26 @@ private Q_SLOTS:
16341635 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
16351636 }
16361637
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+
16371658private:
16381659 QQuickView *view;
16391660 ListViewWithPageHeader *lvwph;
tests/plugins/ListViewWithPageHeader/listviewwithpageheadertestsection.cpp+22−1
@@ -19,6 +19,7 @@
1919#include <QAbstractItemModel>
2020#include <QQmlEngine>
2121#include <QQuickView>
22+#include <QSignalSpy>
2223#include <QtTestGui>
2324#pragma GCC diagnostic push
2425#pragma GCC diagnostic ignored "-pedantic"
@@ -1875,7 +1876,7 @@ private Q_SLOTS:
18751876 QCOMPARE(lvwph->m_firstVisibleIndex, 1);
18761877 verifyItem(0, -498., 1040., false, "Regular", true);
18771878 verifyItem(1, 542., 390., true, "Mild", true);
1878− QCOMPARE(lvwph->m_minYExtent, 1250/3.);
1879+ QCOMPARE(lvwph->m_minYExtent, 525.);
18791880 QCOMPARE(lvwph->m_clipItem->y(), 738.);
18801881 QCOMPARE(lvwph->m_clipItem->clip(), false);
18811882 QCOMPARE(lvwph->m_headerItem->y(), 0.);
@@ -2055,6 +2056,26 @@ private Q_SLOTS:
20552056 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
20562057 }
20572058
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+
20582079private:
20592080 QQuickView *view;
20602081 ListViewWithPageHeader *lvwph;