Blob Blame History Raw
diff -up gnome-settings-daemon-2.24.0/plugins/keyboard/gsd-keyboard-xkb.c.fix-gdm-layout gnome-settings-daemon-2.24.0/plugins/keyboard/gsd-keyboard-xkb.c
--- gnome-settings-daemon-2.24.0/plugins/keyboard/gsd-keyboard-xkb.c.fix-gdm-layout	2008-09-30 22:56:41.000000000 -0400
+++ gnome-settings-daemon-2.24.0/plugins/keyboard/gsd-keyboard-xkb.c	2008-09-30 22:58:52.000000000 -0400
@@ -142,6 +142,7 @@ apply_xkb_settings (void)
 {
         GConfClient *conf_client;
         GkbdKeyboardConfig current_sys_kbd_config;
+        int group_to_activate = -1;
 
         if (!inited_ok)
                 return;
@@ -175,7 +176,7 @@ apply_xkb_settings (void)
                          for (i = 0, l = current_kbd_config.layouts_variants; l; i++, l = l->next) {
                                  char *lv = l->data;
                                  if (strncmp (lv, gdm_keyboard_layout, len) == 0 && (lv[len] == '\0' || lv[len] == '\t')) {
-                                        xkl_engine_lock_group (current_config.engine, i);
+                                        group_to_activate = i;
                                         break;
                                  }
                          }
@@ -206,6 +207,8 @@ apply_xkb_settings (void)
                 xkl_debug (100,
                            "Actual KBD configuration was not changed: redundant notification\n");
 
+        if (group_to_activate != -1)
+                xkl_engine_lock_group (current_config.engine, group_to_activate);
         gkbd_keyboard_config_term (&current_sys_kbd_config);
 }