on xenial help sign in
LWPH Fix crash from bug 1279434
4541c19Albert Astals
plugins/DashViews/listviewwithpageheader.cpp+1−1
@@ -1073,7 +1073,7 @@ void ListViewWithPageHeader::itemGeometryChanged(QQuickItem * /*item*/, const QR
1073{
1073{
1074 const qreal heightDiff = newGeometry.height() - oldGeometry.height();
1074 const qreal heightDiff = newGeometry.height() - oldGeometry.height();
1075 if (heightDiff != 0) {
1075 if (heightDiff != 0) {
1076− if (oldGeometry.y() + oldGeometry.height() + m_clipItem->y() < contentY() && !m_visibleItems.isEmpty()) {
1076+ if (oldGeometry.y() + oldGeometry.height() + m_clipItem->y() <= contentY() && !m_visibleItems.isEmpty()) {
1077 ListItem *firstItem = m_visibleItems.first();
1077 ListItem *firstItem = m_visibleItems.first();
1078 firstItem->setY(firstItem->y() - heightDiff);
1078 firstItem->setY(firstItem->y() - heightDiff);
1079 adjustMinYExtent();
1079 adjustMinYExtent();
tests/plugins/DashViews/listviewwithpageheadertest.cpp+27
@@ -1866,6 +1866,33 @@ private Q_SLOTS:
1866 QTRY_COMPARE(lvwph->m_headerItem->y(), -lvwph->m_minYExtent);
1866 QTRY_COMPARE(lvwph->m_headerItem->y(), -lvwph->m_minYExtent);
1867 }
1867 }
1868
1868
1869+ void testBug1279434()
1870+ {
1871+ QMetaObject::invokeMethod(model, "removeItems", Q_ARG(QVariant, 0), Q_ARG(QVariant, 6));
1872+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 0);
1873+
1874+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 0), Q_ARG(QVariant, 100));
1875+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 0), Q_ARG(QVariant, 125));
1876+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 2);
1877+ QCOMPARE(lvwph->m_firstVisibleIndex, 0);
1878+ verifyItem(0, 50., 125., false);
1879+ verifyItem(1, 175., 100., false);
1880+
1881+ lvwph->setContentY(175);
1882+
1883+ model->setProperty(1, "size", 4);
1884+ model->setProperty(0, "size", 4);
1885+
1886+ model->setProperty(0, "size", 6);
1887+
1888+ QMetaObject::invokeMethod(model, "removeItems", Q_ARG(QVariant, 0), Q_ARG(QVariant, 2));
1889+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 0);
1890+ QCOMPARE(lvwph->m_firstVisibleIndex, -1);
1891+
1892+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 0), Q_ARG(QVariant, 100));
1893+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 1);
1894+ }
1895+
1869private:
1896private:
1870 QQuickView *view;
1897 QQuickView *view;
1871 ListViewWithPageHeader *lvwph;
1898 ListViewWithPageHeader *lvwph;