Blame SOURCES/0021-Fix-the-logic-for-decoding-modifiers-map-in-Wayland-.patch

e1c9ed
From 1e0519c6465335dd380ad8d8209969c71eb78d48 Mon Sep 17 00:00:00 2001
de89c0
From: Rodney Dawes <dobey.pwns@gmail.com>
de89c0
Date: Fri, 15 Oct 2021 12:55:33 -0400
e1c9ed
Subject: [PATCH 21/40] Fix the logic for decoding modifiers map in Wayland
de89c0
 text input protocol
de89c0
de89c0
Correctly check for the flags in the modifiers map when we get it from
de89c0
the compositor, instead of modifying the map in the for loop conditional.
de89c0
de89c0
[ChangeLog][QWaylandInputContext] Fix modifiers map decoding
de89c0
logic when receiving the map from the compositor.
de89c0
de89c0
Fixes: QTBUG-97094
de89c0
Pick-to: 6.2 5.15 5.12
de89c0
Change-Id: Idad19f7b1f4560d40abbb5b31032360cfe915261
de89c0
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
de89c0
---
de89c0
 src/client/qwaylandinputcontext.cpp | 6 ++++--
de89c0
 1 file changed, 4 insertions(+), 2 deletions(-)
de89c0
de89c0
diff --git a/src/client/qwaylandinputcontext.cpp b/src/client/qwaylandinputcontext.cpp
de89c0
index 503fd735..e290baa2 100644
de89c0
--- a/src/client/qwaylandinputcontext.cpp
de89c0
+++ b/src/client/qwaylandinputcontext.cpp
de89c0
@@ -387,8 +387,10 @@ void QWaylandTextInput::zwp_text_input_v2_input_method_changed(uint32_t serial,
de89c0
 Qt::KeyboardModifiers QWaylandTextInput::modifiersToQtModifiers(uint32_t modifiers)
de89c0
 {
de89c0
     Qt::KeyboardModifiers ret = Qt::NoModifier;
de89c0
-    for (int i = 0; modifiers >>= 1; ++i) {
de89c0
-        ret |= m_modifiersMap[i];
de89c0
+    for (int i = 0; i < m_modifiersMap.size(); ++i) {
de89c0
+        if (modifiers & (1 << i)) {
de89c0
+            ret |= m_modifiersMap[i];
de89c0
+        }
de89c0
     }
de89c0
     return ret;
de89c0
 }
de89c0
-- 
e1c9ed
2.35.1
de89c0