diff options
author | Jan Arve Saether <jan-arve.saether@digia.com> | 2014-09-25 11:40:21 +0200 |
---|---|---|
committer | Jan Arve Sæther <jan-arve.saether@theqtcompany.com> | 2014-10-21 08:05:24 +0200 |
commit | f08338614578db9d98d7496b2a338d0e2dddc1bb (patch) | |
tree | 2cb064b10aaf3bf0fcd32a97aa77333747ddbd6e /src/quick/accessible | |
parent | db16f3e56e73846bc70eab08869dfb57706db2bf (diff) |
Don't assume there is only one toplevel item.
With the upcoming introduction of unignoredChildren, there can
exist many top level items (if the root item is ignored).
Change-Id: If7aaea08fdd4d1f5a0a5109e1239c53e0af9b61e
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
Diffstat (limited to 'src/quick/accessible')
-rw-r--r-- | src/quick/accessible/qaccessiblequickview.cpp | 31 | ||||
-rw-r--r-- | src/quick/accessible/qaccessiblequickview_p.h | 2 |
2 files changed, 18 insertions, 15 deletions
diff --git a/src/quick/accessible/qaccessiblequickview.cpp b/src/quick/accessible/qaccessiblequickview.cpp index db0b042d3b..e3ee1d2722 100644 --- a/src/quick/accessible/qaccessiblequickview.cpp +++ b/src/quick/accessible/qaccessiblequickview.cpp @@ -50,19 +50,16 @@ QAccessibleQuickWindow::QAccessibleQuickWindow(QQuickWindow *object) { } -QQuickItem *QAccessibleQuickWindow::rootItem() const +QList<QQuickItem *> QAccessibleQuickWindow::rootItems() const { - if (QQuickItem *ci = window()->contentItem()) { - const QList<QQuickItem *> &childItems = accessibleUnignoredChildren(ci); - if (!childItems.isEmpty()) - return childItems.first(); - } - return 0; + if (QQuickItem *ci = window()->contentItem()) + return accessibleUnignoredChildren(ci); + return QList<QQuickItem *>(); } int QAccessibleQuickWindow::childCount() const { - return rootItem() ? 1 : 0; + return rootItems().count(); } QAccessibleInterface *QAccessibleQuickWindow::parent() const @@ -73,8 +70,9 @@ QAccessibleInterface *QAccessibleQuickWindow::parent() const QAccessibleInterface *QAccessibleQuickWindow::child(int index) const { - if (index == 0) - return QAccessible::queryAccessibleInterface(rootItem()); + const QList<QQuickItem*> &kids = rootItems(); + if (index >= 0 && index < kids.count()) + return QAccessible::queryAccessibleInterface(kids.at(index)); return 0; } @@ -127,12 +125,17 @@ QAccessibleInterface *QAccessibleQuickWindow::childAt(int x, int y) const int QAccessibleQuickWindow::indexOfChild(const QAccessibleInterface *iface) const { + int i = -1; if (iface) { - QQuickItem *declarativeRoot = rootItem(); - if (declarativeRoot == iface->object()) - return 0; + const QList<QQuickItem *> &roots = rootItems(); + i = roots.count() - 1; + while (i >= 0) { + if (iface->object() == roots.at(i)) + break; + --i; + } } - return -1; + return i; } QT_END_NAMESPACE diff --git a/src/quick/accessible/qaccessiblequickview_p.h b/src/quick/accessible/qaccessiblequickview_p.h index 44a3bc047b..f6da6ba25d 100644 --- a/src/quick/accessible/qaccessiblequickview_p.h +++ b/src/quick/accessible/qaccessiblequickview_p.h @@ -60,7 +60,7 @@ public: private: QQuickWindow *window() const { return static_cast<QQuickWindow*>(object()); } - QQuickItem *rootItem() const; + QList<QQuickItem *> rootItems() const; }; #endif // QT_NO_ACCESSIBILITY |