diff options
author | Liang Qi <liang.qi@digia.com> | 2013-04-18 09:36:28 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-04-30 15:15:30 +0200 |
commit | 3975ca99206de668ddc946bc31222e3caa01c2db (patch) | |
tree | bff1367b2186026f7e56c74bfb6db34c8233b86d /tests | |
parent | 798112b6532a3c66abff630327d29a980a525f25 (diff) |
Added doc and test for active and requestActivate in QQuickWindow
Autotest is included.
Change-Id: I0f8614b502f1e51cab5612fee283c929e078108b
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
Reviewed-by: Liang Qi <liang.qi@digia.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/quick/qquickwindow/data/active.qml | 29 | ||||
-rw-r--r-- | tests/auto/quick/qquickwindow/qquickwindow.pro | 1 | ||||
-rw-r--r-- | tests/auto/quick/qquickwindow/tst_qquickwindow.cpp | 52 |
3 files changed, 82 insertions, 0 deletions
diff --git a/tests/auto/quick/qquickwindow/data/active.qml b/tests/auto/quick/qquickwindow/data/active.qml new file mode 100644 index 0000000000..af0b7edeb2 --- /dev/null +++ b/tests/auto/quick/qquickwindow/data/active.qml @@ -0,0 +1,29 @@ +import QtQuick 2.1 +import QtQuick.Window 2.1 + +Window { + id: window1; + objectName: "window1"; + color: "#00FF00"; + width: 100; height: 100; + Item { + objectName: "item1" + width: 100; height: 100; + MouseArea { + objectName: "mousearea" + anchors.fill: parent; + onPressed: window2.requestActivate(); + } + Component.onCompleted: window2.show(); + } + + Window { + id: window2; + objectName: "window2"; + color: "#FF0000"; + width: 100; height: 100; + Item { + width: 100; height: 100; + } + } +} diff --git a/tests/auto/quick/qquickwindow/qquickwindow.pro b/tests/auto/quick/qquickwindow/qquickwindow.pro index b1fc5cd4f2..917e3a5196 100644 --- a/tests/auto/quick/qquickwindow/qquickwindow.pro +++ b/tests/auto/quick/qquickwindow/qquickwindow.pro @@ -11,6 +11,7 @@ QT += core-private gui-private qml-private quick-private v8-private testlib TESTDATA = data/* OTHER_FILES += \ + data/active.qml \ data/AnimationsWhileHidden.qml \ data/Headless.qml \ data/showHideAnimate.qml diff --git a/tests/auto/quick/qquickwindow/tst_qquickwindow.cpp b/tests/auto/quick/qquickwindow/tst_qquickwindow.cpp index dbf0086a3e..c3308bfd7d 100644 --- a/tests/auto/quick/qquickwindow/tst_qquickwindow.cpp +++ b/tests/auto/quick/qquickwindow/tst_qquickwindow.cpp @@ -48,6 +48,7 @@ #include <QtQml/QQmlComponent> #include <QtQuick/private/qquickrectangle_p.h> #include "../../shared/util.h" +#include "../shared/visualtestutil.h" #include <QSignalSpy> #include <qpa/qwindowsysteminterface.h> #include <private/qquickwindow_p.h> @@ -323,6 +324,8 @@ private slots: void testExpose(); + void requestActivate(); + #ifndef QT_NO_CURSOR void cursor(); #endif @@ -1414,6 +1417,55 @@ void tst_qquickwindow::testExpose() QTRY_COMPARE(swapSpy.size(), 1); } +void tst_qquickwindow::requestActivate() +{ + QQmlEngine engine; + QQmlComponent component(&engine); + component.loadUrl(testFileUrl("active.qml")); + QQuickWindow* window1 = qobject_cast<QQuickWindow *>(component.create()); + QVERIFY(window1); + + QWindowList windows = QGuiApplication::topLevelWindows(); + QVERIFY(windows.size() == 2); + + for (int i = 0; i < windows.size(); ++i) { + if (windows.at(i)->objectName() == window1->objectName()) { + windows.removeAt(i); + break; + } + } + QVERIFY(windows.size() == 1); + QVERIFY(windows.at(0)->objectName() == "window2"); + + window1->show(); + window1->requestActivate(); + + QTRY_VERIFY(QGuiApplication::focusWindow() == window1); + QVERIFY(window1->isActive() == true); + + QQuickItem *item = QQuickVisualTestUtil::findItem<QQuickItem>(window1->contentItem(), "item1"); + QVERIFY(item); + + //copied from src/qmltest/quicktestevent.cpp + QPoint pos = item->mapToScene(QPointF(item->width()/2, item->height()/2)).toPoint(); + + QMouseEvent me(QEvent::MouseButtonPress, pos, window1->mapToGlobal(pos), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier); + QSpontaneKeyEvent::setSpontaneous(&me); + if (!qApp->notify(window1, &me)) { + QString warning = QString::fromLatin1("Mouse event MousePress not accepted by receiving window"); + QWARN(warning.toLatin1().data()); + } + me = QMouseEvent(QEvent::MouseButtonPress, pos, window1->mapToGlobal(pos), Qt::LeftButton, 0, Qt::NoModifier); + QSpontaneKeyEvent::setSpontaneous(&me); + if (!qApp->notify(window1, &me)) { + QString warning = QString::fromLatin1("Mouse event MouseRelease not accepted by receiving window"); + QWARN(warning.toLatin1().data()); + } + + QTRY_VERIFY(QGuiApplication::focusWindow() == windows.at(0)); + QVERIFY(windows.at(0)->isActive()); +} + QTEST_MAIN(tst_qquickwindow) #include "tst_qquickwindow.moc" |