From af002b8df9b084fd7f26e9eead9844aab36bdc4d Mon Sep 17 00:00:00 2001 From: Peter Varga Date: Wed, 28 Sep 2016 11:28:49 +0200 Subject: testlib: 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 Qt Base commit 181ee8f9ffacc51265ccc3a0005bf146f230cf85 Task-number: QTBUG-56223 Change-Id: I84d0ca40767d0b1dccb33da1fb1f6ff5721d1096 Reviewed-by: Ulf Hermann Reviewed-by: Friedemann Kleint Reviewed-by: Frederik Gladhorn --- src/qmltest/quicktestevent.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src/qmltest/quicktestevent.cpp') diff --git a/src/qmltest/quicktestevent.cpp b/src/qmltest/quicktestevent.cpp index e71b4f8f54..b26d463445 100644 --- a/src/qmltest/quicktestevent.cpp +++ b/src/qmltest/quicktestevent.cpp @@ -118,6 +118,8 @@ namespace QtQuickTest { enum MouseAction { MousePress, MouseRelease, MouseClick, MouseDoubleClick, MouseMove, MouseDoubleClickSequence }; + int lastMouseTimestamp = 0; + static void mouseEvent(MouseAction action, QWindow *window, QObject *item, Qt::MouseButton button, Qt::KeyboardModifiers stateKey, QPointF _pos, int delay=-1) @@ -127,8 +129,10 @@ namespace QtQuickTest if (delay == -1 || delay < QTest::defaultMouseDelay()) delay = QTest::defaultMouseDelay(); - if (delay > 0) + if (delay > 0) { QTest::qWait(delay); + lastMouseTimestamp += delay; + } if (action == MouseClick) { mouseEvent(MousePress, window, item, button, stateKey, _pos); @@ -159,12 +163,16 @@ namespace QtQuickTest { case MousePress: me = QMouseEvent(QEvent::MouseButtonPress, pos, window->mapToGlobal(pos), button, button, stateKey); + me.setTimestamp(++lastMouseTimestamp); break; case MouseRelease: me = QMouseEvent(QEvent::MouseButtonRelease, pos, window->mapToGlobal(pos), button, 0, stateKey); + me.setTimestamp(++lastMouseTimestamp); + lastMouseTimestamp += 500; // avoid double clicks being generated break; case MouseDoubleClick: me = QMouseEvent(QEvent::MouseButtonDblClick, pos, window->mapToGlobal(pos), button, button, stateKey); + me.setTimestamp(++lastMouseTimestamp); break; case MouseMove: // with move event the button is NoButton, but 'buttons' holds the currently pressed buttons -- cgit v1.2.3