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/qquickview.h>
#include <QtGui/qinputmethod.h>
#include <qpa/qwindowsysteminterface.h>
class tst_qquickapplication : public QObject
{
@ -79,37 +80,27 @@ void tst_qquickapplication::active()
"}", QUrl::fromLocalFile(""));
QQuickItem *item = qobject_cast<QQuickItem *>(component.create());
QVERIFY(item);
QQuickView view;
item->setParentItem(view.rootObject());
QQuickCanvas canvas;
item->setParentItem(canvas.rootItem());
// not active
QVERIFY(!item->property("active").toBool());
QVERIFY(!item->property("active2").toBool());
QCOMPARE(item->property("active").toBool(), QGuiApplication::focusWindow() != 0);
// active
view.show();
view.requestActivateWindow();
QTest::qWait(50);
QEXPECT_FAIL("", "QTBUG-21573", Abort);
QTRY_COMPARE(view.status(), QQuickView::Ready);
QCOMPARE(item->property("active").toBool(), QGuiApplication::focusWindow() != 0);
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)
canvas.show();
canvas.requestActivateWindow();
QTest::qWaitForWindowActive(&canvas);
QVERIFY(QGuiApplication::focusWindow() == &canvas);
QVERIFY(item->property("active").toBool());
QVERIFY(item->property("active2").toBool());
// not active again
QGuiApplication::setActiveWindow(0);
QVERIFY(!item->property("active").toBool());
QCOMPARE(item->property("active").toBool(), QGuiApplication::focusWindow() != 0);
#endif
QWindowSystemInterface::handleWindowActivated(0);
QTRY_VERIFY(QGuiApplication::focusWindow() != &canvas);
QVERIFY(!item->property("active").toBool());
QVERIFY(!item->property("active2").toBool());
}
void tst_qquickapplication::layoutDirection()