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') 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 From fa063ccbc2bb2b88a6168f8794874cdea363e049 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Wed, 12 Oct 2016 16:45:12 +0200 Subject: qmltest: Fix build on Windows 32bit Define NOMINMAX for windows.h included via the private headers of the benchmark code to prevent it from clashing with qnumeric_p.h. Change-Id: I72daf23cda3ad67c580e14b8c92f97b5c97f8c58 Reviewed-by: Shawn Rutledge --- src/qmltest/quicktestresult.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/qmltest') diff --git a/src/qmltest/quicktestresult.cpp b/src/qmltest/quicktestresult.cpp index e05d29bc05..dd78b82dcb 100644 --- a/src/qmltest/quicktestresult.cpp +++ b/src/qmltest/quicktestresult.cpp @@ -46,6 +46,11 @@ #include #include "qtestoptions_p.h" #include +// qbenchmark_p.h pulls windows.h via 3rd party; prevent it from defining +// the min/max macros which would clash with qnumeric_p.h's usage of min()/max(). +#if defined(Q_OS_WIN32) && !defined(NOMINMAX) +# define NOMINMAX +#endif #include #include #include -- cgit v1.2.3