diff options
Diffstat (limited to 'src/plugins/accessible/quick/qaccessiblequickitem.cpp')
-rw-r--r-- | src/plugins/accessible/quick/qaccessiblequickitem.cpp | 54 |
1 files changed, 13 insertions, 41 deletions
diff --git a/src/plugins/accessible/quick/qaccessiblequickitem.cpp b/src/plugins/accessible/quick/qaccessiblequickitem.cpp index 3521d4f98e..4b68574149 100644 --- a/src/plugins/accessible/quick/qaccessiblequickitem.cpp +++ b/src/plugins/accessible/quick/qaccessiblequickitem.cpp @@ -152,52 +152,24 @@ QList<QQuickItem *> QAccessibleQuickItem::childItems() const QAccessible::State QAccessibleQuickItem::state() const { - QAccessible::State state; + QQuickAccessibleAttached *attached = QQuickAccessibleAttached::attachedProperties(item()); + if (!attached) + return QAccessible::State(); - if (item()->hasActiveFocus()) { - state.focusable = true; - state.focused = true; - } - - if (item()->activeFocusOnTab()) - state.focusable = true; + QAccessible::State st = attached->state(); if (!item()->window() || !item()->window()->isVisible() ||!item()->isVisible() || qFuzzyIsNull(item()->opacity())) - state.invisible = true; + st.invisible = true; - QAccessible::Role r = role(); - switch (r) { - case QAccessible::Button: { - state.focusable = true; - QVariant checkable = item()->property("checkable"); - if (!checkable.toBool()) - break; - // fall through - } - case QAccessible::CheckBox: - case QAccessible::RadioButton: { - state.focusable = true; - state.checkable = true; - state.checked = item()->property("checked").toBool(); - break; - } - case QAccessible::MenuItem: - case QAccessible::PageTab: - case QAccessible::EditableText: - case QAccessible::SpinBox: - case QAccessible::Terminal: - case QAccessible::ScrollBar: - state.focusable = true; - break; - case QAccessible::ComboBox: - state.focusable = true; - state.editable = item()->property("editable").toBool(); - break; - default: - break; - } + if (item()->activeFocusOnTab()) + st.focusable = true; + if (item()->hasActiveFocus()) + st.focused = true; + + if (role() == QAccessible::ComboBox) + st.editable = item()->property("editable").toBool(); - return state; + return st; } QAccessible::Role QAccessibleQuickItem::role() const |