make quicktest build and modify to use qwindow
authorMatthew Cattell <matthew.cattell@nokia.com>
Fri, 9 Sep 2011 12:43:33 +0000 (14:43 +0200)
committerSamuel Rødal <samuel.rodal@nokia.com>
Fri, 9 Sep 2011 13:00:47 +0000 (15:00 +0200)
Change-Id: Idebb00b828307421bcbd89d8abaa9ea1d903af47
Reviewed-on: http://codereview.qt-project.org/4542
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
src/qmltest/qmltest.pro
src/qmltest/quicktest.cpp
src/qmltest/quicktestevent.cpp
src/qmltest/quicktestevent_p.h

index b19ad55..b0b64cd 100644 (file)
@@ -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
 
 
index c7d9747..641d7e0 100644 (file)
@@ -64,7 +64,7 @@
 #include <QtCore/qeventloop.h>
 #include <QtGui/qtextdocument.h>
 #include <stdio.h>
-
+#include <QtGui/QGuiApplication>
 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();
index 67f1eef..9d1e5d1 100644 (file)
@@ -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<QDeclarativeView *>(widget);
-        QWidget *eventWidget = widget;
+        QDeclarativeView *view = qobject_cast<QDeclarativeView *>(window);
+        QWindow *eventWindow = window;
 #ifdef QUICK_TEST_SCENEGRAPH
         QSGItem *sgitem = qobject_cast<QSGItem *>(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<int>(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<QSGItem *>(parent());
@@ -252,7 +252,7 @@ QWidget *QuickTestEvent::eventWidget()
     QList<QGraphicsView *> views = s->views();
     if (views.isEmpty())
         return 0;
-    return views.at(0);
+    return views.at(0)->windowHandle();
 }
 
 QT_END_NAMESPACE
index b2f39e9..d9439a6 100644 (file)
@@ -44,7 +44,7 @@
 
 #include <QtQuickTest/quicktestglobal.h>
 #include <QtCore/qobject.h>
-
+#include <QtGui/QWindow>
 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