x11: Fix first call to _gdk_x11_keymap_key_is_modifier()

_gdk_x11_keymap_key_is_modifier() never tries to set min/max_keycode
if they haven't been set before, meaning that until another function
sets those, all the keys will be seen as non-modifiers.

This causes GdkKeyEvents to be wrongly tagged with "->is_modifier = 0"
when in actual fact the key is a modifier. This fixes keyboard
shortcuts captured with GtkCellRendererAccel in "raw" mode thinking
a modifier without any actual keys is a valid shortcut.

https://bugzilla.gnome.org/show_bug.cgi?id=670400
This commit is contained in:
Bastien Nocera
2012-02-19 16:43:33 +01:00
parent 52026c3775
commit 6697d5c6de

View File

@ -1490,6 +1490,7 @@ _gdk_x11_keymap_key_is_modifier (GdkKeymap *keymap,
GdkX11Keymap *keymap_x11 = GDK_X11_KEYMAP (keymap);
gint i;
update_keyrange (keymap_x11);
if (keycode < keymap_x11->min_keycode ||
keycode > keymap_x11->max_keycode)
return FALSE;