summaryrefslogtreecommitdiffstats
path: root/src/testlib
diff options
context:
space:
mode:
Diffstat (limited to 'src/testlib')
-rw-r--r--src/testlib/qtestcase.cpp6
-rw-r--r--src/testlib/qtestmouse.h26
2 files changed, 24 insertions, 8 deletions
diff --git a/src/testlib/qtestcase.cpp b/src/testlib/qtestcase.cpp
index 497470464f..7e9c03dbd4 100644
--- a/src/testlib/qtestcase.cpp
+++ b/src/testlib/qtestcase.cpp
@@ -268,6 +268,11 @@ static bool isValidSlot(const QMetaMethod &sl)
|| name == "init" || name == "cleanup");
}
+namespace QTestPrivate
+{
+ Q_TESTLIB_EXPORT Qt::MouseButtons qtestMouseButtons = Qt::NoButton;
+}
+
namespace QTest
{
class WatchDog;
@@ -1074,6 +1079,7 @@ bool TestMethods::invokeTest(int index, const char *data, WatchDog *watchDog) co
QTestDataSetter s(curDataIndex >= dataCount ? static_cast<QTestData *>(0)
: table.testData(curDataIndex));
+ QTestPrivate::qtestMouseButtons = Qt::NoButton;
if (watchDog)
watchDog->beginTest();
invokeTestOnData(index);
diff --git a/src/testlib/qtestmouse.h b/src/testlib/qtestmouse.h
index fa524fd8ca..e2835828a1 100644
--- a/src/testlib/qtestmouse.h
+++ b/src/testlib/qtestmouse.h
@@ -68,11 +68,16 @@ Q_GUI_EXPORT void qt_handleMouseEvent(QWindow *window, const QPointF &local, con
Qt::MouseButtons state, Qt::MouseButton button,
QEvent::Type type, Qt::KeyboardModifiers mods, int timestamp);
+namespace QTestPrivate
+{
+ extern Q_TESTLIB_EXPORT Qt::MouseButtons qtestMouseButtons;
+}
+
namespace QTest
{
enum MouseAction { MousePress, MouseRelease, MouseClick, MouseDClick, MouseMove };
- extern Q_TESTLIB_EXPORT Qt::MouseButton lastMouseButton;
+ extern Q_TESTLIB_EXPORT Qt::MouseButton lastMouseButton; // ### unsued
extern Q_TESTLIB_EXPORT int lastMouseTimestamp;
// This value is used to emulate timestamps to avoid creating double clicks by mistake.
@@ -117,30 +122,35 @@ namespace QTest
QPointF global = window->mapToGlobal(pos);
QPointer<QWindow> w(window);
+ using namespace QTestPrivate;
switch (action)
{
case MouseDClick:
- qt_handleMouseEvent(w, pos, global, button, button, QEvent::MouseButtonPress,
+ qtestMouseButtons.setFlag(button, true);
+ qt_handleMouseEvent(w, pos, global, qtestMouseButtons, button, QEvent::MouseButtonPress,
stateKey, ++lastMouseTimestamp);
- qt_handleMouseEvent(w, pos, global, Qt::NoButton, button, QEvent::MouseButtonRelease,
+ qtestMouseButtons.setFlag(button, false);
+ qt_handleMouseEvent(w, pos, global, qtestMouseButtons, button, QEvent::MouseButtonRelease,
stateKey, ++lastMouseTimestamp);
Q_FALLTHROUGH();
case MousePress:
case MouseClick:
- qt_handleMouseEvent(w, pos, global, button, button, QEvent::MouseButtonPress,
+ qtestMouseButtons.setFlag(button, true);
+ qt_handleMouseEvent(w, pos, global, qtestMouseButtons, button, QEvent::MouseButtonPress,
stateKey, ++lastMouseTimestamp);
- lastMouseButton = button;
+ lastMouseButton = button; // ### unsued
if (action == MousePress)
break;
Q_FALLTHROUGH();
case MouseRelease:
- qt_handleMouseEvent(w, pos, global, Qt::NoButton, button, QEvent::MouseButtonRelease,
+ qtestMouseButtons.setFlag(button, false);
+ qt_handleMouseEvent(w, pos, global, qtestMouseButtons, button, QEvent::MouseButtonRelease,
stateKey, ++lastMouseTimestamp);
lastMouseTimestamp += mouseDoubleClickInterval; // avoid double clicks being generated
- lastMouseButton = Qt::NoButton;
+ lastMouseButton = Qt::NoButton; // ### unsued
break;
case MouseMove:
- qt_handleMouseEvent(w, pos, global, lastMouseButton, Qt::NoButton, QEvent::MouseMove,
+ qt_handleMouseEvent(w, pos, global, qtestMouseButtons, Qt::NoButton, QEvent::MouseMove,
stateKey, ++lastMouseTimestamp);
break;
default: