From d997d1241b4f02b71dbe0e9cd8eb5c47e3c7f661 Mon Sep 17 00:00:00 2001 From: Lorn Potter Date: Thu, 16 Jun 2022 13:57:46 +1000 Subject: [PATCH] wasm: fix unicode input MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit also remove duplicated function call to get Qt key for event Fixes: QTBUG-78826 Change-Id: Ibaf0dd3eb428b65280ed1f840a4849b44f2868e0 Reviewed-by: Morten Johan Sørvig (cherry picked from commit 87c2a401dabacddb94b61595e2873627c222c60a) Reviewed-by: Qt Cherry-pick Bot --- src/plugins/platforms/wasm/qwasmcompositor.cpp | 2 +- .../platforms/wasm/qwasmeventtranslator.cpp | 14 +++++++------- src/plugins/platforms/wasm/qwasmeventtranslator.h | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/plugins/platforms/wasm/qwasmcompositor.cpp b/src/plugins/platforms/wasm/qwasmcompositor.cpp index b98c58134b2..676ed6c4d09 100644 --- a/src/plugins/platforms/wasm/qwasmcompositor.cpp +++ b/src/plugins/platforms/wasm/qwasmcompositor.cpp @@ -1138,8 +1138,8 @@ bool QWasmCompositor::processKeyboard(int eventType, const EmscriptenKeyboardEve case EMSCRIPTEN_EVENT_KEYPRESS: case EMSCRIPTEN_EVENT_KEYDOWN: // down keyType = QEvent::KeyPress; - keyText = this->eventTranslator->getKeyText(keyEvent); qtKey = this->eventTranslator->getKey(keyEvent); + keyText = this->eventTranslator->getKeyText(keyEvent, qtKey); break; case EMSCRIPTEN_EVENT_KEYUP: // up keyType = QEvent::KeyRelease; diff --git a/src/plugins/platforms/wasm/qwasmeventtranslator.cpp b/src/plugins/platforms/wasm/qwasmeventtranslator.cpp index 065688f1d2d..778e85d675d 100644 --- a/src/plugins/platforms/wasm/qwasmeventtranslator.cpp +++ b/src/plugins/platforms/wasm/qwasmeventtranslator.cpp @@ -18,6 +18,7 @@ #include #include #include +#include #include @@ -229,9 +230,9 @@ Qt::Key QWasmEventTranslator::translateEmscriptKey(const EmscriptenKeyboardEvent if (qtKey == Qt::Key_unknown) { // cast to unicode key - QString str = QString::fromUtf8(emscriptKey->key); - ushort c = str.unicode()->toUpper().unicode(); // uppercase - qtKey = static_cast(c); + QString str = QString::fromUtf8(emscriptKey->key).toUpper(); + QStringIterator i(str); + qtKey = static_cast(i.next(0)); } return qtKey; @@ -364,11 +365,9 @@ QCursor QWasmEventTranslator::cursorForMode(QWasmCompositor::ResizeMode m) return Qt::ArrowCursor; } -QString QWasmEventTranslator::getKeyText(const EmscriptenKeyboardEvent *keyEvent) +QString QWasmEventTranslator::getKeyText(const EmscriptenKeyboardEvent *keyEvent, Qt::Key qtKey) { QString keyText; - Qt::Key qtKey = translateEmscriptKey(keyEvent); - //Qt::KeyboardModifiers modifiers = translateKeyboardEventModifier(keyEvent); if (m_emDeadKey != Qt::Key_unknown) { Qt::Key transformedKey = translateDeadKey(m_emDeadKey, qtKey); @@ -394,7 +393,8 @@ QString QWasmEventTranslator::getKeyText(const EmscriptenKeyboardEvent *keyEvent } } } - + if (keyText.isEmpty()) + keyText = QString::fromUtf8(keyEvent->key); return keyText; } diff --git a/src/plugins/platforms/wasm/qwasmeventtranslator.h b/src/plugins/platforms/wasm/qwasmeventtranslator.h index ca7cd948441..d098c10b77b 100644 --- a/src/plugins/platforms/wasm/qwasmeventtranslator.h +++ b/src/plugins/platforms/wasm/qwasmeventtranslator.h @@ -36,7 +36,7 @@ public: static Qt::MouseButton translateMouseButton(unsigned short button); static QCursor cursorForMode(QWasmCompositor::ResizeMode mode); - QString getKeyText(const EmscriptenKeyboardEvent *keyEvent); + QString getKeyText(const EmscriptenKeyboardEvent *keyEvent, Qt::Key key); Qt::Key getKey(const EmscriptenKeyboardEvent *keyEvent); void setStickyDeadKey(const EmscriptenKeyboardEvent *keyEvent);