diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/3rdparty/xkbcommon/xkbcommon/xkbcommon_workaround.h (renamed from src/plugins/platforminputcontexts/compose/xkbcommon_workaround.h) | 0 | ||||
-rw-r--r-- | src/plugins/platforminputcontexts/compose/compose.pro | 5 | ||||
-rw-r--r-- | src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp | 7 | ||||
-rw-r--r-- | src/plugins/platforms/xcb/qxcbkeyboard.cpp | 22 | ||||
-rw-r--r-- | src/plugins/platforms/xcb/xcb-plugin.pro | 4 |
5 files changed, 36 insertions, 2 deletions
diff --git a/src/plugins/platforminputcontexts/compose/xkbcommon_workaround.h b/src/3rdparty/xkbcommon/xkbcommon/xkbcommon_workaround.h index 58ce143978..58ce143978 100644 --- a/src/plugins/platforminputcontexts/compose/xkbcommon_workaround.h +++ b/src/3rdparty/xkbcommon/xkbcommon/xkbcommon_workaround.h diff --git a/src/plugins/platforminputcontexts/compose/compose.pro b/src/plugins/platforminputcontexts/compose/compose.pro index 1bfd46ebca..2490a4ffbe 100644 --- a/src/plugins/platforminputcontexts/compose/compose.pro +++ b/src/plugins/platforminputcontexts/compose/compose.pro @@ -15,7 +15,6 @@ SOURCES += $$PWD/main.cpp \ HEADERS += $$PWD/qcomposeplatforminputcontext.h \ $$PWD/generator/qtablegenerator.h \ - $$PWD/xkbcommon_workaround.h \ # libxkbcommon contains(QT_CONFIG, xkbcommon-qt): { @@ -23,6 +22,10 @@ contains(QT_CONFIG, xkbcommon-qt): { } else { LIBS += $$QMAKE_LIBS_XKBCOMMON QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_XKBCOMMON + equals(QMAKE_VERSION_XKBCOMMON, "0.2.0") { + DEFINES += XKBCOMMON_0_2_0 + INCLUDEPATH += ../../../3rdparty/xkbcommon/xkbcommon/ + } } OTHER_FILES += $$PWD/compose.json diff --git a/src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp b/src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp index 400f7aece8..f746207cc0 100644 --- a/src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp +++ b/src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp @@ -49,7 +49,10 @@ #include <QtCore/QString> #include <xkbcommon/xkbcommon.h> + +#ifdef XKBCOMMON_0_2_0 #include <xkbcommon_workaround.h> +#endif //#define DEBUG_GENERATOR @@ -258,6 +261,7 @@ ushort TableGenerator::keysymToUtf8(quint32 sym) int bytes; chars.resize(8); +#ifdef XKBCOMMON_0_2_0 if (needWorkaround(sym)) { quint32 codepoint; if (sym == XKB_KEY_KP_Space) @@ -269,6 +273,9 @@ ushort TableGenerator::keysymToUtf8(quint32 sym) } else { bytes = xkb_keysym_to_utf8(sym, chars.data(), chars.size()); } +#else + bytes = xkb_keysym_to_utf8(sym, chars.data(), chars.size()); +#endif if (bytes == -1) qWarning("TableGenerator::keysymToUtf8 - buffer too small"); diff --git a/src/plugins/platforms/xcb/qxcbkeyboard.cpp b/src/plugins/platforms/xcb/qxcbkeyboard.cpp index f1b26853a1..18270d3cd5 100644 --- a/src/plugins/platforms/xcb/qxcbkeyboard.cpp +++ b/src/plugins/platforms/xcb/qxcbkeyboard.cpp @@ -53,6 +53,10 @@ #include <qpa/qplatformintegration.h> #include <qpa/qplatformcursor.h> +#ifdef XKBCOMMON_0_2_0 +#include <xkbcommon_workaround.h> +#endif + #ifndef XK_ISO_Left_Tab #define XK_ISO_Left_Tab 0xFE20 #endif @@ -1311,7 +1315,23 @@ QString QXcbKeyboard::keysymToUnicode(xcb_keysym_t sym) const int bytes; chars.resize(7); - if ((bytes = xkb_keysym_to_utf8(sym, chars.data(), chars.size())) == -1) +#ifdef XKBCOMMON_0_2_0 + if (needWorkaround(sym)) { + quint32 codepoint; + if (sym == XKB_KEY_KP_Space) + codepoint = XKB_KEY_space & 0x7f; + else + codepoint = sym & 0x7f; + + bytes = utf32_to_utf8(codepoint, chars.data()); + } else { + bytes = xkb_keysym_to_utf8(sym, chars.data(), chars.size()); + } +#else + bytes = xkb_keysym_to_utf8(sym, chars.data(), chars.size()); +#endif + + if (bytes == -1) qWarning("QXcbKeyboard::handleKeyEvent - buffer too small"); chars.resize(bytes-1); diff --git a/src/plugins/platforms/xcb/xcb-plugin.pro b/src/plugins/platforms/xcb/xcb-plugin.pro index e8d52ebf2f..f01fa90e2d 100644 --- a/src/plugins/platforms/xcb/xcb-plugin.pro +++ b/src/plugins/platforms/xcb/xcb-plugin.pro @@ -124,4 +124,8 @@ contains(QT_CONFIG, xkbcommon-qt): { } else { LIBS += $$QMAKE_LIBS_XKBCOMMON QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_XKBCOMMON + equals(QMAKE_VERSION_XKBCOMMON, "0.2.0") { + DEFINES += XKBCOMMON_0_2_0 + INCLUDEPATH += ../../../3rdparty/xkbcommon/xkbcommon/ + } } |