From d93cc35d4ff1643ac9c41e8b3cbcc06bbac1894f Mon Sep 17 00:00:00 2001 From: Matthew Cattell Date: Fri, 9 Sep 2011 14:43:33 +0200 Subject: [PATCH] make quicktest build and modify to use qwindow MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Change-Id: Idebb00b828307421bcbd89d8abaa9ea1d903af47 Reviewed-on: http://codereview.qt-project.org/4542 Reviewed-by: Samuel Rødal --- src/qmltest/qmltest.pro | 2 +- src/qmltest/quicktest.cpp | 9 +++--- src/qmltest/quicktestevent.cpp | 58 ++++++++++++++++++++-------------------- src/qmltest/quicktestevent_p.h | 4 +- 4 files changed, 37 insertions(+), 36 deletions(-) diff --git a/src/qmltest/qmltest.pro b/src/qmltest/qmltest.pro index b19ad55..b0b64cd 100644 --- a/src/qmltest/qmltest.pro +++ b/src/qmltest/qmltest.pro @@ -7,7 +7,7 @@ CONFIG += module CONFIG += dll warn_on declarative_debug MODULE_PRI += ../../modules/qt_qmltest.pri -QT += testlib-private declarative testlib qtquick1 +QT += testlib-private declarative testlib qtquick1 widgets widgets-private gui DEFINES += QT_BUILD_QUICK_TEST_LIB QT_NO_URL_CAST_FROM_STRING diff --git a/src/qmltest/quicktest.cpp b/src/qmltest/quicktest.cpp index c7d9747..641d7e0 100644 --- a/src/qmltest/quicktest.cpp +++ b/src/qmltest/quicktest.cpp @@ -64,7 +64,7 @@ #include #include #include - +#include QT_BEGIN_NAMESPACE @@ -101,9 +101,9 @@ static inline QString stripQuotes(const QString &s) int quick_test_main(int argc, char **argv, const char *name, quick_test_viewport_create createViewport, const char *sourceDir) { - QApplication* app = 0; + QGuiApplication* app = 0; if (!QCoreApplication::instance()) { - app = new QApplication(argc, argv); + app = new QGuiApplication(argc, argv); } // Look for QML-specific command-line options. @@ -215,7 +215,8 @@ int quick_test_main(int argc, char **argv, const char *name, quick_test_viewport // an asynchronous test and we need to show the window // and wait for the quit indication. view.show(); - QTest::qWaitForWindowShown(&view); + //QTest::qWaitForWindowShown(&view); + QTest::qWait(50); rootobj.setWindowShown(true); if (!rootobj.hasQuit) eventLoop.exec(); diff --git a/src/qmltest/quicktestevent.cpp b/src/qmltest/quicktestevent.cpp index 67f1eef..9d1e5d1 100644 --- a/src/qmltest/quicktestevent.cpp +++ b/src/qmltest/quicktestevent.cpp @@ -64,28 +64,28 @@ QuickTestEvent::~QuickTestEvent() bool QuickTestEvent::keyPress(int key, int modifiers, int delay) { - QWidget *widget = eventWidget(); - if (!widget) + QWindow *window = eventWindow(); + if (!window) return false; - QTest::keyPress(widget, Qt::Key(key), Qt::KeyboardModifiers(modifiers), delay); + QTest::keyPress(window, Qt::Key(key), Qt::KeyboardModifiers(modifiers), delay); return true; } bool QuickTestEvent::keyRelease(int key, int modifiers, int delay) { - QWidget *widget = eventWidget(); - if (!widget) + QWindow *window = eventWindow(); + if (!window) return false; - QTest::keyRelease(widget, Qt::Key(key), Qt::KeyboardModifiers(modifiers), delay); + QTest::keyRelease(window, Qt::Key(key), Qt::KeyboardModifiers(modifiers), delay); return true; } bool QuickTestEvent::keyClick(int key, int modifiers, int delay) { - QWidget *widget = eventWidget(); - if (!widget) + QWindow *window = eventWindow(); + if (!window) return false; - QTest::keyClick(widget, Qt::Key(key), Qt::KeyboardModifiers(modifiers), delay); + QTest::keyClick(window, Qt::Key(key), Qt::KeyboardModifiers(modifiers), delay); return true; } @@ -97,11 +97,11 @@ namespace QtQuickTest { enum MouseAction { MousePress, MouseRelease, MouseClick, MouseDoubleClick, MouseMove }; - static void mouseEvent(MouseAction action, QWidget *widget, + static void mouseEvent(MouseAction action, QWindow *window, QObject *item, Qt::MouseButton button, Qt::KeyboardModifiers stateKey, QPointF _pos, int delay=-1) { - QTEST_ASSERT(widget); + QTEST_ASSERT(window); QTEST_ASSERT(item); if (delay == -1 || delay < QTest::defaultMouseDelay()) @@ -110,14 +110,14 @@ namespace QtQuickTest QTest::qWait(delay); if (action == MouseClick) { - mouseEvent(MousePress, widget, item, button, stateKey, _pos); - mouseEvent(MouseRelease, widget, item, button, stateKey, _pos); + mouseEvent(MousePress, window, item, button, stateKey, _pos); + mouseEvent(MouseRelease, window, item, button, stateKey, _pos); return; } QPoint pos; - QDeclarativeView *view = qobject_cast(widget); - QWidget *eventWidget = widget; + QDeclarativeView *view = qobject_cast(window); + QWindow *eventWindow = window; #ifdef QUICK_TEST_SCENEGRAPH QSGItem *sgitem = qobject_cast(item); if (sgitem) { @@ -131,7 +131,7 @@ namespace QtQuickTest return; } pos = view->mapFromScene(ditem->mapToScene(_pos)); - eventWidget = view->viewport(); + eventWindow = view->viewport()->windowHandle(); } QTEST_ASSERT(button == Qt::NoButton || button & Qt::MouseButtonMask); @@ -143,26 +143,26 @@ namespace QtQuickTest switch (action) { case MousePress: - me = QMouseEvent(QEvent::MouseButtonPress, pos, widget->mapToGlobal(pos), button, button, stateKey); + me = QMouseEvent(QEvent::MouseButtonPress, pos, window->mapToGlobal(pos), button, button, stateKey); break; case MouseRelease: - me = QMouseEvent(QEvent::MouseButtonRelease, pos, widget->mapToGlobal(pos), button, 0, stateKey); + me = QMouseEvent(QEvent::MouseButtonRelease, pos, window->mapToGlobal(pos), button, 0, stateKey); break; case MouseDoubleClick: - me = QMouseEvent(QEvent::MouseButtonDblClick, pos, widget->mapToGlobal(pos), button, button, stateKey); + me = QMouseEvent(QEvent::MouseButtonDblClick, pos, window->mapToGlobal(pos), button, button, stateKey); break; case MouseMove: - QCursor::setPos(widget->mapToGlobal(pos)); + QCursor::setPos(window->mapToGlobal(pos)); qApp->processEvents(); return; default: QTEST_ASSERT(false); } QSpontaneKeyEvent::setSpontaneous(&me); - if (!qApp->notify(eventWidget, &me)) { + if (!qApp->notify(eventWindow, &me)) { static const char *mouseActionNames[] = { "MousePress", "MouseRelease", "MouseClick", "MouseDoubleClick", "MouseMove" }; - QString warning = QString::fromLatin1("Mouse event \"%1\" not accepted by receiving widget"); + QString warning = QString::fromLatin1("Mouse event \"%1\" not accepted by receiving window"); QTest::qWarn(warning.arg(QString::fromLatin1(mouseActionNames[static_cast(action)])).toAscii().data()); } } @@ -172,7 +172,7 @@ bool QuickTestEvent::mousePress (QObject *item, qreal x, qreal y, int button, int modifiers, int delay) { - QWidget *view = eventWidget(); + QWindow *view = eventWindow(); if (!view) return false; QtQuickTest::mouseEvent(QtQuickTest::MousePress, view, item, @@ -186,7 +186,7 @@ bool QuickTestEvent::mouseRelease (QObject *item, qreal x, qreal y, int button, int modifiers, int delay) { - QWidget *view = eventWidget(); + QWindow *view = eventWindow(); if (!view) return false; QtQuickTest::mouseEvent(QtQuickTest::MouseRelease, view, item, @@ -200,7 +200,7 @@ bool QuickTestEvent::mouseClick (QObject *item, qreal x, qreal y, int button, int modifiers, int delay) { - QWidget *view = eventWidget(); + QWindow *view = eventWindow(); if (!view) return false; QtQuickTest::mouseEvent(QtQuickTest::MouseClick, view, item, @@ -214,7 +214,7 @@ bool QuickTestEvent::mouseDoubleClick (QObject *item, qreal x, qreal y, int button, int modifiers, int delay) { - QWidget *view = eventWidget(); + QWindow *view = eventWindow(); if (!view) return false; QtQuickTest::mouseEvent(QtQuickTest::MouseDoubleClick, view, item, @@ -227,7 +227,7 @@ bool QuickTestEvent::mouseDoubleClick bool QuickTestEvent::mouseMove (QObject *item, qreal x, qreal y, int delay) { - QWidget *view = eventWidget(); + QWindow *view = eventWindow(); if (!view) return false; QtQuickTest::mouseEvent(QtQuickTest::MouseMove, view, item, @@ -236,7 +236,7 @@ bool QuickTestEvent::mouseMove return true; } -QWidget *QuickTestEvent::eventWidget() +QWindow *QuickTestEvent::eventWindow() { #ifdef QUICK_TEST_SCENEGRAPH QSGItem *sgitem = qobject_cast(parent()); @@ -252,7 +252,7 @@ QWidget *QuickTestEvent::eventWidget() QList views = s->views(); if (views.isEmpty()) return 0; - return views.at(0); + return views.at(0)->windowHandle(); } QT_END_NAMESPACE diff --git a/src/qmltest/quicktestevent_p.h b/src/qmltest/quicktestevent_p.h index b2f39e9..d9439a6 100644 --- a/src/qmltest/quicktestevent_p.h +++ b/src/qmltest/quicktestevent_p.h @@ -44,7 +44,7 @@ #include #include - +#include QT_BEGIN_NAMESPACE class Q_QUICK_TEST_EXPORT QuickTestEvent : public QObject @@ -70,7 +70,7 @@ public Q_SLOTS: bool mouseMove(QObject *item, qreal x, qreal y, int delay); private: - QWidget *eventWidget(); + QWindow *eventWindow(); }; QT_END_NAMESPACE -- 1.7.2.5