diff options
author | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2014-01-10 16:36:05 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-01-27 16:00:13 +0100 |
commit | f0595284cbe85b5716daaf307154c1ed7e660a26 (patch) | |
tree | a3a0c1347130b1b6c8418780d16d2d7f308ebf69 /src/plugins | |
parent | a1ee538395198f998a73f3ef7545392aeb680900 (diff) |
Accessibility: add states to QQuickAccessibleAttached
This makes it possible to set the state of accessible objects in qml.
Change-Id: Ide70b885dac8fed180d2b221540cf2b699ac78ff
Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
Diffstat (limited to 'src/plugins')
-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 |