summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLorn Potter <lorn.potter@gmail.com>2022-06-16 13:57:46 +1000
committerLorn Potter <lorn.potter@gmail.com>2022-06-18 05:50:25 +1000
commit87c2a401dabacddb94b61595e2873627c222c60a (patch)
treefacc1590fb3d9b5d77f7747f9fb503dcb8a35791
parent81b5395aef3bce878574fc26e4e75a4498f1c948 (diff)
wasm: fix unicode input
also remove duplicated function call to get Qt key for event Pick-to: 6.3 6.4 Fixes: QTBUG-78826 Change-Id: Ibaf0dd3eb428b65280ed1f840a4849b44f2868e0 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
-rw-r--r--src/plugins/platforms/wasm/qwasmcompositor.cpp2
-rw-r--r--src/plugins/platforms/wasm/qwasmeventtranslator.cpp14
-rw-r--r--src/plugins/platforms/wasm/qwasmeventtranslator.h2
3 files changed, 9 insertions, 9 deletions
diff --git a/src/plugins/platforms/wasm/qwasmcompositor.cpp b/src/plugins/platforms/wasm/qwasmcompositor.cpp
index b98c58134b..676ed6c4d0 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 065688f1d2..778e85d675 100644
--- a/src/plugins/platforms/wasm/qwasmeventtranslator.cpp
+++ b/src/plugins/platforms/wasm/qwasmeventtranslator.cpp
@@ -18,6 +18,7 @@
#include <private/qmakearray_p.h>
#include <QtCore/qnamespace.h>
#include <QCursor>
+#include <QtCore/private/qstringiterator_p.h>
#include <emscripten/bind.h>
@@ -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<Qt::Key>(c);
+ QString str = QString::fromUtf8(emscriptKey->key).toUpper();
+ QStringIterator i(str);
+ qtKey = static_cast<Qt::Key>(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 ca7cd94844..d098c10b77 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);