diff options
author | Michael Brasser <michael.brasser@live.com> | 2015-07-07 16:51:55 -0500 |
---|---|---|
committer | Frederik Gladhorn <frederik.gladhorn@theqtcompany.com> | 2015-07-12 10:53:50 +0000 |
commit | e44843bfc8fc8bfd5c987fde08816ec3d81f0cae (patch) | |
tree | 26f24aa1f0f76a168338b0936c031980f462b168 /tests/auto/quick/qquickgridview | |
parent | 656ebe4316b42f79a464a3ea9b5801538a9609c4 (diff) |
Fix potential use of incorrect bounds in delegate tracking.
Using GridView.SnapToRow and GridView.ApplyRange with a top margin
could lead to the view jumping (rather than smoothly transitioning)
when changing the currentIndex.
Change-Id: I6936b378220f59e8d416f7531cf8b6906c723cb2
Task-number: QTBUG-45640
Reviewed-by: Martin Jones <martin.jones@qinetic.com.au>
Diffstat (limited to 'tests/auto/quick/qquickgridview')
-rw-r--r-- | tests/auto/quick/qquickgridview/data/qtbug45640.qml | 24 | ||||
-rw-r--r-- | tests/auto/quick/qquickgridview/tst_qquickgridview.cpp | 21 |
2 files changed, 45 insertions, 0 deletions
diff --git a/tests/auto/quick/qquickgridview/data/qtbug45640.qml b/tests/auto/quick/qquickgridview/data/qtbug45640.qml new file mode 100644 index 0000000000..6973773432 --- /dev/null +++ b/tests/auto/quick/qquickgridview/data/qtbug45640.qml @@ -0,0 +1,24 @@ +import QtQuick 2.0 + +GridView { + id: gridView + width: 400; height: 400 + cellHeight: 100 + cellWidth: 100 + model: 32 + + topMargin: 50 + snapMode: GridView.SnapToRow + preferredHighlightBegin: 50 + preferredHighlightEnd: 50 + highlightRangeMode: GridView.ApplyRange + + delegate: Rectangle { + width: 100 + height: 100 + color: index % 2 == 0 ? "#FFFF00" : "#0000FF" + } + + highlight: Rectangle { color: "red"; z: 2 } + highlightMoveDuration: 1000 +} diff --git a/tests/auto/quick/qquickgridview/tst_qquickgridview.cpp b/tests/auto/quick/qquickgridview/tst_qquickgridview.cpp index d53ee00b45..b8ad1948ed 100644 --- a/tests/auto/quick/qquickgridview/tst_qquickgridview.cpp +++ b/tests/auto/quick/qquickgridview/tst_qquickgridview.cpp @@ -209,6 +209,8 @@ private slots: void contentHeightWithDelayRemove_data(); void contentHeightWithDelayRemove(); + void QTBUG_45640(); + private: QList<int> toIntList(const QVariantList &list); void matchIndexLists(const QVariantList &indexLists, const QList<int> &expectedIndexes); @@ -6542,6 +6544,25 @@ void tst_QQuickGridView::contentHeightWithDelayRemove() delete window; } +void tst_QQuickGridView::QTBUG_45640() +{ + QQuickView *window = createView(); + window->setSource(testFileUrl("qtbug45640.qml")); + window->show(); + QVERIFY(QTest::qWaitForWindowExposed(window)); + + QQuickGridView *gridview = qobject_cast<QQuickGridView*>(window->rootObject()); + QVERIFY(gridview != 0); + + QCOMPARE(gridview->contentY(), qreal(-50.0)); + + gridview->moveCurrentIndexDown(); + + QTRY_VERIFY(gridview->contentY() > qreal(-50.0) && gridview->contentY() < qreal(0.0)); + + delete window; +} + QTEST_MAIN(tst_QQuickGridView) #include "tst_qquickgridview.moc" |