aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/accessible
diff options
context:
space:
mode:
authorJan Arve Saether <jan-arve.saether@digia.com>2014-09-25 11:40:21 +0200
committerJan Arve Sæther <jan-arve.saether@theqtcompany.com>2014-10-21 08:05:24 +0200
commitf08338614578db9d98d7496b2a338d0e2dddc1bb (patch)
tree2cb064b10aaf3bf0fcd32a97aa77333747ddbd6e /src/quick/accessible
parentdb16f3e56e73846bc70eab08869dfb57706db2bf (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.cpp31
-rw-r--r--src/quick/accessible/qaccessiblequickview_p.h2
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