From 4c46dce8fd9c9dddddd1d07f56396b3eabb2efc4 Mon Sep 17 00:00:00 2001 From: Albert Astals Cid Date: Wed, 28 Jun 2017 14:39:19 +0200 Subject: Make QtQuickTest::mouseEvent use QTest::mouseX Fixes QQuickItem::isUnderMouse returning wrong information when moving the mouse cursor with QtQuickTest::mouseX Also changes TestCase.mouseDrag to actually resemble more what real life does, i.e. send mouse moves with the same localPos if the item has already moved and update tst_drag.qml accordingly Change-Id: I80e4ab097da90d21ba987466c1b82467755a6b56 Reviewed-by: Shawn Rutledge --- src/imports/testlib/TestCase.qml | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) (limited to 'src/imports/testlib/TestCase.qml') diff --git a/src/imports/testlib/TestCase.qml b/src/imports/testlib/TestCase.qml index 7ff51bb6d6..9a279a3327 100644 --- a/src/imports/testlib/TestCase.qml +++ b/src/imports/testlib/TestCase.qml @@ -1321,15 +1321,27 @@ Item { if (ddy < (util.dragThreshold + 1)) ddy = 0 + var originalX = item.x; + var originalY = item.y; + mousePress(item, x, y, button, modifiers, delay) - //trigger dragging - mouseMove(item, x + util.dragThreshold + 1, y + util.dragThreshold + 1, moveDelay, button) + + // trigger dragging, this doesn't actually move the item yet + var triggerDragXPos = x + Math.min(util.dragThreshold + 1, dx); + var triggerDragYPos = y + Math.min(util.dragThreshold + 1, dy); + mouseMove(item, triggerDragXPos, triggerDragYPos, moveDelay, button) + if (ddx > 0 || ddy > 0) { - mouseMove(item, x + ddx, y + ddy, moveDelay, button) - mouseMove(item, x + 2*ddx, y + 2*ddy, moveDelay, button) + // move the item by ddx, ddy + mouseMove(item, triggerDragXPos + ddx, triggerDragYPos + ddy, moveDelay, button) + + // move the item by ddx, ddy again + // need to account for whether the previous move actually moved the item or not + mouseMove(item, triggerDragXPos + 2*ddx - (item.x - originalX), triggerDragYPos + 2*ddy - (item.y - originalY), moveDelay, button) } - mouseMove(item, x + dx, y + dy, moveDelay, button) - mouseRelease(item, x + dx, y + dy, button, modifiers, delay) + // Release, causes a final move + // need to account for whether the previous moves actually moved the item or not + mouseRelease(item, x + dx - (item.x - originalX), y + dy - (item.y - originalY), button, modifiers, delay) } /*! -- cgit v1.2.3