summaryrefslogtreecommitdiff
path: root/gdk/gdkevents.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdk/gdkevents.c')
-rw-r--r--gdk/gdkevents.c11
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;