diff options
author | Sharad Sahu <sharad.sahu@crossware.io> | 2023-08-25 15:20:18 +0530 |
---|---|---|
committer | Sharad Sahu <sharad.sahu@crossware.io> | 2023-08-30 19:11:46 +0530 |
commit | bb2f551b324f90153364580be48c7c241b723120 (patch) | |
tree | 7bc73752fe5d665b256aa60391f56c4b86a8f910 | |
parent | ca4633f243a23de1848ebf32aef45f23d6d18154 (diff) |
Create a menuItem element for accessibility when creating a MenuItem in a QML wasm application
Change-Id: Iba862211b72372e1f48639c8b1edfa6336869fa5
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
-rw-r--r-- | src/plugins/platforms/wasm/qwasmaccessibility.cpp | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/src/plugins/platforms/wasm/qwasmaccessibility.cpp b/src/plugins/platforms/wasm/qwasmaccessibility.cpp index 725d714b52..4c3cb46ba3 100644 --- a/src/plugins/platforms/wasm/qwasmaccessibility.cpp +++ b/src/plugins/platforms/wasm/qwasmaccessibility.cpp @@ -240,12 +240,21 @@ emscripten::val QWasmAccessibility::createHtmlElement(QAccessibleInterface *ifac case QAccessible::Dialog: { element = document.call<emscripten::val>("createElement", std::string("dialog")); }break; - case QAccessible::ToolBar: - case QAccessible::ButtonMenu: { + case QAccessible::ToolBar:{ element = document.call<emscripten::val>("createElement", std::string("div")); QString text = iface->text(QAccessible::Name); - element.call<void>("setAttribute", std::string("role"), std::string("widget")); + element.call<void>("setAttribute", std::string("role"), std::string("toolbar")); + element.call<void>("setAttribute", std::string("title"), text.toStdString()); + element.call<void>("addEventListener", emscripten::val("click"), + emscripten::val::module_property("qtEventReceived"), true); + }break; + case QAccessible::MenuItem: + case QAccessible::ButtonMenu: { + element = document.call<emscripten::val>("createElement", std::string("button")); + QString text = iface->text(QAccessible::Name); + + element.call<void>("setAttribute", std::string("role"), std::string("menuitem")); element.call<void>("setAttribute", std::string("title"), text.toStdString()); element.call<void>("addEventListener", emscripten::val("click"), emscripten::val::module_property("qtEventReceived"), true); @@ -254,12 +263,14 @@ emscripten::val QWasmAccessibility::createHtmlElement(QAccessibleInterface *ifac case QAccessible::PopupMenu: { element = document.call<emscripten::val>("createElement",std::string("div")); QString text = iface->text(QAccessible::Name); - element.call<void>("setAttribute", std::string("role"), std::string("widget")); + element.call<void>("setAttribute", std::string("role"), std::string("menubar")); element.call<void>("setAttribute", std::string("title"), text.toStdString()); for (int i = 0; i < iface->childCount(); ++i) { - ensureHtmlElement(iface->child(i)); - setHtmlElementTextName(iface->child(i)); - setHtmlElementGeometry(iface->child(i)); + emscripten::val childElement = emscripten::val::undefined(); + childElement= ensureHtmlElement(iface->child(i)); + childElement.call<void>("setAttribute", std::string("aria-owns"), text.toStdString()); + setHtmlElementTextName(iface->child(i)); + setHtmlElementGeometry(iface->child(i)); } }break; case QAccessible::EditableText: { @@ -493,6 +504,7 @@ void QWasmAccessibility::handleMenuUpdate(QAccessibleEvent *event) QString text = iface->text(QAccessible::Name); QString desc = iface->text(QAccessible::Description); switch (event->type()) { + case QAccessible::Focus: case QAccessible::NameChanged: case QAccessible::MenuStart ://"TODO: To implement later case QAccessible::PopupMenuStart://"TODO: To implement later |