aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/quick/qquickapplication
diff options
context:
space:
mode:
authorTor Arne Vestbø <tor.arne.vestbo@qt.io>2019-01-14 12:20:33 +0100
committerLiang Qi <liang.qi@qt.io>2019-01-14 12:18:00 +0000
commit4aa7fe666be35b5699b0e201c3a963777f874e4d (patch)
treee8527ba652da907b2111821e2b28f84b2ea32069 /tests/auto/quick/qquickapplication
parentcfdb483613494d982a574c9334f2b21621024b1b (diff)
tst_qquickapplication: Don't assume app activation is tied to window activation
Follows same approach as 47f6d256ed in tst_qquickapplication::state(). Change-Id: Ibecdab3f874fc9e75b38ba2ccaf3776bd46c77e8 Fixes: QTBUG-72953 Reviewed-by: Liang Qi <liang.qi@qt.io> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
Diffstat (limited to 'tests/auto/quick/qquickapplication')
-rw-r--r--tests/auto/quick/qquickapplication/tst_qquickapplication.cpp56
1 files changed, 31 insertions, 25 deletions
diff --git a/tests/auto/quick/qquickapplication/tst_qquickapplication.cpp b/tests/auto/quick/qquickapplication/tst_qquickapplication.cpp
index 62027f59f4..3526eb98be 100644
--- a/tests/auto/quick/qquickapplication/tst_qquickapplication.cpp
+++ b/tests/auto/quick/qquickapplication/tst_qquickapplication.cpp
@@ -88,31 +88,37 @@ void tst_qquickapplication::active()
QQuickWindow window;
item->setParentItem(window.contentItem());
- // not active
- QVERIFY(!item->property("active").toBool());
- QVERIFY(!item->property("active2").toBool());
-
- // active
- window.show();
- window.requestActivate();
- QVERIFY(QTest::qWaitForWindowActive(&window));
- QCOMPARE(QGuiApplication::focusWindow(), &window);
- QVERIFY(item->property("active").toBool());
- QVERIFY(item->property("active2").toBool());
-
- QWindowSystemInterface::handleWindowActivated(nullptr);
-
-#ifdef Q_OS_OSX
- // OS X has the concept of "reactivation"
- QTRY_VERIFY(QGuiApplication::focusWindow() != &window);
- QVERIFY(item->property("active").toBool());
- QVERIFY(item->property("active2").toBool());
-#else
- // not active again
- QTRY_VERIFY(QGuiApplication::focusWindow() != &window);
- QVERIFY(!item->property("active").toBool());
- QVERIFY(!item->property("active2").toBool());
-#endif
+ // If the platform plugin has the ApplicationState capability, app activation originate from it
+ // as a result of a system event. We therefore have to simulate these events here.
+ if (QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::ApplicationState)) {
+
+ // Flush pending events, in case the platform have already queued real application state events
+ QWindowSystemInterface::flushWindowSystemEvents();
+
+ QWindowSystemInterface::handleApplicationStateChanged(Qt::ApplicationActive);
+ QWindowSystemInterface::flushWindowSystemEvents();
+ QVERIFY(item->property("active").toBool());
+ QVERIFY(item->property("active2").toBool());
+
+ QWindowSystemInterface::handleApplicationStateChanged(Qt::ApplicationInactive);
+ QWindowSystemInterface::flushWindowSystemEvents();
+ QVERIFY(!item->property("active").toBool());
+ QVERIFY(!item->property("active2").toBool());
+ } else {
+ // Otherwise, app activation is triggered by window activation.
+ window.show();
+ window.requestActivate();
+ QVERIFY(QTest::qWaitForWindowActive(&window));
+ QCOMPARE(QGuiApplication::focusWindow(), &window);
+ QVERIFY(item->property("active").toBool());
+ QVERIFY(item->property("active2").toBool());
+
+ // not active again
+ QWindowSystemInterface::handleWindowActivated(nullptr);
+ QTRY_VERIFY(QGuiApplication::focusWindow() != &window);
+ QVERIFY(!item->property("active").toBool());
+ QVERIFY(!item->property("active2").toBool());
+ }
}
void tst_qquickapplication::state()