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 (¤t_sys_kbd_config); }