aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/quick/qquickflickable/tst_qquickflickable.cpp
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2017-01-26 16:44:55 +0100
committerJ-P Nurmi <jpnurmi@qt.io>2017-02-08 08:01:34 +0000
commit6cfeabe92db25a10812a657f7f4fdadfb505204d (patch)
tree32956de018fa184a0547bc04593b750bc2ab55cf /tests/auto/quick/qquickflickable/tst_qquickflickable.cpp
parentce15c3af57858b9b8b0621398121691b20c6f638 (diff)
Flickable: handle child mouse ungrab when hidden or disabled
If Flickable got hidden while a child had mouse grab, it ignored the mouse ungrab event of the child mouse grabber, and got therefore stuck in pressed state. Consequently, item view transitions were not executed since the item view though it was being pressed. Task-number: QTBUG-58453 Change-Id: I76f9f3190c3a95a2fafdce036d69ea1dc8127434 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
Diffstat (limited to 'tests/auto/quick/qquickflickable/tst_qquickflickable.cpp')
-rw-r--r--tests/auto/quick/qquickflickable/tst_qquickflickable.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/tests/auto/quick/qquickflickable/tst_qquickflickable.cpp b/tests/auto/quick/qquickflickable/tst_qquickflickable.cpp
index 942e99018f..2555322e3e 100644
--- a/tests/auto/quick/qquickflickable/tst_qquickflickable.cpp
+++ b/tests/auto/quick/qquickflickable/tst_qquickflickable.cpp
@@ -80,6 +80,7 @@ private slots:
void disabled();
void flickVelocity();
void margins();
+ void cancelOnHide();
void cancelOnMouseGrab();
void clickAndDragWhenTransformed();
void flickTwiceUsingTouches();
@@ -1422,6 +1423,25 @@ void tst_qquickflickable::margins()
delete root;
}
+void tst_qquickflickable::cancelOnHide()
+{
+ QScopedPointer<QQuickView> window(new QQuickView);
+ window->setSource(testFileUrl("hide.qml"));
+ QTRY_COMPARE(window->status(), QQuickView::Ready);
+ QQuickViewTestUtil::centerOnScreen(window.data());
+ QQuickViewTestUtil::moveMouseAway(window.data());
+ window->show();
+ QVERIFY(QTest::qWaitForWindowActive(window.data()));
+ QVERIFY(window->rootObject());
+
+ QQuickFlickable *flickable = qobject_cast<QQuickFlickable*>(window->rootObject());
+ QVERIFY(flickable);
+
+ QTest::mouseDClick(window.data(), Qt::LeftButton);
+ QVERIFY(!flickable->isVisible());
+ QVERIFY(!QQuickFlickablePrivate::get(flickable)->pressed);
+}
+
void tst_qquickflickable::cancelOnMouseGrab()
{
QScopedPointer<QQuickView> window(new QQuickView);