diff options
author | Jani Heikkinen <jani.heikkinen@qt.io> | 2017-09-01 10:59:54 +0000 |
---|---|---|
committer | Shawn Rutledge <shawn.rutledge@qt.io> | 2017-09-04 08:20:19 +0000 |
commit | 8f93d3627a9b76bf77896501129990e33a77f32c (patch) | |
tree | 9514c93c51c2bfe433ec2e04e3e6861bc8d91dcf /src/qmltest/quicktestevent.cpp | |
parent | 7c54910a660dfe8e8b9fa20a82a93fcda2eb198f (diff) |
Revert "Make QtQuickTest::mouseEvent use QTest::mouseX"
It seems this is causing QTBUG-62925 and QTBUG-62926 so revert
is the best option at this point to proceed
This reverts commit 4c46dce8fd9c9dddddd1d07f56396b3eabb2efc4.
Change-Id: Ia8ea85c1ac1ada1752b29c9fbd8439f5963d46d2
Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Diffstat (limited to 'src/qmltest/quicktestevent.cpp')
-rw-r--r-- | src/qmltest/quicktestevent.cpp | 40 |
1 files changed, 23 insertions, 17 deletions
diff --git a/src/qmltest/quicktestevent.cpp b/src/qmltest/quicktestevent.cpp index 09b7c95eef..663d3c64e1 100644 --- a/src/qmltest/quicktestevent.cpp +++ b/src/qmltest/quicktestevent.cpp @@ -39,7 +39,6 @@ #include "quicktestevent_p.h" #include <QtTest/qtestkeyboard.h> -#include <QtTest/qtestmouse.h> #include <QtQml/qqml.h> #include <QtQuick/qquickitem.h> #include <QtQuick/qquickwindow.h> @@ -126,6 +125,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, const QPointF &_pos, int delay=-1) @@ -137,7 +138,7 @@ namespace QtQuickTest delay = QTest::defaultMouseDelay(); if (delay > 0) { QTest::qWait(delay); - QTest::lastMouseTimestamp += delay; + lastMouseTimestamp += delay; } if (action == MouseClick) { @@ -164,32 +165,37 @@ namespace QtQuickTest stateKey &= static_cast<unsigned int>(Qt::KeyboardModifierMask); - if (action == MouseDoubleClick) { - // the QWindow variant of QTest::mouseEvent doesn't have MouseDoubleClick as event - // its MouseDClick is actually like the MouseDoubleClickSequence here - QMouseEvent me(QEvent::MouseButtonDblClick, pos, window->mapToGlobal(pos), button, button, stateKey); - me.setTimestamp(++QTest::lastMouseTimestamp); - QSpontaneKeyEvent::setSpontaneous(&me); - if (!qApp->notify(window, &me)) { - QWARN("Mouse event \"MouseDoubleClick\" not accepted by receiving window"); - } - return; - } - + QMouseEvent me(QEvent::User, QPoint(), Qt::LeftButton, button, stateKey); switch (action) { case MousePress: - QTest::mousePress(window, button, stateKey, pos, /*delay*/ 0); + me = QMouseEvent(QEvent::MouseButtonPress, pos, window->mapToGlobal(pos), button, button, stateKey); + me.setTimestamp(++lastMouseTimestamp); break; case MouseRelease: - QTest::mouseRelease(window, button, stateKey, pos, /*delay*/ 0); + 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: - QTest::mouseMove(window, pos, /*delay*/ 0); + // with move event the button is NoButton, but 'buttons' holds the currently pressed buttons + me = QMouseEvent(QEvent::MouseMove, pos, window->mapToGlobal(pos), Qt::NoButton, button, stateKey); + me.setTimestamp(++lastMouseTimestamp); break; default: QTEST_ASSERT(false); } + QSpontaneKeyEvent::setSpontaneous(&me); + if (!qApp->notify(window, &me)) { + static const char *mouseActionNames[] = + { "MousePress", "MouseRelease", "MouseClick", "MouseDoubleClick", "MouseMove", "MouseDoubleClickSequence" }; + QString warning = QString::fromLatin1("Mouse event \"%1\" not accepted by receiving window"); + QWARN(warning.arg(QString::fromLatin1(mouseActionNames[static_cast<int>(action)])).toLatin1().data()); + } } #if QT_CONFIG(wheelevent) |