diff options
author | Leander Beernaert <leander.beernaert@qt.io> | 2020-01-16 16:25:06 +0100 |
---|---|---|
committer | Leander Beernaert <leander.beernaert@qt.io> | 2020-01-16 16:25:06 +0100 |
commit | 1d333d3375874efb8d37df37dc5ef561573794ad (patch) | |
tree | 2d8c995f64c05c84c1fcceb2c5cb40fcae69855f /tests/auto/quick/qquickpathview | |
parent | b106d86c433706928b0b0c206a0d9f831681e1bf (diff) | |
parent | e79a2658cde899d6ee11ec3c0d0a3768eb2c864b (diff) |
Merge remote-tracking branch 'origin/dev' into wip/cmake
Change-Id: I0c5b939c70bdb91ccdf7068784308416dcaa5736
Diffstat (limited to 'tests/auto/quick/qquickpathview')
-rw-r--r-- | tests/auto/quick/qquickpathview/data/ungrabNestedinFlickable.qml | 75 | ||||
-rw-r--r-- | tests/auto/quick/qquickpathview/tst_qquickpathview.cpp | 35 |
2 files changed, 110 insertions, 0 deletions
diff --git a/tests/auto/quick/qquickpathview/data/ungrabNestedinFlickable.qml b/tests/auto/quick/qquickpathview/data/ungrabNestedinFlickable.qml new file mode 100644 index 0000000000..4258d8fef4 --- /dev/null +++ b/tests/auto/quick/qquickpathview/data/ungrabNestedinFlickable.qml @@ -0,0 +1,75 @@ +import QtQuick 2.9 + +Flickable { + width: 480 + height: 480 + contentX: 0 + contentWidth: width + contentHeight: height + leftMargin: 408 + rightMargin: 36 + maximumFlickVelocity: 0 + boundsBehavior: Flickable.StopAtBounds + flickableDirection: Flickable.HorizontalFlick + + PathView { + id:pathView + objectName: "pathView" + + property int countclick: 0 + + readonly property int contentsWidth: 348 + readonly property int contentsHeight: 480 + + width: contentsWidth + height: contentsHeight + + interactive: true + + cacheItemCount: 10 + currentIndex: 2 + pathItemCount: 4 + highlightMoveDuration: 300 + highlightRangeMode : PathView.StrictlyEnforceRange + preferredHighlightBegin: 0.5 + preferredHighlightEnd: 0.5 + snapMode : PathView.SnapOneItem + + path: Path { + startX: pathView.contentsWidth / 2 - 800 + startY: pathView.contentsHeight / 2 - 800 + + PathArc { + x: pathView.contentsWidth / 2 - 800 + y: pathView.contentsHeight / 2 + 800 + radiusX: 800 + radiusY: 800 + direction: PathArc.Clockwise + } + } + + model: ListModel { + ListElement { objectName:"aqua"; name: "aqua" ;mycolor:"aqua"} + ListElement { objectName:"blue"; name: "blue" ;mycolor:"blue"} + ListElement { objectName:"blueviolet"; name: "blueviolet" ;mycolor:"blueviolet"} + ListElement { objectName:"brown"; name: "brown" ;mycolor:"brown"} + ListElement { objectName:"chartreuse"; name: "chartreuse" ;mycolor:"chartreuse"} + } + + delegate: Item { + id: revolveritem + objectName: model.objectName + + width: pathView.contentsWidth + height: pathView.contentsHeight + + Rectangle + { + id:myRectangle + color: mycolor + width: pathView.contentsWidth -20 + height: pathView.contentsHeight -20 + } + } + } +} diff --git a/tests/auto/quick/qquickpathview/tst_qquickpathview.cpp b/tests/auto/quick/qquickpathview/tst_qquickpathview.cpp index a8e847a5c7..8ba09fa509 100644 --- a/tests/auto/quick/qquickpathview/tst_qquickpathview.cpp +++ b/tests/auto/quick/qquickpathview/tst_qquickpathview.cpp @@ -140,6 +140,7 @@ private slots: void cacheItemCount(); void changePathDuringRefill(); void nestedinFlickable(); + void ungrabNestedinFlickable(); void flickableDelegate(); void jsArrayChange(); void qtbug37815(); @@ -2413,6 +2414,40 @@ void tst_QQuickPathView::nestedinFlickable() } +void tst_QQuickPathView::ungrabNestedinFlickable() +{ + QScopedPointer<QQuickView> window(createView()); + QQuickViewTestUtil::moveMouseAway(window.data()); + window->setSource(testFileUrl("ungrabNestedinFlickable.qml")); + window->show(); + window->requestActivate(); + QVERIFY(QTest::qWaitForWindowActive(window.data())); + QCOMPARE(window.data(), qGuiApp->focusWindow()); + + QQuickPathView *pathview = findItem<QQuickPathView>(window->rootObject(), "pathView"); + QVERIFY(pathview != nullptr); + + double pathviewOffsetBefore = pathview->offset(); + + // Drag slowly upwards so that it does not flick, release, and let it start snapping back + QTest::mousePress(window.data(), Qt::LeftButton, 0, QPoint(200, 350)); + for (int i = 0; i < 4; ++i) + QTest::mouseMove(window.data(), QPoint(200, 325 - i * 25), 500); + QTest::mouseRelease(window.data(), Qt::LeftButton, 0, QPoint(200, 250)); + QCOMPARE(pathview->isMoving(), true); + + // Press again to stop moving + QTest::mousePress(window.data(), Qt::LeftButton, 0, QPoint(200, 350)); + QTRY_COMPARE(pathview->isMoving(), false); + + // Cancel the grab, wait for movement to stop, and expect it to snap to + // the nearest delegate, which should be at the same offset as where we started + pathview->ungrabMouse(); + QTRY_COMPARE(pathview->offset(), pathviewOffsetBefore); + QCOMPARE(pathview->isMoving(), false); + QTest::mouseRelease(window.data(), Qt::LeftButton, 0, QPoint(200, 350)); +} + void tst_QQuickPathView::flickableDelegate() { QScopedPointer<QQuickView> window(createView()); |