summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/wasm/qwasmwindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/platforms/wasm/qwasmwindow.cpp')
-rw-r--r--src/plugins/platforms/wasm/qwasmwindow.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/plugins/platforms/wasm/qwasmwindow.cpp b/src/plugins/platforms/wasm/qwasmwindow.cpp
index 04f52ac9b1b..e49c1dc49f1 100644
--- a/src/plugins/platforms/wasm/qwasmwindow.cpp
+++ b/src/plugins/platforms/wasm/qwasmwindow.cpp
@@ -110,6 +110,7 @@ QWasmWindow::QWasmWindow(QWindow *w, QWasmDeadKeySupport *deadKeySupport,
// Set up m_inputElement, which takes focus whenever a Qt text input UI element has
// foucus.
m_inputElement["classList"].call<void>("add", emscripten::val("qt-window-input-element"));
+ m_inputElement.call<void>("setAttribute", std::string("contenteditable"), std::string("true"));
m_inputElement.set("type", "text");
m_inputElement["style"].set("position", "absolute");
m_inputElement["style"].set("left", 0);
@@ -227,6 +228,8 @@ void QWasmWindow::registerEventHandlers()
[this](emscripten::val event){ handleCompositionStartEvent(event); });
m_compositionEndCallback = QWasmEventHandler(m_window, "compositionend",
[this](emscripten::val event){ handleCompositionEndEvent(event); });
+ m_beforeInputCallback = QWasmEventHandler(m_window, "beforeinput",
+ [this](emscripten::val event){ handleBeforeInputEvent(event); });
}
QWasmWindow::~QWasmWindow()
@@ -789,6 +792,16 @@ void QWasmWindow::handleCompositionEndEvent(emscripten::val event)
m_focusHelper.set("innerHTML", std::string());
}
+void QWasmWindow::handleBeforeInputEvent(emscripten::val event)
+{
+ qWarning() << Q_FUNC_INFO;
+
+ if (QWasmInputContext *inputContext = QWasmIntegration::get()->wasmInputContext(); inputContext->isActive())
+ inputContext->beforeInputCallback(event);
+ // else
+ // m_focusHelper.set("innerHTML", std::string());
+}
+
void QWasmWindow::handlePointerEnterLeaveEvent(const PointerEvent &event)
{
if (processPointerEnterLeave(event))