summaryrefslogtreecommitdiffstats
path: root/src/testlib/qtestmouse.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/testlib/qtestmouse.h')
-rw-r--r--src/testlib/qtestmouse.h117
1 files changed, 57 insertions, 60 deletions
diff --git a/src/testlib/qtestmouse.h b/src/testlib/qtestmouse.h
index b032c376f8..a199a2d2ae 100644
--- a/src/testlib/qtestmouse.h
+++ b/src/testlib/qtestmouse.h
@@ -68,46 +68,55 @@ namespace QTest
{
enum MouseAction { MousePress, MouseRelease, MouseClick, MouseDClick, MouseMove };
-#ifdef QT_WIDGETS_LIB
- static void mouseEvent(MouseAction action, QWidget *widget, Qt::MouseButton button,
+ static void mouseEvent(MouseAction action, QWindow *window, Qt::MouseButton button,
Qt::KeyboardModifiers stateKey, QPoint pos, int delay=-1)
{
- QTEST_ASSERT(widget);
+ QTEST_ASSERT(window);
extern int Q_TESTLIB_EXPORT defaultMouseDelay();
+ static Qt::MouseButton lastButton = Qt::NoButton;
+
if (delay == -1 || delay < defaultMouseDelay())
delay = defaultMouseDelay();
if (delay > 0)
QTest::qWait(delay);
if (pos.isNull())
- pos = widget->rect().center();
+ pos = window->geometry().center();
if (action == MouseClick) {
- mouseEvent(MousePress, widget, button, stateKey, pos);
- mouseEvent(MouseRelease, widget, button, stateKey, pos);
+ mouseEvent(MousePress, window, button, stateKey, pos);
+ mouseEvent(MouseRelease, window, button, stateKey, pos);
return;
}
-
QTEST_ASSERT(button == Qt::NoButton || button & Qt::MouseButtonMask);
QTEST_ASSERT(stateKey == 0 || stateKey & Qt::KeyboardModifierMask);
stateKey &= static_cast<unsigned int>(Qt::KeyboardModifierMask);
- QMouseEvent me(QEvent::User, QPoint(), Qt::LeftButton, button, stateKey);
+
switch (action)
{
case MousePress:
- me = QMouseEvent(QEvent::MouseButtonPress, pos, widget->mapToGlobal(pos), button, button, stateKey);
+ QWindowSystemInterface::handleMouseEvent(window,pos,window->mapToGlobal(pos),button);
+ lastButton = button;
break;
case MouseRelease:
- me = QMouseEvent(QEvent::MouseButtonRelease, pos, widget->mapToGlobal(pos), button, 0, stateKey);
+ QWindowSystemInterface::handleMouseEvent(window,pos,window->mapToGlobal(pos),Qt::NoButton);
+ lastButton = Qt::NoButton;
break;
case MouseDClick:
- me = QMouseEvent(QEvent::MouseButtonDblClick, pos, widget->mapToGlobal(pos), button, button, stateKey);
+ QWindowSystemInterface::handleMouseEvent(window,pos,window->mapToGlobal(pos),button);
+ qWait(10);
+ QWindowSystemInterface::handleMouseEvent(window,pos,window->mapToGlobal(pos),Qt::NoButton);
+ qWait(20);
+ QWindowSystemInterface::handleMouseEvent(window,pos,window->mapToGlobal(pos),button);
+ qWait(10);
+ QWindowSystemInterface::handleMouseEvent(window,pos,window->mapToGlobal(pos),Qt::NoButton);
break;
case MouseMove:
- QCursor::setPos(widget->mapToGlobal(pos));
+ QWindowSystemInterface::handleMouseEvent(window,pos,window->mapToGlobal(pos),lastButton);
+ //QCursor::setPos(window->mapToGlobal(pos));
#ifdef QT_MAC_USE_COCOA
QTest::qWait(20);
#else
@@ -117,66 +126,63 @@ namespace QTest
default:
QTEST_ASSERT(false);
}
- QSpontaneKeyEvent::setSpontaneous(&me);
- if (!qApp->notify(widget, &me)) {
- static const char *mouseActionNames[] =
- { "MousePress", "MouseRelease", "MouseClick", "MouseDClick", "MouseMove" };
- QString warning = QString::fromLatin1("Mouse event \"%1\" not accepted by receiving widget");
- QTest::qWarn(warning.arg(QString::fromLatin1(mouseActionNames[static_cast<int>(action)])).toAscii().data());
- }
-
}
-#endif
- static void mouseEvent(MouseAction action, QWindow *window, Qt::MouseButton button,
+ inline void mousePress(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers stateKey = 0,
+ QPoint pos = QPoint(), int delay=-1)
+ { mouseEvent(MousePress, window, button, stateKey, pos, delay); }
+ inline void mouseRelease(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers stateKey = 0,
+ QPoint pos = QPoint(), int delay=-1)
+ { mouseEvent(MouseRelease, window, button, stateKey, pos, delay); }
+ inline void mouseClick(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers stateKey = 0,
+ QPoint pos = QPoint(), int delay=-1)
+ { mouseEvent(MouseClick, window, button, stateKey, pos, delay); }
+ inline void mouseDClick(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers stateKey = 0,
+ QPoint pos = QPoint(), int delay=-1)
+ { mouseEvent(MouseDClick, window, button, stateKey, pos, delay); }
+ inline void mouseMove(QWindow *window, QPoint pos = QPoint(), int delay=-1)
+ { mouseEvent(MouseMove, window, Qt::NoButton, 0, pos, delay); }
+
+#ifdef QT_WIDGETS_LIB
+ static void mouseEvent(MouseAction action, QWidget *widget, Qt::MouseButton button,
Qt::KeyboardModifiers stateKey, QPoint pos, int delay=-1)
{
- QTEST_ASSERT(window);
+ QTEST_ASSERT(widget);
extern int Q_TESTLIB_EXPORT defaultMouseDelay();
- static Qt::MouseButton lastButton = Qt::NoButton;
-
if (delay == -1 || delay < defaultMouseDelay())
delay = defaultMouseDelay();
if (delay > 0)
QTest::qWait(delay);
if (pos.isNull())
- pos = window->geometry().center();
+ pos = widget->rect().center();
if (action == MouseClick) {
- mouseEvent(MousePress, window, button, stateKey, pos);
- mouseEvent(MouseRelease, window, button, stateKey, pos);
+ mouseEvent(MousePress, widget, button, stateKey, pos);
+ mouseEvent(MouseRelease, widget, button, stateKey, pos);
return;
}
+
QTEST_ASSERT(button == Qt::NoButton || button & Qt::MouseButtonMask);
QTEST_ASSERT(stateKey == 0 || stateKey & Qt::KeyboardModifierMask);
stateKey &= static_cast<unsigned int>(Qt::KeyboardModifierMask);
-
+ QMouseEvent me(QEvent::User, QPoint(), Qt::LeftButton, button, stateKey);
switch (action)
{
case MousePress:
- QWindowSystemInterface::handleMouseEvent(window,pos,window->mapToGlobal(pos),button);
- lastButton = button;
+ me = QMouseEvent(QEvent::MouseButtonPress, pos, widget->mapToGlobal(pos), button, button, stateKey);
break;
case MouseRelease:
- QWindowSystemInterface::handleMouseEvent(window,pos,window->mapToGlobal(pos),Qt::NoButton);
- lastButton = Qt::NoButton;
+ me = QMouseEvent(QEvent::MouseButtonRelease, pos, widget->mapToGlobal(pos), button, 0, stateKey);
break;
case MouseDClick:
- QWindowSystemInterface::handleMouseEvent(window,pos,window->mapToGlobal(pos),button);
- qWait(10);
- QWindowSystemInterface::handleMouseEvent(window,pos,window->mapToGlobal(pos),Qt::NoButton);
- qWait(20);
- QWindowSystemInterface::handleMouseEvent(window,pos,window->mapToGlobal(pos),button);
- qWait(10);
- QWindowSystemInterface::handleMouseEvent(window,pos,window->mapToGlobal(pos),Qt::NoButton);
+ me = QMouseEvent(QEvent::MouseButtonDblClick, pos, widget->mapToGlobal(pos), button, button, stateKey);
break;
case MouseMove:
- QWindowSystemInterface::handleMouseEvent(window,pos,window->mapToGlobal(pos),lastButton);
- //QCursor::setPos(window->mapToGlobal(pos));
+ QCursor::setPos(widget->mapToGlobal(pos));
#ifdef QT_MAC_USE_COCOA
QTest::qWait(20);
#else
@@ -186,9 +192,16 @@ namespace QTest
default:
QTEST_ASSERT(false);
}
+ QSpontaneKeyEvent::setSpontaneous(&me);
+ if (!qApp->notify(widget, &me)) {
+ static const char *mouseActionNames[] =
+ { "MousePress", "MouseRelease", "MouseClick", "MouseDClick", "MouseMove" };
+ QString warning = QString::fromLatin1("Mouse event \"%1\" not accepted by receiving widget");
+ QTest::qWarn(warning.arg(QString::fromLatin1(mouseActionNames[static_cast<int>(action)])).toAscii().data());
+ }
+
}
-#ifdef QT_WIDGETS_LIB
inline void mousePress(QWidget *widget, Qt::MouseButton button, Qt::KeyboardModifiers stateKey = 0,
QPoint pos = QPoint(), int delay=-1)
{ mouseEvent(MousePress, widget, button, stateKey, pos, delay); }
@@ -203,23 +216,7 @@ namespace QTest
{ mouseEvent(MouseDClick, widget, button, stateKey, pos, delay); }
inline void mouseMove(QWidget *widget, QPoint pos = QPoint(), int delay=-1)
{ mouseEvent(MouseMove, widget, Qt::NoButton, 0, pos, delay); }
-#endif
-
- //Support QWindow
- inline void mousePress(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers stateKey = 0,
- QPoint pos = QPoint(), int delay=-1)
- { mouseEvent(MousePress, window, button, stateKey, pos, delay); }
- inline void mouseRelease(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers stateKey = 0,
- QPoint pos = QPoint(), int delay=-1)
- { mouseEvent(MouseRelease, window, button, stateKey, pos, delay); }
- inline void mouseClick(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers stateKey = 0,
- QPoint pos = QPoint(), int delay=-1)
- { mouseEvent(MouseClick, window, button, stateKey, pos, delay); }
- inline void mouseDClick(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers stateKey = 0,
- QPoint pos = QPoint(), int delay=-1)
- { mouseEvent(MouseDClick, window, button, stateKey, pos, delay); }
- inline void mouseMove(QWindow *window, QPoint pos = QPoint(), int delay=-1)
- { mouseEvent(MouseMove, window, Qt::NoButton, 0, pos, delay); }
+#endif // QT_WIDGETS_LIB
}
QT_END_NAMESPACE