aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/accessible/quick/qaccessiblequickitem.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/accessible/quick/qaccessiblequickitem.cpp')
-rw-r--r--src/plugins/accessible/quick/qaccessiblequickitem.cpp54
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