aboutsummaryrefslogtreecommitdiffstats
path: root/src/qmltest
diff options
context:
space:
mode:
authorJani Heikkinen <jani.heikkinen@qt.io>2017-09-01 10:59:54 +0000
committerShawn Rutledge <shawn.rutledge@qt.io>2017-09-04 08:20:19 +0000
commit8f93d3627a9b76bf77896501129990e33a77f32c (patch)
tree9514c93c51c2bfe433ec2e04e3e6861bc8d91dcf /src/qmltest
parent7c54910a660dfe8e8b9fa20a82a93fcda2eb198f (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')
-rw-r--r--src/qmltest/quicktestevent.cpp40
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)