diff options
Diffstat (limited to 'gdk/gdkevents.c')
-rw-r--r-- | gdk/gdkevents.c | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/gdk/gdkevents.c b/gdk/gdkevents.c index 41706885af..9d2a689381 100644 --- a/gdk/gdkevents.c +++ b/gdk/gdkevents.c @@ -1604,6 +1604,7 @@ gdk_key_event_matches (GdkEvent *event, GdkModifierType modifiers) { GdkKeyEvent *self = (GdkKeyEvent *) event; + GdkKeymap *keymap; guint keycode; GdkModifierType state; guint ev_keyval; @@ -1644,7 +1645,7 @@ gdk_key_event_matches (GdkEvent *event, { /* modifier match */ GdkKeymapKey *keys; - int n_keys; + guint n_keys; int i; guint key; @@ -1667,7 +1668,8 @@ gdk_key_event_matches (GdkEvent *event, return GDK_KEY_MATCH_EXACT; } - gdk_display_map_keyval (gdk_event_get_display (event), keyval, &keys, &n_keys); + keymap = gdk_display_get_keymap (gdk_event_get_display (event)); + gdk_keymap_get_cached_entries_for_keyval (keymap, keyval, &keys, &n_keys); for (i = 0; i < n_keys; i++) { @@ -1676,14 +1678,9 @@ gdk_key_event_matches (GdkEvent *event, /* Only match for group if it's an accel mod */ (!group_mod_is_accel_mod || keys[i].group == layout)) { - /* partial match */ - g_free (keys); - return GDK_KEY_MATCH_PARTIAL; } } - - g_free (keys); } return GDK_KEY_MATCH_NONE; |