aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Sitter <sitter@kde.org>2022-11-28 14:59:33 +0100
committerHarald Sitter <sitter@kde.org>2022-12-03 12:45:13 +0100
commit20fd2902a6d7bdb4a3306005d2718ca5a8fef96d (patch)
tree198380461c9fa5e029f54d0e6e56a5e8ff34b0c7
parent665db9b9aab765dfdda129202b3b4d085b4a89b6 (diff)
a11y: track item enabled state
disabled items are neither enabled nor focusable Change-Id: I4f286c7b85605d5ad6fa787d1f5cfcce1297d268 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
-rw-r--r--src/quick/accessible/qaccessiblequickitem.cpp4
-rw-r--r--src/quick/items/qquickitem.cpp9
2 files changed, 13 insertions, 0 deletions
diff --git a/src/quick/accessible/qaccessiblequickitem.cpp b/src/quick/accessible/qaccessiblequickitem.cpp
index c47a94e3aa..4a446e468d 100644
--- a/src/quick/accessible/qaccessiblequickitem.cpp
+++ b/src/quick/accessible/qaccessiblequickitem.cpp
@@ -441,6 +441,10 @@ QAccessible::State QAccessibleQuickItem::state() const
if (role() == QAccessible::EditableText)
if (auto ti = qobject_cast<QQuickTextInput *>(item()))
state.passwordEdit = ti->echoMode() != QQuickTextInput::Normal;
+ if (!item()->isEnabled()) {
+ state.focusable = false;
+ state.disabled = true;
+ }
return state;
}
diff --git a/src/quick/items/qquickitem.cpp b/src/quick/items/qquickitem.cpp
index 5f86139566..32009939df 100644
--- a/src/quick/items/qquickitem.cpp
+++ b/src/quick/items/qquickitem.cpp
@@ -6502,6 +6502,15 @@ void QQuickItemPrivate::setEffectiveEnableRecur(QQuickItem *scope, bool newEffec
}
itemChange(QQuickItem::ItemEnabledHasChanged, bool(effectiveEnable));
+#if QT_CONFIG(accessibility)
+ if (isAccessible) {
+ QAccessible::State changedState;
+ changedState.disabled = true;
+ changedState.focusable = true;
+ QAccessibleStateChangeEvent ev(q, changedState);
+ QAccessible::updateAccessibility(&ev);
+ }
+#endif
emit q->enabledChanged();
}