diff options
author | Frederik Gladhorn <frederik.gladhorn@nokia.com> | 2012-03-13 20:25:12 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-03-24 17:07:52 +0100 |
commit | cea1a6bcd51a43bad6426e4de81fda117f094932 (patch) | |
tree | e059de1eee9446621bca8b46a0b5b730962a7f05 /tests/auto/other | |
parent | f195a8e2b69eba0e3c44f2dece222b0da9e06026 (diff) |
Make sure windows send accessibility activated updates.
Both QWindow and QWidgetWindow should update with the
active state signal.
Change-Id: I0219f803aa0fb109765f0faa0aedb120c2a439f0
Reviewed-by: Jan-Arve Sæther <jan-arve.saether@nokia.com>
Diffstat (limited to 'tests/auto/other')
-rw-r--r-- | tests/auto/other/qaccessibility/tst_qaccessibility.cpp | 48 |
1 files changed, 44 insertions, 4 deletions
diff --git a/tests/auto/other/qaccessibility/tst_qaccessibility.cpp b/tests/auto/other/qaccessibility/tst_qaccessibility.cpp index be7cb7dd15..a01589d9d5 100644 --- a/tests/auto/other/qaccessibility/tst_qaccessibility.cpp +++ b/tests/auto/other/qaccessibility/tst_qaccessibility.cpp @@ -777,6 +777,7 @@ void tst_QAccessibility::applicationTest() void tst_QAccessibility::mainWindowTest() { + { QMainWindow *mw = new QMainWindow; mw->resize(300, 200); mw->show(); // triggers layout @@ -787,12 +788,51 @@ void tst_QAccessibility::mainWindowTest() QAccessibleEvent show(mw, QAccessible::ObjectShow); QVERIFY_EVENT(&show); - QAccessibleInterface *interface = QAccessible::queryAccessibleInterface(mw); - QCOMPARE(interface->text(QAccessible::Name), name); - QCOMPARE(interface->role(), QAccessible::Window); - delete interface; + QAccessibleInterface *iface = QAccessible::queryAccessibleInterface(mw); + QCOMPARE(iface->text(QAccessible::Name), name); + QCOMPARE(iface->role(), QAccessible::Window); + QVERIFY(iface->state().active); + + QAccessible::State activeState; + activeState.active = true; + QAccessibleStateChangeEvent active(mw, activeState); + QVERIFY_EVENT(&active); + + delete iface; delete mw; + } QTestAccessibility::clearEvents(); + + { + QWindow window; + window.setGeometry(80, 80, 40, 40); + window.show(); + QTRY_VERIFY(QGuiApplication::focusWindow() == &window); + +// We currently don't have an accessible interface for QWindow +// the active state is either in the QMainWindow or QQuickView +// QAIPtr windowIface(QAccessible::queryAccessibleInterface(&window)); +// QVERIFY(windowIface->state().active); + + QAccessible::State activeState; + activeState.active = true; + QAccessibleStateChangeEvent active(&window, activeState); + QVERIFY_EVENT(&active); + + QWindow child; + child.setParent(&window); + child.setGeometry(10, 10, 20, 20); + child.show(); + + child.requestActivateWindow(); + QTRY_VERIFY(QGuiApplication::focusWindow() == &child); + + QAccessibleStateChangeEvent deactivate(&window, activeState); + QVERIFY_EVENT(&deactivate); // deactivation of parent + + QAccessibleStateChangeEvent activeChild(&child, activeState); + QVERIFY_EVENT(&activeChild); + } } class CounterButton : public QPushButton { |