diff options
author | Martin Negyokru <negyokru@inf.u-szeged.hu> | 2022-04-07 10:55:26 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2022-04-13 23:45:41 +0000 |
commit | be46b3a76971e1c5ccee56b2026eb67785a7409d (patch) | |
tree | faa7d02e0b3a032f897a1aaf7c582717e02dd446 | |
parent | 530a08c921a10919a04a4e30d2cd4be7b0d9cdf8 (diff) |
Fix fatal error in getCurrentKeyboardLayout()
FATAL:xkb_keyboard_layout_engine.cc(640)] Keymap file failed to load: dk(polytonic)
Remove unnecessary tokenization of XKB layout.
Parsing of layout configuration is already handled by
XkbKeyboardLayoutEngine::ParseLayoutName().
Fixes: QTBUG-101201
Task-number: QTBUG-92971
Change-Id: Ia4f09ed99eb82064a3b12e14eda69a6e0e12b0dd
Reviewed-by: Peter Varga <pvarga@inf.u-szeged.hu>
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
(cherry picked from commit 69cd28b820ba8f8c578591b98f3ad88b00efcef3)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r-- | src/core/ozone/ozone_platform_qt.cpp | 25 |
1 files changed, 6 insertions, 19 deletions
diff --git a/src/core/ozone/ozone_platform_qt.cpp b/src/core/ozone/ozone_platform_qt.cpp index 33d7bd992..a44c1ff1a 100644 --- a/src/core/ozone/ozone_platform_qt.cpp +++ b/src/core/ozone/ozone_platform_qt.cpp @@ -184,29 +184,16 @@ static std::string getCurrentKeyboardLayout() if (XkbRF_GetNamesProp(dpy, nullptr, &vdr) == 0) return std::string(); - char *layout = strtok(vdr.layout, ","); - for (int i = 0; i < state.group; i++) { - layout = strtok(nullptr, ","); - if (layout == nullptr) - return std::string(); - } + if (!vdr.layout) + return std::string(); if (!vdr.variant) - return layout; - - char *variant = strtok(vdr.variant, ","); - if (!variant) - return layout; + return std::string(vdr.layout); - for (int i = 0; i < state.group; i++) { - variant = strtok(nullptr, ","); - if (variant == nullptr) - return layout; - } - - std::string layoutWithVariant = layout; + std::string layoutWithVariant = vdr.layout; layoutWithVariant = layoutWithVariant.append("-"); - layoutWithVariant = layoutWithVariant.append(variant); + layoutWithVariant = layoutWithVariant.append(vdr.variant); + return layoutWithVariant; } #endif // BUILDFLAG(USE_XKBCOMMON) |