From 56cbab3b12abe1473b2ac431f4623dd6fc277d24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Morten=20S=C3=B8rvig?= Date: Tue, 6 Dec 2022 09:20:50 +0100 Subject: [PATCH] wasm: add accessibility container to QWasmWindow MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add accessibility (a11y) container QWasmWindow. This container should underlap the canvas with identical geometry but ordered below. Change-Id: I7b91e3e69e3b1afa1b03ef7f7b7336e48f1a1594 Reviewed-by: Morten Johan Sørvig (cherry picked from commit f4dd67461d9873cdbfe7bef970477366047924d7) Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/wasm/qwasmcssstyle.cpp | 5 +++++ src/plugins/platforms/wasm/qwasmwindow.cpp | 6 ++++++ src/plugins/platforms/wasm/qwasmwindow.h | 3 +++ 3 files changed, 14 insertions(+) diff --git a/src/plugins/platforms/wasm/qwasmcssstyle.cpp b/src/plugins/platforms/wasm/qwasmcssstyle.cpp index f37124c8343..869fb06a0a4 100644 --- a/src/plugins/platforms/wasm/qwasmcssstyle.cpp +++ b/src/plugins/platforms/wasm/qwasmcssstyle.cpp @@ -142,6 +142,11 @@ const char *Style = R"css( display: flex; } +.qt-window-a11y-container { + position: absolute; + z-index: -1; +} + .title-bar .image-button { width: 18px; height: 18px; diff --git a/src/plugins/platforms/wasm/qwasmwindow.cpp b/src/plugins/platforms/wasm/qwasmwindow.cpp index e38335f81c9..4b923087dbe 100644 --- a/src/plugins/platforms/wasm/qwasmwindow.cpp +++ b/src/plugins/platforms/wasm/qwasmwindow.cpp @@ -388,6 +388,7 @@ QWasmWindow::QWasmWindow(QWindow *w, QWasmCompositor *compositor, QWasmBackingSt m_titleBar(m_document.call("createElement", emscripten::val("div"))), m_label(m_document.call("createElement", emscripten::val("div"))), m_canvasContainer(m_document.call("createElement", emscripten::val("div"))), + m_a11yContainer(m_document.call("createElement", emscripten::val("div"))), m_canvas(m_document.call("createElement", emscripten::val("canvas"))) { m_qtWindow.set("className", "qt-window"); @@ -446,6 +447,9 @@ QWasmWindow::QWasmWindow(QWindow *w, QWasmCompositor *compositor, QWasmBackingSt m_canvasContainer["classList"].call("add", emscripten::val("qt-window-canvas-container")); m_canvasContainer.call("appendChild", m_canvas); + m_canvasContainer.call("appendChild", m_a11yContainer); + m_a11yContainer["classList"].call("add", emscripten::val("qt-window-a11y-container")); + compositor->screen()->element().call("appendChild", m_qtWindow); const bool rendersTo2dContext = w->surfaceType() != QSurface::OpenGLSurface; @@ -550,6 +554,8 @@ void QWasmWindow::setGeometry(const QRect &rect) m_qtWindow["style"].set("top", std::to_string(frameRect.top()) + "px"); m_canvasContainer["style"].set("width", std::to_string(clientAreaRect.width()) + "px"); m_canvasContainer["style"].set("height", std::to_string(clientAreaRect.height()) + "px"); + m_a11yContainer["style"].set("width", std::to_string(clientAreaRect.width()) + "px"); + m_a11yContainer["style"].set("height", std::to_string(clientAreaRect.height()) + "px"); // Important for the title flexbox to shrink correctly m_windowContents["style"].set("width", std::to_string(clientAreaRect.width()) + "px"); diff --git a/src/plugins/platforms/wasm/qwasmwindow.h b/src/plugins/platforms/wasm/qwasmwindow.h index 83593918254..81781dc037b 100644 --- a/src/plugins/platforms/wasm/qwasmwindow.h +++ b/src/plugins/platforms/wasm/qwasmwindow.h @@ -67,6 +67,8 @@ public: std::string canvasSelector() const; emscripten::val context2d() { return m_context2d; } + emscripten::val a11yContainer() { return m_a11yContainer; } + private: friend class QWasmScreen; @@ -95,6 +97,7 @@ private: emscripten::val m_titleBar; emscripten::val m_label; emscripten::val m_canvasContainer; + emscripten::val m_a11yContainer; emscripten::val m_canvas; emscripten::val m_context2d = emscripten::val::undefined();