diff options
author | Liang Qi <liang.qi@qt.io> | 2021-12-07 09:12:14 +0100 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2021-12-07 22:28:00 +0100 |
commit | 25fbb2173689838b4f62a2f2130bb4a8f1c0029e (patch) | |
tree | 38e85f41fc77742f173f8082720cd7ec7bed0c64 | |
parent | 1f4a6decae1d6550e29a23d3f221e5d7b20a38c9 (diff) |
qxkbcommon: UCS-4-encode surrogate characters in QKeyEvent::key()
Fixes: QTBUG-72776
Done-with: Liang Qi <liang.qi@qt.io>
Change-Id: I9d1f4e34527079c3bc460016fe9b953636b4d6cb
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Liang Qi <liang.qi@qt.io>
(cherry picked from commit 9ef69efb3bde086b593787efdda5ebd8f3544768)
-rw-r--r-- | src/platformsupport/input/xkbcommon/qxkbcommon.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/platformsupport/input/xkbcommon/qxkbcommon.cpp b/src/platformsupport/input/xkbcommon/qxkbcommon.cpp index e10f80f804..313e861585 100644 --- a/src/platformsupport/input/xkbcommon/qxkbcommon.cpp +++ b/src/platformsupport/input/xkbcommon/qxkbcommon.cpp @@ -41,7 +41,9 @@ #include <private/qmakearray_p.h> +#include <QtCore/private/qstringiterator_p.h> #include <QtCore/QMetaMethod> + #include <QtGui/QKeyEvent> #include <QtGui/private/qguiapplication_p.h> @@ -574,7 +576,9 @@ static int keysymToQtKey_internal(xkb_keysym_t keysym, Qt::KeyboardModifiers mod // e.g CTRL + ۲ (arabic two), is mapped to CTRL + Qt::Key_2. qtKey = Qt::Key_0 + text.unicode()->digitValue(); } else { - qtKey = text.unicode()->toUpper().unicode(); + text = text.toUpper(); + QStringIterator i(text); + qtKey = i.next(0); } } |