diff options
Diffstat (limited to 'src/quick')
-rw-r--r-- | src/quick/accessible/qaccessiblequickitem.cpp | 9 | ||||
-rw-r--r-- | src/quick/items/qquickitem.cpp | 13 | ||||
-rw-r--r-- | src/quick/items/qquickitem_p.h | 4 |
3 files changed, 22 insertions, 4 deletions
diff --git a/src/quick/accessible/qaccessiblequickitem.cpp b/src/quick/accessible/qaccessiblequickitem.cpp index 4ccfdb9142..44a2caecec 100644 --- a/src/quick/accessible/qaccessiblequickitem.cpp +++ b/src/quick/accessible/qaccessiblequickitem.cpp @@ -204,11 +204,12 @@ QAccessible::Role QAccessibleQuickItem::role() const if (qobject_cast<QQuickText*>(const_cast<QQuickItem *>(item()))) return QAccessible::StaticText; - QVariant v = QQuickAccessibleAttached::property(item(), "role"); - bool ok; - QAccessible::Role role = (QAccessible::Role)v.toInt(&ok); - if (!ok) // Not sure if this check is needed. + QAccessible::Role role = QAccessible::NoRole; + if (item()) + role = QQuickItemPrivate::get(item())->accessibleRole(); + if (role == QAccessible::NoRole) role = QAccessible::Client; + return role; } diff --git a/src/quick/items/qquickitem.cpp b/src/quick/items/qquickitem.cpp index 1865ba9d03..b742dc16e9 100644 --- a/src/quick/items/qquickitem.cpp +++ b/src/quick/items/qquickitem.cpp @@ -8046,6 +8046,19 @@ QQuickItemPrivate::ExtraData::ExtraData() { } + +#ifndef QT_NO_ACCESSIBILITY +QAccessible::Role QQuickItemPrivate::accessibleRole() const +{ + Q_Q(const QQuickItem); + QQuickAccessibleAttached *accessibleAttached = qobject_cast<QQuickAccessibleAttached *>(qmlAttachedPropertiesObject<QQuickAccessibleAttached>(q, false)); + if (accessibleAttached) + return accessibleAttached->role(); + + return QAccessible::NoRole; +} +#endif + QT_END_NAMESPACE #include <moc_qquickitem.cpp> diff --git a/src/quick/items/qquickitem_p.h b/src/quick/items/qquickitem_p.h index 9172f7eff1..634aa2b658 100644 --- a/src/quick/items/qquickitem_p.h +++ b/src/quick/items/qquickitem_p.h @@ -534,6 +534,10 @@ public: virtual void implicitWidthChanged(); virtual void implicitHeightChanged(); +#ifndef QT_NO_ACCESSIBILITY + virtual QAccessible::Role accessibleRole() const; +#endif + void setImplicitAntialiasing(bool antialiasing); void resolveLayoutMirror(); |