From fc218a91ce03187f51058deba9d5cdde9c3e6d05 Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Tue, 28 Jan 2014 08:59:59 -0600 Subject: Fix crash in header when regenerating view. Unregister for geometry changes before reparenting, as reparenting may trigger those changes. Task-number: QTBUG-36481 Change-Id: Ia94f1f88880b232dd583b7e63e5da73fb338f7c6 Reviewed-by: Martin Jones --- tests/auto/quick/qquicklistview/tst_qquicklistview.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'tests/auto/quick/qquicklistview/tst_qquicklistview.cpp') diff --git a/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp b/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp index a0045a244f..4b52ad0071 100644 --- a/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp +++ b/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp @@ -218,6 +218,8 @@ private slots: void highlightItemGeometryChanges(); + void QTBUG_36481(); + private: template void items(const QUrl &source); template void changed(const QUrl &source); @@ -7058,6 +7060,15 @@ void tst_QQuickListView::highlightItemGeometryChanges() } } +void tst_QQuickListView::QTBUG_36481() +{ + QQmlEngine engine; + QQmlComponent component(&engine, testFileUrl("headerCrash.qml")); + + // just testing that we don't crash when creating + QScopedPointer object(component.create()); +} + QTEST_MAIN(tst_QQuickListView) #include "tst_qquicklistview.moc" -- cgit v1.2.3 From 8efc7c190b7cd57c3285ba8fcb9e17ea8f4717c2 Mon Sep 17 00:00:00 2001 From: John Brooks Date: Sun, 9 Feb 2014 02:34:25 -0700 Subject: Fix origin for short reversed item views Reversed (BottomToTop and RightToLeft) item views would report an impossible positive value for origin when contentHeight < height. The correct value will be effectively equivalent to the position of the footer, and always negative. Match other logic using lastPosition() by negating its value for reversed views. This fixes a bug with content disappearing in a Controls ScrollView on a BottomToTop view. Change-Id: Ieedbb64ce8fc7c0fb36e5256e437ddeb3e757761 Reviewed-by: Martin Jones --- .../quick/qquicklistview/tst_qquicklistview.cpp | 28 +++++++++++++++------- 1 file changed, 19 insertions(+), 9 deletions(-) (limited to 'tests/auto/quick/qquicklistview/tst_qquicklistview.cpp') diff --git a/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp b/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp index 4b52ad0071..97259e9fca 100644 --- a/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp +++ b/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp @@ -3919,7 +3919,8 @@ void tst_QQuickListView::extents() QFETCH(QPointF, minPos); QFETCH(QPointF, maxPos); QFETCH(QPointF, origin_empty); - QFETCH(QPointF, origin_nonEmpty); + QFETCH(QPointF, origin_short); + QFETCH(QPointF, origin_long); QQuickView *window = getView(); @@ -3956,12 +3957,20 @@ void tst_QQuickListView::extents() QCOMPARE(listview->originX(), origin_empty.x()); QCOMPARE(listview->originY(), origin_empty.y()); - for (int i=0; i<30; i++) + + for (int i=0; i<3; i++) + model.addItem("Item" + QString::number(i), ""); + listview->forceLayout(); + QTRY_COMPARE(listview->count(), model.count()); + QCOMPARE(listview->originX(), origin_short.x()); + QCOMPARE(listview->originY(), origin_short.y()); + + for (int i=3; i<30; i++) model.addItem("Item" + QString::number(i), ""); listview->forceLayout(); QTRY_COMPARE(listview->count(), model.count()); - QCOMPARE(listview->originX(), origin_nonEmpty.x()); - QCOMPARE(listview->originY(), origin_nonEmpty.y()); + QCOMPARE(listview->originX(), origin_long.x()); + QCOMPARE(listview->originY(), origin_long.y()); releaseView(window); } @@ -3976,7 +3985,8 @@ void tst_QQuickListView::extents_data() QTest::addColumn("minPos"); QTest::addColumn("maxPos"); QTest::addColumn("origin_empty"); - QTest::addColumn("origin_nonEmpty"); + QTest::addColumn("origin_short"); + QTest::addColumn("origin_long"); // header is 240x20 (or 20x320 in Horizontal orientation) // footer is 240x30 (or 30x320 in Horizontal orientation) @@ -3985,25 +3995,25 @@ void tst_QQuickListView::extents_data() << QQuickListView::Vertical << Qt::LeftToRight << QQuickItemView::TopToBottom << QPointF(0, -20) << QPointF(0, 0) << QPointF(0, 20) << QPointF(240, 20) - << QPointF(0, -20) << QPointF(0, -20); + << QPointF(0, -20) << QPointF(0, -20) << QPointF(0, -20); QTest::newRow("Vertical, BottomToTop") << QQuickListView::Vertical << Qt::LeftToRight << QQuickItemView::BottomToTop << QPointF(0, 0) << QPointF(0, -30) << QPointF(0, 320 - 20) << QPointF(240, 320 - 20) // content flow is reversed - << QPointF(0, -30) << QPointF(0, (-30.0 * 30) - 30); + << QPointF(0, -30) << QPointF(0, (-30.0 * 3) - 30) << QPointF(0, (-30.0 * 30) - 30); QTest::newRow("Horizontal, LeftToRight") << QQuickListView::Horizontal << Qt::LeftToRight << QQuickItemView::TopToBottom << QPointF(-20, 0) << QPointF(0, 0) << QPointF(20, 0) << QPointF(20, 320) - << QPointF(-20, 0) << QPointF(-20, 0); + << QPointF(-20, 0) << QPointF(-20, 0) << QPointF(-20, 0); QTest::newRow("Horizontal, RightToLeft") << QQuickListView::Horizontal << Qt::RightToLeft << QQuickItemView::TopToBottom << QPointF(0, 0) << QPointF(-30, 0) << QPointF(240 - 20, 0) << QPointF(240 - 20, 320) // content flow is reversed - << QPointF(-30, 0) << QPointF((-240.0 * 30) - 30, 0); + << QPointF(-30, 0) << QPointF((-240.0 * 3) - 30, 0) << QPointF((-240.0 * 30) - 30, 0); } void tst_QQuickListView::resetModel_headerFooter() -- cgit v1.2.3