aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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