From 722c06318718f373a581e74913965b5dfa3979fb Mon Sep 17 00:00:00 2001 From: Aleix Pol Date: Thu, 24 Apr 2014 20:22:10 +0200 Subject: Process children first when delivering drag events [ChangeLog][QtQuick][Important Behavior Changes] Drag and Drop events now propagate to child items before their parents. Change-Id: I22832d707c7cb2461eaa94d659c5cc83506def8d Reviewed-by: Gunnar Sletta --- tests/auto/quick/qquickdrag/tst_qquickdrag.cpp | 27 +++++++------------------- 1 file changed, 7 insertions(+), 20 deletions(-) (limited to 'tests/auto/quick/qquickdrag/tst_qquickdrag.cpp') diff --git a/tests/auto/quick/qquickdrag/tst_qquickdrag.cpp b/tests/auto/quick/qquickdrag/tst_qquickdrag.cpp index 15282d4b02..410220899a 100644 --- a/tests/auto/quick/qquickdrag/tst_qquickdrag.cpp +++ b/tests/auto/quick/qquickdrag/tst_qquickdrag.cpp @@ -416,7 +416,7 @@ void tst_QQuickDrag::drop() QCOMPARE(evaluate(item, "dragActive"), true); QCOMPARE(evaluate(item, "Drag.target"), static_cast(&innerTarget)); QCOMPARE(evaluate(item, "dragTarget"), static_cast(&innerTarget)); - QCOMPARE(outerTarget.enterEvents, 1); QCOMPARE(outerTarget.leaveEvents, 0); QCOMPARE(outerTarget.dropEvents, 0); + QCOMPARE(outerTarget.enterEvents, 0); QCOMPARE(outerTarget.leaveEvents, 0); QCOMPARE(outerTarget.dropEvents, 0); QCOMPARE(innerTarget.enterEvents, 1); QCOMPARE(innerTarget.leaveEvents, 0); QCOMPARE(innerTarget.dropEvents, 0); innerTarget.reset(); outerTarget.reset(); @@ -425,7 +425,7 @@ void tst_QQuickDrag::drop() QCOMPARE(evaluate(item, "dragActive"), false); QCOMPARE(evaluate(item, "Drag.target"), static_cast(&innerTarget)); QCOMPARE(evaluate(item, "dragTarget"), static_cast(&innerTarget)); - QCOMPARE(outerTarget.enterEvents, 0); QCOMPARE(outerTarget.leaveEvents, 1); QCOMPARE(outerTarget.dropEvents, 0); + QCOMPARE(outerTarget.enterEvents, 0); QCOMPARE(outerTarget.leaveEvents, 0); QCOMPARE(outerTarget.dropEvents, 0); QCOMPARE(innerTarget.enterEvents, 0); QCOMPARE(innerTarget.leaveEvents, 0); QCOMPARE(innerTarget.dropEvents, 1); innerTarget.reset(); outerTarget.reset(); @@ -434,24 +434,13 @@ void tst_QQuickDrag::drop() QCOMPARE(evaluate(item, "dragActive"), true); QCOMPARE(evaluate(item, "Drag.target"), static_cast(&innerTarget)); QCOMPARE(evaluate(item, "dragTarget"), static_cast(&innerTarget)); - QCOMPARE(outerTarget.enterEvents, 1); QCOMPARE(outerTarget.leaveEvents, 0); QCOMPARE(outerTarget.dropEvents, 0); + QCOMPARE(outerTarget.enterEvents, 0); QCOMPARE(outerTarget.leaveEvents, 0); QCOMPARE(outerTarget.dropEvents, 0); QCOMPARE(innerTarget.enterEvents, 1); QCOMPARE(innerTarget.leaveEvents, 0); QCOMPARE(innerTarget.dropEvents, 0); - // Inner target declines the drop so it is propagated to the outer target. - innerTarget.accept = false; - - innerTarget.reset(); outerTarget.reset(); - QCOMPARE(evaluate(item, "Drag.drop() == Qt.CopyAction"), true); - QCOMPARE(evaluate(item, "Drag.active"), false); - QCOMPARE(evaluate(item, "dragActive"), false); - QCOMPARE(evaluate(item, "Drag.target"), static_cast(&outerTarget)); - QCOMPARE(evaluate(item, "dragTarget"), static_cast(&outerTarget)); - QCOMPARE(outerTarget.enterEvents, 0); QCOMPARE(outerTarget.leaveEvents, 0); QCOMPARE(outerTarget.dropEvents, 1); - QCOMPARE(innerTarget.enterEvents, 0); QCOMPARE(innerTarget.leaveEvents, 0); QCOMPARE(innerTarget.dropEvents, 1); - + evaluate(item, "Drag.active = false"); // Inner target doesn't accept enter so drop goes directly to outer. - innerTarget.accept = true; + innerTarget.accept = false; innerTarget.setFlags(QQuickItem::Flags()); innerTarget.reset(); outerTarget.reset(); @@ -584,10 +573,9 @@ void tst_QQuickDrag::move() QCoreApplication::processEvents(); QCOMPARE(evaluate(item, "Drag.target"), static_cast(&rightTarget)); QCOMPARE(evaluate(item, "dragTarget"), static_cast(&rightTarget)); - QCOMPARE(outerTarget.enterEvents, 0); QCOMPARE(outerTarget.leaveEvents, 0); QCOMPARE(outerTarget.moveEvents, 1); + QCOMPARE(outerTarget.enterEvents, 0); QCOMPARE(outerTarget.leaveEvents, 0); QCOMPARE(outerTarget.moveEvents, 0); QCOMPARE(leftTarget .enterEvents, 0); QCOMPARE(leftTarget .leaveEvents, 0); QCOMPARE(leftTarget .moveEvents, 0); QCOMPARE(rightTarget.enterEvents, 1); QCOMPARE(rightTarget.leaveEvents, 0); QCOMPARE(rightTarget.moveEvents, 0); - QCOMPARE(outerTarget.position.x(), qreal(75)); QCOMPARE(outerTarget.position.y(), qreal(50)); QCOMPARE(rightTarget.position.x(), qreal(5)); QCOMPARE(rightTarget.position.y(), qreal(15)); // Move into the left target. @@ -596,10 +584,9 @@ void tst_QQuickDrag::move() QCoreApplication::processEvents(); QCOMPARE(evaluate(item, "Drag.target"), static_cast(&leftTarget)); QCOMPARE(evaluate(item, "dragTarget"), static_cast(&leftTarget)); - QCOMPARE(outerTarget.enterEvents, 0); QCOMPARE(outerTarget.leaveEvents, 0); QCOMPARE(outerTarget.moveEvents, 1); + QCOMPARE(outerTarget.enterEvents, 0); QCOMPARE(outerTarget.leaveEvents, 0); QCOMPARE(outerTarget.moveEvents, 0); QCOMPARE(leftTarget .enterEvents, 1); QCOMPARE(leftTarget .leaveEvents, 0); QCOMPARE(leftTarget .moveEvents, 0); QCOMPARE(rightTarget.enterEvents, 0); QCOMPARE(rightTarget.leaveEvents, 1); QCOMPARE(rightTarget.moveEvents, 0); - QCOMPARE(outerTarget.position.x(), qreal(25)); QCOMPARE(outerTarget.position.y(), qreal(50)); QCOMPARE(leftTarget.position.x(), qreal(25)); QCOMPARE(leftTarget.position.y(), qreal(15)); // Move within the left target. -- cgit v1.2.3