[gtk/gtk-3-24: 1/2] gdk: quartz: fix #2102 consumed_modifiers
- From: Alex Samorukov <asamorukov src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/gtk-3-24: 1/2] gdk: quartz: fix #2102 consumed_modifiers
- Date: Fri, 10 Jan 2020 21:08:32 +0000 (UTC)
commit af6487d70c7cf8954977182e868f98a8a1cb07d5
Author: Thomas Holder <thomas thomas-holder de>
Date: Sun Dec 1 15:14:20 2019 +0100
gdk: quartz: fix #2102 consumed_modifiers
gdk/quartz/gdkkeys-quartz.c | 28 +++++++++++++---------------
1 file changed, 13 insertions(+), 15 deletions(-)
---
diff --git a/gdk/quartz/gdkkeys-quartz.c b/gdk/quartz/gdkkeys-quartz.c
index f646372fe0..56922f039b 100644
--- a/gdk/quartz/gdkkeys-quartz.c
+++ b/gdk/quartz/gdkkeys-quartz.c
@@ -648,7 +648,6 @@ gdk_quartz_keymap_translate_keyboard_state (GdkKeymap *keymap,
{
guint tmp_keyval;
GdkModifierType bit;
- guint tmp_modifiers = 0;
if (keyval)
*keyval = 0;
@@ -662,24 +661,23 @@ gdk_quartz_keymap_translate_keyboard_state (GdkKeymap *keymap,
if (hardware_keycode < 0 || hardware_keycode >= NUM_KEYCODES)
return FALSE;
+ tmp_keyval = translate_keysym (hardware_keycode, group, state, level, effective_group);
+
/* Check if modifiers modify the keyval */
- for (bit = GDK_SHIFT_MASK; bit < GDK_BUTTON1_MASK; bit <<= 1)
+ if (consumed_modifiers)
{
- if (translate_keysym (hardware_keycode,
- (bit == GDK_MOD1_MASK) ? 0 : group,
- state & ~bit,
- NULL, NULL) !=
- translate_keysym (hardware_keycode,
- (bit == GDK_MOD1_MASK) ? 1 : group,
- state | bit,
- NULL, NULL))
- tmp_modifiers |= bit;
- }
+ guint tmp_modifiers = (state & GDK_MODIFIER_MASK);
- tmp_keyval = translate_keysym (hardware_keycode, group, state, level, effective_group);
+ for (bit = 1; bit <= tmp_modifiers; bit <<= 1)
+ {
+ if ((bit & tmp_modifiers) &&
+ translate_keysym (hardware_keycode, group, state & ~bit,
+ NULL, NULL) == tmp_keyval)
+ tmp_modifiers &= ~bit;
+ }
- if (consumed_modifiers)
- *consumed_modifiers = tmp_modifiers;
+ *consumed_modifiers = tmp_modifiers;
+ }
if (keyval)
*keyval = tmp_keyval;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]