aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/quick/qquickmousearea
diff options
context:
space:
mode:
authorRobin Burchell <robin.burchell@jollamobile.com>2013-11-25 23:55:22 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-11-30 00:56:22 +0100
commit7a94cd02f7f45a4b58b494ec81fa425725ca9e0c (patch)
tree9dcec7f354781448107d4387df5dd738b021e60b /tests/auto/quick/qquickmousearea
parent0aadcf8077840068eb182269e9ed9c31ad12f45e (diff)
When the MouseArea loses grab, an active drag should be cancelled.
Change-Id: Icc784dd3265c211d9b077b692464591a41976354 Reviewed-by: Alan Alpert (Personal) <416365416c@gmail.com>
Diffstat (limited to 'tests/auto/quick/qquickmousearea')
-rw-r--r--tests/auto/quick/qquickmousearea/tst_qquickmousearea.cpp52
1 files changed, 52 insertions, 0 deletions
diff --git a/tests/auto/quick/qquickmousearea/tst_qquickmousearea.cpp b/tests/auto/quick/qquickmousearea/tst_qquickmousearea.cpp
index 72639556ec..31b323af5d 100644
--- a/tests/auto/quick/qquickmousearea/tst_qquickmousearea.cpp
+++ b/tests/auto/quick/qquickmousearea/tst_qquickmousearea.cpp
@@ -89,6 +89,7 @@ private slots:
void dragThreshold();
void invalidDrag_data() { rejectedButton_data(); }
void invalidDrag();
+ void cancelDragging();
void setDragOnPressed();
void updateMouseAreaPosOnClick();
void updateMouseAreaPosOnResize();
@@ -440,6 +441,57 @@ void tst_QQuickMouseArea::invalidDrag()
QCOMPARE(blackRect->y(), 50.0);
}
+void tst_QQuickMouseArea::cancelDragging()
+{
+ QQuickView window;
+ QByteArray errorMessage;
+ QVERIFY2(initView(window, testFileUrl("dragging.qml"), true, &errorMessage), errorMessage.constData());
+
+ window.show();
+ QVERIFY(QTest::qWaitForWindowExposed(&window));
+ QVERIFY(window.rootObject() != 0);
+
+ QQuickMouseArea *mouseRegion = window.rootObject()->findChild<QQuickMouseArea*>("mouseregion");
+ QQuickDrag *drag = mouseRegion->drag();
+ QVERIFY(mouseRegion != 0);
+ QVERIFY(drag != 0);
+
+ mouseRegion->setAcceptedButtons(Qt::LeftButton);
+
+ // target
+ QQuickItem *blackRect = window.rootObject()->findChild<QQuickItem*>("blackrect");
+ QVERIFY(blackRect != 0);
+ QVERIFY(blackRect == drag->target());
+
+ QVERIFY(!drag->active());
+
+ QTest::mousePress(&window, Qt::LeftButton, 0, QPoint(100,100));
+
+ QVERIFY(!drag->active());
+ QCOMPARE(blackRect->x(), 50.0);
+ QCOMPARE(blackRect->y(), 50.0);
+
+ QTest::mouseMove(&window, QPoint(111,111), 50);
+ QTest::mouseMove(&window, QPoint(116,116), 50);
+ QTest::mouseMove(&window, QPoint(122,122), 50);
+
+ QTRY_VERIFY(drag->active());
+ QTRY_COMPARE(blackRect->x(), 61.0);
+ QCOMPARE(blackRect->y(), 61.0);
+
+ mouseRegion->QQuickItem::ungrabMouse();
+ QTRY_VERIFY(!drag->active());
+ QCOMPARE(blackRect->x(), 61.0);
+ QCOMPARE(blackRect->y(), 61.0);
+
+ QTest::mouseMove(&window, QPoint(132,132), 50);
+ QTRY_VERIFY(!drag->active());
+ QCOMPARE(blackRect->x(), 61.0);
+ QCOMPARE(blackRect->y(), 61.0);
+
+ QTest::mouseRelease(&window, Qt::LeftButton, 0, QPoint(122,122));
+}
+
void tst_QQuickMouseArea::setDragOnPressed()
{
QQuickView window;