diff options
author | Shawn Rutledge <shawn.rutledge@qt.io> | 2016-08-19 10:01:30 +0200 |
---|---|---|
committer | Shawn Rutledge <shawn.rutledge@qt.io> | 2016-08-19 12:50:28 +0000 |
commit | 01a9c006b0cb3f9ec7c140d25e6bfa3ca6250a4c (patch) | |
tree | 5855832ad2bcfd064808c1f33c10dbcc5f317b73 /src | |
parent | 4a9635b0bfdc6a189375bc48e68b00bd05e15c82 (diff) |
TestCase::mouseDrag: set mouse move delay >= 1 ms
Infinite-speed drags do not work well with velocity-sensitive
components like Flickable. As with change d04982dc on qtbase,
adding a short delay helps to stabilize tests.
To keep it flexible, we make QTest::defaultMouseDelay()
available via the qtest_events.defaultMouseDelay property.
So the delay can be increased by passing a larger delay
value to mouseDrag, or by changing the QTEST_MOUSEEVENT_DELAY
environment variable (as before).
Task-number: QTBUG-55382
Change-Id: I8f8088758a206be104a439ee0d1832eeca574e8c
Reviewed-by: Liang Qi <liang.qi@qt.io>
Reviewed-by: Jan Arve Sæther <jan-arve.saether@theqtcompany.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/imports/testlib/TestCase.qml | 9 | ||||
-rw-r--r-- | src/qmltest/quicktestevent.cpp | 13 | ||||
-rw-r--r-- | src/qmltest/quicktestevent_p.h | 2 |
3 files changed, 16 insertions, 8 deletions
diff --git a/src/imports/testlib/TestCase.qml b/src/imports/testlib/TestCase.qml index c736a1a93a..46a395308d 100644 --- a/src/imports/testlib/TestCase.qml +++ b/src/imports/testlib/TestCase.qml @@ -1047,6 +1047,7 @@ Item { modifiers = Qt.NoModifier if (delay == undefined) delay = -1 + var moveDelay = Math.max(1, delay === -1 ? qtest_events.defaultMouseDelay : delay) // Divide dx and dy to have intermediate mouseMove while dragging // Fractions of dx/dy need be superior to the dragThreshold @@ -1060,12 +1061,12 @@ Item { mousePress(item, x, y, button, modifiers, delay) //trigger dragging - mouseMove(item, x + util.dragThreshold + 1, y + util.dragThreshold + 1, delay, button) + mouseMove(item, x + util.dragThreshold + 1, y + util.dragThreshold + 1, moveDelay, button) if (ddx > 0 || ddy > 0) { - mouseMove(item, x + ddx, y + ddy, delay, button) - mouseMove(item, x + 2*ddx, y + 2*ddy, delay, button) + mouseMove(item, x + ddx, y + ddy, moveDelay, button) + mouseMove(item, x + 2*ddx, y + 2*ddy, moveDelay, button) } - mouseMove(item, x + dx, y + dy, delay, button) + mouseMove(item, x + dx, y + dy, moveDelay, button) mouseRelease(item, x + dx, y + dy, button, modifiers, delay) } diff --git a/src/qmltest/quicktestevent.cpp b/src/qmltest/quicktestevent.cpp index cfa80c4f19..e71b4f8f54 100644 --- a/src/qmltest/quicktestevent.cpp +++ b/src/qmltest/quicktestevent.cpp @@ -39,6 +39,10 @@ QT_BEGIN_NAMESPACE +namespace QTest { + extern int Q_TESTLIB_EXPORT defaultMouseDelay(); +} + QuickTestEvent::QuickTestEvent(QObject *parent) : QObject(parent) { @@ -48,6 +52,11 @@ QuickTestEvent::~QuickTestEvent() { } +int QuickTestEvent::defaultMouseDelay() const +{ + return QTest::defaultMouseDelay(); +} + bool QuickTestEvent::keyPress(int key, int modifiers, int delay) { QWindow *window = activeWindow(); @@ -105,10 +114,6 @@ bool QuickTestEvent::keyClickChar(const QString &character, int modifiers, int d return true; } -namespace QTest { - extern int Q_TESTLIB_EXPORT defaultMouseDelay(); -}; - namespace QtQuickTest { enum MouseAction { MousePress, MouseRelease, MouseClick, MouseDoubleClick, MouseMove, MouseDoubleClickSequence }; diff --git a/src/qmltest/quicktestevent_p.h b/src/qmltest/quicktestevent_p.h index 0cba644cba..0a08347db8 100644 --- a/src/qmltest/quicktestevent_p.h +++ b/src/qmltest/quicktestevent_p.h @@ -53,9 +53,11 @@ QT_BEGIN_NAMESPACE class Q_QUICK_TEST_EXPORT QuickTestEvent : public QObject { Q_OBJECT + Q_PROPERTY(int defaultMouseDelay READ defaultMouseDelay FINAL) public: QuickTestEvent(QObject *parent = 0); ~QuickTestEvent(); + int defaultMouseDelay() const; public Q_SLOTS: bool keyPress(int key, int modifiers, int delay); |