diff options
author | Gatis Paeglis <gatis.paeglis@qt.io> | 2019-02-01 10:41:01 +0100 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2021-12-06 15:41:33 +0100 |
commit | 9ef69efb3bde086b593787efdda5ebd8f3544768 (patch) | |
tree | 89ce6a9c5a732381760c84ab0c7c14d49aff0eab /src/gui/platform | |
parent | 5bacfbd77ec5e4a7c62cf5951f68b0026fd22869 (diff) |
qxkbcommon: UCS-4-encode surrogate characters in QKeyEvent::key()
Fixes: QTBUG-72776
Pick-to: 6.2 5.15
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>
Diffstat (limited to 'src/gui/platform')
-rw-r--r-- | src/gui/platform/unix/qxkbcommon.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/gui/platform/unix/qxkbcommon.cpp b/src/gui/platform/unix/qxkbcommon.cpp index b1ec320b87..9072030b95 100644 --- a/src/gui/platform/unix/qxkbcommon.cpp +++ b/src/gui/platform/unix/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> @@ -588,7 +590,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); } } |