aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/declarative/qsgdroparea/tst_qsgdroparea.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/declarative/qsgdroparea/tst_qsgdroparea.cpp')
-rw-r--r--tests/auto/declarative/qsgdroparea/tst_qsgdroparea.cpp82
1 files changed, 65 insertions, 17 deletions
diff --git a/tests/auto/declarative/qsgdroparea/tst_qsgdroparea.cpp b/tests/auto/declarative/qsgdroparea/tst_qsgdroparea.cpp
index 4fa6704611..57cedcc414 100644
--- a/tests/auto/declarative/qsgdroparea/tst_qsgdroparea.cpp
+++ b/tests/auto/declarative/qsgdroparea/tst_qsgdroparea.cpp
@@ -119,7 +119,8 @@ void tst_QSGDropArea::containsDrag_internal()
"width: 10; height: 10\n"
"}\n"
"}", QUrl());
- QSGItem *dropArea = qobject_cast<QSGItem *>(component.create());
+ QScopedPointer<QObject> object(component.create());
+ QSGItem *dropArea = qobject_cast<QSGItem *>(object.data());
QVERIFY(dropArea);
dropArea->setParentItem(canvas.rootItem());
@@ -182,8 +183,8 @@ void tst_QSGDropArea::containsDrag_external()
"onEntered: {++enterEvents}\n"
"onExited: {++exitEvents}\n"
"}", QUrl());
- QSGItem *dropArea = qobject_cast<QSGItem *>(component.create());
- QVERIFY(dropArea);
+ QScopedPointer<QObject> object(component.create());
+ QSGItem *dropArea = qobject_cast<QSGItem *>(object.data());
dropArea->setParentItem(canvas.rootItem());
QMimeData data;
@@ -249,8 +250,8 @@ void tst_QSGDropArea::keys_internal()
"Drag.keys: [\"red\", \"blue\"]\n"
"}\n"
"}", QUrl());
- QSGItem *dropArea = qobject_cast<QSGItem *>(component.create());
- QVERIFY(dropArea);
+ QScopedPointer<QObject> object(component.create());
+ QSGItem *dropArea = qobject_cast<QSGItem *>(object.data());
dropArea->setParentItem(canvas.rootItem());
QSGItem *dragItem = dropArea->findChild<QSGItem *>("dragItem");
@@ -308,6 +309,32 @@ void tst_QSGDropArea::keys_internal()
evaluate<void>(dragItem, "Drag.active = true");
QCOMPARE(evaluate<bool>(dropArea, "containsDrag"), false);
QCOMPARE(evaluate<int>(dropArea, "enterEvents"), 0);
+
+ evaluate<void>(dragItem, "Drag.active = false");
+ evaluate<void>(dropArea, "keys = []");
+ QCOMPARE(dropArea->property("keys").toStringList(), QStringList());
+ QCOMPARE(dropArea->property("dropKeys").toStringList(), QStringList());
+ evaluate<void>(dropArea, "{ enterEvents = 0; dragKeys = undefined }");
+ evaluate<void>(dragItem, "Drag.active = true");
+ QCOMPARE(evaluate<bool>(dropArea, "containsDrag"), true);
+ QCOMPARE(evaluate<int>(dropArea, "enterEvents"), 1);
+ QCOMPARE(dropArea->property("dragKeys").toStringList(), QStringList());
+
+ evaluate<void>(dragItem, "Drag.active = false");
+ evaluate<void>(dropArea, "keys = []");
+ evaluate<void>(dropArea, "{ enterEvents = 0; dragKeys = undefined }");
+ evaluate<void>(dragItem, "Drag.active = true");
+ QCOMPARE(evaluate<bool>(dropArea, "containsDrag"), true);
+ QCOMPARE(evaluate<int>(dropArea, "enterEvents"), 1);
+ QCOMPARE(dropArea->property("dragKeys").toStringList(), QStringList());
+
+ evaluate<void>(dragItem, "Drag.active = false");
+ evaluate<void>(dragItem, "Drag.keys = [\"red\", \"blue\"]");
+ evaluate<void>(dropArea, "{ enterEvents = 0; dragKeys = undefined }");
+ evaluate<void>(dragItem, "Drag.active = true");
+ QCOMPARE(evaluate<bool>(dropArea, "containsDrag"), true);
+ QCOMPARE(evaluate<int>(dropArea, "enterEvents"), 1);
+ QCOMPARE(dropArea->property("dragKeys").toStringList(), QStringList() << "red" << "blue");
}
void tst_QSGDropArea::keys_external()
@@ -323,8 +350,8 @@ void tst_QSGDropArea::keys_external()
"width: 100; height: 100\n"
"onEntered: {++enterEvents; dragKeys = drag.keys }\n"
"}", QUrl());
- QSGItem *dropArea = qobject_cast<QSGItem *>(component.create());
- QVERIFY(dropArea);
+ QScopedPointer<QObject> object(component.create());
+ QSGItem *dropArea = qobject_cast<QSGItem *>(object.data());
dropArea->setParentItem(canvas.rootItem());
QMimeData data;
@@ -387,6 +414,27 @@ void tst_QSGDropArea::keys_external()
QCOMPARE(evaluate<bool>(dropArea, "containsDrag"), false);
QCOMPARE(evaluate<int>(dropArea, "enterEvents"), 0);
+ QWindowSystemInterface::handleDrag(&alternateCanvas, &data, QPoint(50, 50));
+ evaluate<void>(dropArea, "keys = []");
+ QCOMPARE(dropArea->property("keys").toStringList(), QStringList());
+ QCOMPARE(dropArea->property("dropKeys").toStringList(), QStringList());
+ evaluate<void>(dropArea, "{ enterEvents = 0; dragKeys = undefined }");
+ QWindowSystemInterface::handleDrag(&canvas, &data, QPoint(50, 50));
+ QCOMPARE(evaluate<bool>(dropArea, "containsDrag"), true);
+ QCOMPARE(evaluate<int>(dropArea, "enterEvents"), 1);
+ QCOMPARE(dropArea->property("dragKeys").toStringList(), QStringList());
+
+ QWindowSystemInterface::handleDrag(&alternateCanvas, &data, QPoint(50, 50));
+ data.setData("text/x-red", "red");
+ data.setData("text/x-blue", "blue");
+ QCOMPARE(dropArea->property("keys").toStringList(), QStringList());
+ QCOMPARE(dropArea->property("dropKeys").toStringList(), QStringList());
+ evaluate<void>(dropArea, "{ enterEvents = 0; dragKeys = undefined }");
+ QWindowSystemInterface::handleDrag(&canvas, &data, QPoint(50, 50));
+ QCOMPARE(evaluate<bool>(dropArea, "containsDrag"), true);
+ QCOMPARE(evaluate<int>(dropArea, "enterEvents"), 1);
+ QCOMPARE(dropArea->property("dragKeys").toStringList(), QStringList() << "text/x-red" << "text/x-blue");
+
QWindowSystemInterface::handleDrop(&canvas, &data, QPoint(50, 50));
}
@@ -408,8 +456,8 @@ void tst_QSGDropArea::source_internal()
"}\n"
"Item { id: dragSource; objectName: \"dragSource\" }\n"
"}", QUrl());
- QSGItem *dropArea = qobject_cast<QSGItem *>(component.create());
- QVERIFY(dropArea);
+ QScopedPointer<QObject> object(component.create());
+ QSGItem *dropArea = qobject_cast<QSGItem *>(object.data());
dropArea->setParentItem(canvas.rootItem());
QSGItem *dragItem = dropArea->findChild<QSGItem *>("dragItem");
@@ -472,8 +520,8 @@ void tst_QSGDropArea::position_internal()
"width: 10; height: 10\n"
"}\n"
"}", QUrl());
- QSGItem *dropArea = qobject_cast<QSGItem *>(component.create());
- QVERIFY(dropArea);
+ QScopedPointer<QObject> object(component.create());
+ QSGItem *dropArea = qobject_cast<QSGItem *>(object.data());
dropArea->setParentItem(canvas.rootItem());
QSGItem *dragItem = dropArea->findChild<QSGItem *>("dragItem");
@@ -531,8 +579,8 @@ void tst_QSGDropArea::position_external()
"onEntered: {++enterEvents; eventX = drag.x; eventY = drag.y}\n"
"onPositionChanged: {++moveEvents; eventX = drag.x; eventY = drag.y}\n"
"}", QUrl());
- QSGItem *dropArea = qobject_cast<QSGItem *>(component.create());
- QVERIFY(dropArea);
+ QScopedPointer<QObject> object(component.create());
+ QSGItem *dropArea = qobject_cast<QSGItem *>(object.data());
dropArea->setParentItem(canvas.rootItem());
QMimeData data;
@@ -607,8 +655,8 @@ void tst_QSGDropArea::drop_internal()
"width: 10; height: 10\n"
"}\n"
"}", QUrl());
- QSGItem *dropArea = qobject_cast<QSGItem *>(component.create());
- QVERIFY(dropArea);
+ QScopedPointer<QObject> object(component.create());
+ QSGItem *dropArea = qobject_cast<QSGItem *>(object.data());
dropArea->setParentItem(canvas.rootItem());
QSGItem *dragItem = dropArea->findChild<QSGItem *>("dragItem");
@@ -745,8 +793,8 @@ void tst_QSGDropArea::simultaneousDrags()
"}\n"
"}", QUrl());
- QSGItem *dropArea1 = qobject_cast<QSGItem *>(component.create());
- QVERIFY(dropArea1);
+ QScopedPointer<QObject> object(component.create());
+ QSGItem *dropArea1 = qobject_cast<QSGItem *>(object.data());
dropArea1->setParentItem(canvas.rootItem());
QSGItem *dropArea2 = dropArea1->findChild<QSGItem *>("dropArea2");