7#include <QtGui/qguiapplication.h>
9#include <QtQuick/qquickitem.h>
10#include <QtQuick/private/qquickitem_p.h>
14#if QT_CONFIG(accessibility)
18QAccessibleQuickWindow::QAccessibleQuickWindow(QQuickWindow *object)
19 :QAccessibleObject(object)
23QList<QQuickItem *> QAccessibleQuickWindow::rootItems()
const
25 if (QQuickItem *ci = window() ? window()->contentItem() :
nullptr)
26 return accessibleUnignoredChildren(ci);
27 return QList<QQuickItem *>();
30int QAccessibleQuickWindow::childCount()
const
32 return rootItems().size();
35QAccessibleInterface *QAccessibleQuickWindow::parent()
const
38 return QAccessible::queryAccessibleInterface(qApp);
41QAccessibleInterface *QAccessibleQuickWindow::child(
int index)
const
43 const QList<QQuickItem*> &kids = rootItems();
44 if (index >= 0 && index < kids.size())
45 return QAccessible::queryAccessibleInterface(kids.at(index));
49QAccessibleInterface *QAccessibleQuickWindow::focusChild()
const
51 QObject *focusObject = window() ? window()->focusObject() :
nullptr;
53 QAccessibleInterface *iface = QAccessible::queryAccessibleInterface(focusObject);
54 if (!iface || iface ==
this || !iface->focusChild())
56 return iface->focusChild();
61QAccessible::Role QAccessibleQuickWindow::role()
const
63 return QAccessible::Window;
66QAccessible::State QAccessibleQuickWindow::state()
const
68 QAccessible::State st;
69 if (window() == QGuiApplication::focusWindow())
71 if (!window() || !window()->isVisible())
76QRect QAccessibleQuickWindow::rect()
const
80 return QRect(window()->x(), window()->y(), window()->width(), window()->height());
83QString QAccessibleQuickWindow::text(QAccessible::Text text)
const
87#ifdef Q_ACCESSIBLE_QUICK_ITEM_ENABLE_DEBUG_DESCRIPTION
88 if (text == QAccessible::DebugDescription) {
89 return QString::fromLatin1(object()->metaObject()->className()) ;
92 if (text == QAccessible::Name)
93 return window()->title();
98QAccessibleInterface *QAccessibleQuickWindow::childAt(
int x,
int y)
const
101 for (
int i = childCount() - 1; i >= 0; --i) {
102 QAccessibleInterface *childIface = child(i);
103 if (childIface && !childIface->state().invisible) {
104 if (QAccessibleInterface *iface = childIface->childAt(x, y))
106 if (childIface->rect().contains(x, y))
113int QAccessibleQuickWindow::indexOfChild(
const QAccessibleInterface *iface)
const
117 const QList<QQuickItem *> &roots = rootItems();
118 i = roots.size() - 1;
120 if (iface->object() == roots.at(i))