diff options
author | juhvu <qt-info@nokia.com> | 2011-09-21 13:04:11 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-09-22 05:03:32 +0200 |
commit | 7100a74def3a82bc52c93b800cec973bf312b1b3 (patch) | |
tree | cc24a9a8dc789e3640beb7f2f48316d0455afb40 /src/qmltest | |
parent | 7ecce2cc0e33bc6b1aa052163f9d6c1365b93b27 (diff) |
Wheel event support in qmltestlib + few fixes.
added unit test and orientaion support for mouseWheel
Change-Id: I9c26dc762281bc32965769c151414ac0e177ad0f
Reviewed-on: http://codereview.qt-project.org/5272
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Juha Vuolle <juha.vuolle@nokia.com>
Reviewed-by: Charles Yin <charles.yin@nokia.com>
Diffstat (limited to 'src/qmltest')
-rw-r--r-- | src/qmltest/quicktestevent.cpp | 64 | ||||
-rw-r--r-- | src/qmltest/quicktestevent_p.h | 7 |
2 files changed, 63 insertions, 8 deletions
diff --git a/src/qmltest/quicktestevent.cpp b/src/qmltest/quicktestevent.cpp index 9d1e5d1428..f573899d98 100644 --- a/src/qmltest/quicktestevent.cpp +++ b/src/qmltest/quicktestevent.cpp @@ -133,7 +133,6 @@ namespace QtQuickTest pos = view->mapFromScene(ditem->mapToScene(_pos)); eventWindow = view->viewport()->windowHandle(); } - QTEST_ASSERT(button == Qt::NoButton || button & Qt::MouseButtonMask); QTEST_ASSERT(stateKey == 0 || stateKey & Qt::KeyboardModifierMask); @@ -152,9 +151,9 @@ namespace QtQuickTest me = QMouseEvent(QEvent::MouseButtonDblClick, pos, window->mapToGlobal(pos), button, button, stateKey); break; case MouseMove: - QCursor::setPos(window->mapToGlobal(pos)); - qApp->processEvents(); - return; + // 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); + break; default: QTEST_ASSERT(false); } @@ -166,6 +165,46 @@ namespace QtQuickTest QTest::qWarn(warning.arg(QString::fromLatin1(mouseActionNames[static_cast<int>(action)])).toAscii().data()); } } + + static void mouseWheel(QWindow* window, QObject* item, Qt::MouseButtons buttons, + Qt::KeyboardModifiers stateKey, + QPointF _pos, int delta, int delay = -1, Qt::Orientation orientation = Qt::Vertical) + { + QTEST_ASSERT(window); + QTEST_ASSERT(item); + if (delay == -1 || delay < QTest::defaultMouseDelay()) + delay = QTest::defaultMouseDelay(); + if (delay > 0) + QTest::qWait(delay); + + QPoint pos; + QDeclarativeView *view = qobject_cast<QDeclarativeView *>(window); + QWindow *eventWindow = window; +#ifdef QUICK_TEST_SCENEGRAPH + QSGItem *sgitem = qobject_cast<QSGItem *>(item); + if (sgitem) { + pos = sgitem->mapToScene(_pos).toPoint(); + } else +#endif + { + QDeclarativeItem *ditem = qobject_cast<QDeclarativeItem *>(item); + if (!ditem) { + qWarning("Mouse event target is not an Item"); + return; + } + pos = view->mapFromScene(ditem->mapToScene(_pos)); + eventWindow = view->viewport()->windowHandle(); + } + QTEST_ASSERT(buttons == Qt::NoButton || buttons & Qt::MouseButtonMask); + QTEST_ASSERT(stateKey == 0 || stateKey & Qt::KeyboardModifierMask); + + stateKey &= static_cast<unsigned int>(Qt::KeyboardModifierMask); + QWheelEvent we(pos, window->mapToGlobal(pos), delta, buttons, stateKey, orientation); + + QSpontaneKeyEvent::setSpontaneous(&we); // hmmmm + if (!qApp->notify(eventWindow, &we)) + QTest::qWarn("Wheel event not accepted by receiving window"); + } }; bool QuickTestEvent::mousePress @@ -182,6 +221,19 @@ bool QuickTestEvent::mousePress return true; } +bool QuickTestEvent::mouseWheel( + QObject *item, qreal x, qreal y, int buttons, + int modifiers, int delta, int delay, int orientation) +{ + QWindow *view = eventWindow(); + if (!view) + return false; + QtQuickTest::mouseWheel(view, item, Qt::MouseButtons(buttons), + Qt::KeyboardModifiers(modifiers), + QPointF(x, y), delta, delay, Qt::Orientation(orientation)); + return true; +} + bool QuickTestEvent::mouseRelease (QObject *item, qreal x, qreal y, int button, int modifiers, int delay) @@ -225,13 +277,13 @@ bool QuickTestEvent::mouseDoubleClick } bool QuickTestEvent::mouseMove - (QObject *item, qreal x, qreal y, int delay) + (QObject *item, qreal x, qreal y, int delay, int buttons) { QWindow *view = eventWindow(); if (!view) return false; QtQuickTest::mouseEvent(QtQuickTest::MouseMove, view, item, - Qt::NoButton, Qt::NoModifier, + Qt::MouseButton(buttons), Qt::NoModifier, QPointF(x, y), delay); return true; } diff --git a/src/qmltest/quicktestevent_p.h b/src/qmltest/quicktestevent_p.h index d9439a6bc3..31f0d115d6 100644 --- a/src/qmltest/quicktestevent_p.h +++ b/src/qmltest/quicktestevent_p.h @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** @@ -67,7 +67,10 @@ public Q_SLOTS: int modifiers, int delay); bool mouseDoubleClick(QObject *item, qreal x, qreal y, int button, int modifiers, int delay); - bool mouseMove(QObject *item, qreal x, qreal y, int delay); + bool mouseMove(QObject *item, qreal x, qreal y, int delay, int buttons); + + bool mouseWheel(QObject *item, qreal x, qreal y, int buttons, + int modifiers, int delta, int delay, int orientation); private: QWindow *eventWindow(); |