Fix QQuickApplication::activate test.

ApplicationActivate and ApplicationDeactivate events are now delivered.

Task-number: QTBUG-21573
Task-number: QTBUG-23331
Change-Id: I58e8d7c7730c66ec210f04a74a945d3eece61e01
Reviewed-by: Alan Alpert <alan.alpert@nokia.com>
This commit is contained in:
Andrew den Exter 2012-07-03 16:50:40 +10:00 committed by Qt by Nokia
parent 24edabccfe
commit 2edefe3677
1 changed files with 13 additions and 22 deletions

View File

@ -45,6 +45,7 @@
#include <QtQuick/qquickitem.h> #include <QtQuick/qquickitem.h>
#include <QtQuick/qquickview.h> #include <QtQuick/qquickview.h>
#include <QtGui/qinputmethod.h> #include <QtGui/qinputmethod.h>
#include <qpa/qwindowsysteminterface.h>
class tst_qquickapplication : public QObject class tst_qquickapplication : public QObject
{ {
@ -79,37 +80,27 @@ void tst_qquickapplication::active()
"}", QUrl::fromLocalFile("")); "}", QUrl::fromLocalFile(""));
QQuickItem *item = qobject_cast<QQuickItem *>(component.create()); QQuickItem *item = qobject_cast<QQuickItem *>(component.create());
QVERIFY(item); QVERIFY(item);
QQuickView view; QQuickCanvas canvas;
item->setParentItem(view.rootObject()); item->setParentItem(canvas.rootItem());
// not active // not active
QVERIFY(!item->property("active").toBool()); QVERIFY(!item->property("active").toBool());
QVERIFY(!item->property("active2").toBool()); QVERIFY(!item->property("active2").toBool());
QCOMPARE(item->property("active").toBool(), QGuiApplication::focusWindow() != 0);
// active // active
view.show(); canvas.show();
view.requestActivateWindow(); canvas.requestActivateWindow();
QTest::qWait(50); QTest::qWaitForWindowActive(&canvas);
QEXPECT_FAIL("", "QTBUG-21573", Abort); QVERIFY(QGuiApplication::focusWindow() == &canvas);
QTRY_COMPARE(view.status(), QQuickView::Ready); QVERIFY(item->property("active").toBool());
QCOMPARE(item->property("active").toBool(), QGuiApplication::focusWindow() != 0); QVERIFY(item->property("active2").toBool());
QCOMPARE(item->property("active2").toBool(), QGuiApplication::focusWindow() != 0);
#if 0
// QGuiApplication has no equivalent of setActiveWindow(0). QTBUG-21573
// Is this different to clearing the active state of the window or can it be removed?
// On Mac, setActiveWindow(0) on mac does not deactivate the current application,
// must switch to a different app or hide the current app to trigger this
// on mac, setActiveWindow(0) on mac does not deactivate the current application
// (you have to switch to a different app or hide the current app to trigger this)
// not active again // not active again
QGuiApplication::setActiveWindow(0); QWindowSystemInterface::handleWindowActivated(0);
QVERIFY(!item->property("active").toBool());
QCOMPARE(item->property("active").toBool(), QGuiApplication::focusWindow() != 0);
#endif
QTRY_VERIFY(QGuiApplication::focusWindow() != &canvas);
QVERIFY(!item->property("active").toBool());
QVERIFY(!item->property("active2").toBool());
} }
void tst_qquickapplication::layoutDirection() void tst_qquickapplication::layoutDirection()