summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Negyokru <negyokru@inf.u-szeged.hu>2022-04-07 10:55:26 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2022-04-25 14:36:54 +0000
commitb32168cb4d9ec461a497b727798cab44126993d3 (patch)
treed06df7f7787bb294b38b41b9bf092219739cb5d5
parente63669cf8538ab1ae4845ba7579b5021b61329d3 (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.cpp25
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 0affec0d3..b7fd93737 100644
--- a/src/core/ozone/ozone_platform_qt.cpp
+++ b/src/core/ozone/ozone_platform_qt.cpp
@@ -186,29 +186,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)