]> spindle.queued.net Git - midori/commitdiff
Filter keyboard state against modfifier default mask
authorEnrico Tröger <enrico.troeger@uvena.de>
Mon, 29 Mar 2010 22:39:31 +0000 (00:39 +0200)
committerChristian Dywan <christian@twotoasts.de>
Mon, 29 Mar 2010 23:05:36 +0000 (01:05 +0200)
The modifier state does in fact incorporate modal keys such as
NumLock. So code assuming that state be 0 if no modifier is
pressed is wrong, if NumLock, CapsLock and the like are active.

The solution is to filter out these modal keys with
gtk_accelerator_get_default_mod_mask(), and compare the result.

This fixes the problem of being unable to type keys used as
single-letter shortcuts.

midori/midori-browser.c

index 2e2c4c0d2ee6899f4ec8d580b4dbf084dc08ee0d..cf83bb86b44293a64e9b67ff574b1c37b297e393 100644 (file)
@@ -1784,12 +1784,14 @@ midori_browser_key_press_event (GtkWidget*   widget,
 {
     GtkWindow* window = GTK_WINDOW (widget);
     GtkWidgetClass* widget_class;
+    guint clean_state;
 
     if (event->state & (GDK_CONTROL_MASK | GDK_MOD1_MASK))
         if (sokoke_window_activate_key (window, event))
             return TRUE;
 
-    if (!event->state && gtk_window_propagate_key_event (window, event))
+    clean_state = event->state & gtk_accelerator_get_default_mod_mask();
+    if (!clean_state && gtk_window_propagate_key_event (window, event))
         return TRUE;
 
     if (!(event->state & (GDK_CONTROL_MASK | GDK_MOD1_MASK)))