Commit af002b8d authored by Peter Varga's avatar Peter Varga
Browse files

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: default avatarUlf Hermann <ulf.hermann@qt.io>
Reviewed-by: default avatarFriedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: default avatarFrederik Gladhorn <frederik.gladhorn@qt.io>
Showing with 9 additions and 1 deletion
......@@ -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
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment