aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/quick/qquickmousearea
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/quick/qquickmousearea')
-rw-r--r--tests/auto/quick/qquickmousearea/data/setDragOnPressed.qml18
-rw-r--r--tests/auto/quick/qquickmousearea/tst_qquickmousearea.cpp49
2 files changed, 67 insertions, 0 deletions
diff --git a/tests/auto/quick/qquickmousearea/data/setDragOnPressed.qml b/tests/auto/quick/qquickmousearea/data/setDragOnPressed.qml
new file mode 100644
index 0000000000..fc57319d75
--- /dev/null
+++ b/tests/auto/quick/qquickmousearea/data/setDragOnPressed.qml
@@ -0,0 +1,18 @@
+import QtQuick 2.0
+
+MouseArea {
+ width: 200; height: 200
+
+ Item {
+ id: dragTarget
+ objectName: "target"
+ x: 50; y: 50
+ width: 100; height: 100
+ }
+
+ onPressed: {
+ drag.target = dragTarget
+ drag.axis = Drag.XAxis
+ }
+ onReleased: drag.target = null
+}
diff --git a/tests/auto/quick/qquickmousearea/tst_qquickmousearea.cpp b/tests/auto/quick/qquickmousearea/tst_qquickmousearea.cpp
index 476ce8144a..2457ba727a 100644
--- a/tests/auto/quick/qquickmousearea/tst_qquickmousearea.cpp
+++ b/tests/auto/quick/qquickmousearea/tst_qquickmousearea.cpp
@@ -59,6 +59,7 @@ private slots:
void dragProperties();
void resetDrag();
void dragging();
+ void setDragOnPressed();
void updateMouseAreaPosOnClick();
void updateMouseAreaPosOnResize();
void noOnClickedWithPressAndHold();
@@ -255,6 +256,54 @@ void tst_QQuickMouseArea::dragging()
delete canvas;
}
+void tst_QQuickMouseArea::setDragOnPressed()
+{
+ QQuickView *canvas = createView();
+
+ canvas->setSource(testFileUrl("setDragOnPressed.qml"));
+ canvas->show();
+ canvas->requestActivateWindow();
+ QTest::qWait(20);
+ QVERIFY(canvas->rootObject() != 0);
+
+ QQuickMouseArea *mouseArea = qobject_cast<QQuickMouseArea *>(canvas->rootObject());
+ QVERIFY(mouseArea);
+
+ // target
+ QQuickItem *target = mouseArea->findChild<QQuickItem*>("target");
+ QVERIFY(target);
+
+ QTest::mousePress(canvas, Qt::LeftButton, 0, QPoint(100,100));
+
+ QQuickDrag *drag = mouseArea->drag();
+ QVERIFY(drag);
+ QVERIFY(!drag->active());
+
+ QCOMPARE(target->x(), 50.0);
+ QCOMPARE(target->y(), 50.0);
+
+ // First move event triggers drag, second is acted upon.
+ // This is due to possibility of higher stacked area taking precedence.
+
+ QTest::mouseMove(canvas, QPoint(111,102));
+ QTest::qWait(50);
+ QTest::mouseMove(canvas, QPoint(122,122));
+ QTest::qWait(50);
+
+ QVERIFY(drag->active());
+ QCOMPARE(target->x(), 72.0);
+ QCOMPARE(target->y(), 50.0);
+
+ QTest::mouseRelease(canvas, Qt::LeftButton, 0, QPoint(122,122));
+ QTest::qWait(50);
+
+ QVERIFY(!drag->active());
+ QCOMPARE(target->x(), 72.0);
+ QCOMPARE(target->y(), 50.0);
+
+ delete canvas;
+}
+
QQuickView *tst_QQuickMouseArea::createView()
{
QQuickView *canvas = new QQuickView(0);