summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2009-11-25 01:02:40 -0500
committerMatthias Clasen <mclasen@redhat.com>2009-11-25 01:02:40 -0500
commitd4b92737abaf1f7d25090cc989846ca130617b73 (patch)
treef98f1558edce559f8a361b6fbb7cd83a9a8ef05e
parentba218a77892739a3668a3369370afb5d41de8c03 (diff)
downloadgtk+-d4b92737abaf1f7d25090cc989846ca130617b73.tar.gz
Make level3 keys work again
We were not paying attention to consumed modifiers when adding virtual modifiers. This fixes RH bug 537567.
-rw-r--r--gdk/x11/gdkevents-x11.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/gdk/x11/gdkevents-x11.c b/gdk/x11/gdkevents-x11.c
index 032f9a554c..a9efe76af1 100644
--- a/gdk/x11/gdkevents-x11.c
+++ b/gdk/x11/gdkevents-x11.c
@@ -618,6 +618,7 @@ translate_key_event (GdkDisplay *display,
GdkKeymap *keymap = gdk_keymap_get_for_display (display);
gunichar c = 0;
gchar buf[7];
+ GdkModifierType consumed, state;
event->key.type = xevent->xany.type == KeyPress ? GDK_KEY_PRESS : GDK_KEY_RELEASE;
event->key.time = xevent->xkey.time;
@@ -633,9 +634,11 @@ translate_key_event (GdkDisplay *display,
event->key.state,
event->key.group,
&event->key.keyval,
- NULL, NULL, NULL);
+ NULL, NULL, &consumed);
+ state = event->key.state & ~consumed;
+ _gdk_keymap_add_virtual_modifiers (keymap, &state);
+ event->key.state |= state;
- _gdk_keymap_add_virtual_modifiers (keymap, &event->key.state);
event->key.is_modifier = _gdk_keymap_key_is_modifier (keymap, event->key.hardware_keycode);
/* Fill in event->string crudely, since various programs