From 9ef69efb3bde086b593787efdda5ebd8f3544768 Mon Sep 17 00:00:00 2001 From: Gatis Paeglis Date: Fri, 1 Feb 2019 10:41:01 +0100 Subject: [PATCH] qxkbcommon: UCS-4-encode surrogate characters in QKeyEvent::key() Fixes: QTBUG-72776 Pick-to: 6.2 5.15 Done-with: Liang Qi Change-Id: I9d1f4e34527079c3bc460016fe9b953636b4d6cb Reviewed-by: Edward Welbourne Reviewed-by: Liang Qi --- src/gui/platform/unix/qxkbcommon.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/gui/platform/unix/qxkbcommon.cpp b/src/gui/platform/unix/qxkbcommon.cpp index b1ec320b878..9072030b958 100644 --- a/src/gui/platform/unix/qxkbcommon.cpp +++ b/src/gui/platform/unix/qxkbcommon.cpp @@ -41,7 +41,9 @@ #include +#include #include + #include #include @@ -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); } }