summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPeter Varga <pvarga@inf.u-szeged.hu>2016-09-28 11:20:54 +0200
committerShawn Rutledge <shawn.rutledge@qt.io>2016-12-16 19:18:07 +0000
commit8325808dcf0cc9061f05ec89b6c3e3afb8c1ab8f (patch)
tree018c23f1f6e9a215a1986e7340961d051b2c69aa /src
parent9bfe3ab71e5291445e66be96d6cd1f63934a2d83 (diff)
QTestLib: Add timestamp to mouse click events
Timestamp is necessary for testing custom mouse event handlers e.g. what Qt WebEngine uses for handling triple and quadruple mouse clicks. Based on commit 181ee8f9ffacc51265ccc3a0005bf146f230cf85 Task-number: QTBUG-56223 Change-Id: I2bf840f326255333eec83ca8c42f087cb7deb1fb Reviewed-by: Kai Koehne <kai.koehne@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/testlib/qtestmouse.h15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/testlib/qtestmouse.h b/src/testlib/qtestmouse.h
index 1143361323..166622e950 100644
--- a/src/testlib/qtestmouse.h
+++ b/src/testlib/qtestmouse.h
@@ -73,6 +73,11 @@ namespace QTest
extern Q_TESTLIB_EXPORT Qt::MouseButton lastMouseButton;
extern Q_TESTLIB_EXPORT int lastMouseTimestamp;
+ // This value is used to emulate timestamps to avoid creating double clicks by mistake.
+ // Use this constant instead of QStyleHints::mouseDoubleClickInterval property to avoid tests
+ // to depend on platform themes.
+ static const int mouseDoubleClickInterval = 500;
+
static void waitForEvents()
{
#ifdef Q_OS_MAC
@@ -125,7 +130,7 @@ namespace QTest
Q_FALLTHROUGH();
case MouseRelease:
qt_handleMouseEvent(w, pos, global, Qt::NoButton, stateKey, ++lastMouseTimestamp);
- lastMouseTimestamp += 500; // avoid double clicks being generated
+ lastMouseTimestamp += mouseDoubleClickInterval; // avoid double clicks being generated
lastMouseButton = Qt::NoButton;
break;
case MouseMove:
@@ -176,8 +181,10 @@ namespace QTest
if (delay == -1 || delay < defaultMouseDelay())
delay = defaultMouseDelay();
- if (delay > 0)
+ if (delay > 0) {
QTest::qWait(delay);
+ lastMouseTimestamp += delay;
+ }
if (action == MouseClick) {
mouseEvent(MousePress, widget, button, stateKey, pos);
@@ -194,12 +201,16 @@ namespace QTest
{
case MousePress:
me = QMouseEvent(QEvent::MouseButtonPress, pos, widget->mapToGlobal(pos), button, button, stateKey);
+ me.setTimestamp(++lastMouseTimestamp);
break;
case MouseRelease:
me = QMouseEvent(QEvent::MouseButtonRelease, pos, widget->mapToGlobal(pos), button, Qt::MouseButton(), stateKey);
+ me.setTimestamp(++lastMouseTimestamp);
+ lastMouseTimestamp += mouseDoubleClickInterval; // avoid double clicks being generated
break;
case MouseDClick:
me = QMouseEvent(QEvent::MouseButtonDblClick, pos, widget->mapToGlobal(pos), button, button, stateKey);
+ me.setTimestamp(++lastMouseTimestamp);
break;
case MouseMove:
QCursor::setPos(widget->mapToGlobal(pos));