From bc60b6787c791be0168820c42febfdb57b5070e0 Mon Sep 17 00:00:00 2001 From: Kent Hansen Date: Wed, 21 Sep 2011 09:23:51 +0200 Subject: testlib: Separate the gui- and widgets-specific api Group the widgets-specific ("legacy") api under as few ifdefs as possible. (The diff can look confusing; rest assured that this change "only" moves entire functions around in the files.) Change-Id: I27bdec7d1c96d0b040dc22a8fed17e4e47766276 Reviewed-on: http://codereview.qt-project.org/5290 Reviewed-by: Qt Sanity Bot Reviewed-by: Matthew Cattell --- src/testlib/qtestmouse.h | 117 +++++++++++++++++++++++------------------------ 1 file changed, 57 insertions(+), 60 deletions(-) (limited to 'src/testlib/qtestmouse.h') 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(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(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(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(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 -- cgit v1.2.3