summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/wasm/qwasmaccessibility.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/platforms/wasm/qwasmaccessibility.cpp')
-rw-r--r--src/plugins/platforms/wasm/qwasmaccessibility.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/plugins/platforms/wasm/qwasmaccessibility.cpp b/src/plugins/platforms/wasm/qwasmaccessibility.cpp
index 1cf81453fe7..35e804531bc 100644
--- a/src/plugins/platforms/wasm/qwasmaccessibility.cpp
+++ b/src/plugins/platforms/wasm/qwasmaccessibility.cpp
@@ -363,6 +363,17 @@ emscripten::val QWasmAccessibility::createHtmlElement(QAccessibleInterface *ifac
addEventListener(element, "change");
} break;
+ case QAccessible::Switch: {
+ element = document.call<emscripten::val>("createElement", std::string("button"));
+ setAttribute(element, "type", "button");
+ setAttribute(element, "role", "switch");
+ if (iface->state().checked)
+ setAttribute(element, "aria-checked", "true");
+ else
+ setAttribute(element, "aria-checked", "false");
+ addEventListener(element, "change");
+ } break;
+
case QAccessible::RadioButton: {
element = document.call<emscripten::val>("createElement", std::string("input"));
setAttribute(element, "type", "radio");
@@ -743,6 +754,28 @@ void QWasmAccessibility::handleCheckBoxUpdate(QAccessibleEvent *event)
break;
}
}
+
+void QWasmAccessibility::handleSwitchUpdate(QAccessibleEvent *event)
+{
+ switch (event->type()) {
+ case QAccessible::Focus:
+ case QAccessible::NameChanged: {
+ setHtmlElementTextName(event->accessibleInterface());
+ } break;
+ case QAccessible::StateChanged: {
+ QAccessibleInterface *accessible = event->accessibleInterface();
+ const emscripten::val element = getHtmlElement(accessible);
+ if (accessible->state().checked)
+ setAttribute(element, "aria-checked", "true");
+ else
+ setAttribute(element, "aria-checked", "false");
+ } break;
+ default:
+ qCDebug(lcQpaAccessibility) << "TODO: implement handleSwitchUpdate for event" << event->type();
+ break;
+ }
+}
+
void QWasmAccessibility::handleToolUpdate(QAccessibleEvent *event)
{
QAccessibleInterface *iface = event->accessibleInterface();
@@ -1152,6 +1185,9 @@ void QWasmAccessibility::notifyAccessibilityUpdate(QAccessibleEvent *event)
case QAccessible::CheckBox:
handleCheckBoxUpdate(event);
break;
+ case QAccessible::Switch:
+ handleSwitchUpdate(event);
+ break;
case QAccessible::EditableText:
handleLineEditUpdate(event);
break;