From ef224b3e46bffe145d21cbb39a67e7d38c1fe162 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sun, 12 Oct 2008 19:29:45 +0000 Subject: [PATCH] update spec --- fix-gdm-layout.patch | 89 +++++++++++++++++++++++++++++++++----- gnome-settings-daemon.spec | 11 +++-- 2 files changed, 82 insertions(+), 18 deletions(-) diff --git a/fix-gdm-layout.patch b/fix-gdm-layout.patch index 1a40e0b..59201b2 100644 --- a/fix-gdm-layout.patch +++ b/fix-gdm-layout.patch @@ -1,24 +1,89 @@ 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) +--- gnome-settings-daemon-2.24.0/plugins/keyboard/gsd-keyboard-xkb.c.fix-gdm-layout 2008-10-12 14:45:57.000000000 -0400 ++++ gnome-settings-daemon-2.24.0/plugins/keyboard/gsd-keyboard-xkb.c 2008-10-12 15:11:51.000000000 -0400 +@@ -142,12 +142,38 @@ apply_xkb_settings (void) { GConfClient *conf_client; GkbdKeyboardConfig current_sys_kbd_config; + int group_to_activate = -1; ++ const char *gdm_layout; 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')) { + + conf_client = gconf_client_get_default (); + ++ /* With GDM the user can already set a layout from the login ++ * screen. Try to keep that setting. ++ * We clear gdm_keyboard_layout early, so we don't risk ++ * recursion from gconf notification. ++ */ ++ gdm_layout = gdm_keyboard_layout; ++ gdm_keyboard_layout = NULL; ++ if (gdm_layout != NULL) { ++ GSList *layouts; ++ ++ layouts = gconf_client_get_list (conf_client, ++ GKBD_KEYBOARD_CONFIG_KEY_LAYOUTS, ++ GCONF_VALUE_STRING, ++ NULL); ++ if (layouts == NULL) { ++ layouts = g_slist_append (layouts, g_strdup (gdm_layout)); ++ gconf_client_set_list (conf_client, ++ GKBD_KEYBOARD_CONFIG_KEY_LAYOUTS, ++ GCONF_VALUE_STRING, ++ layouts, ++ NULL); ++ } ++ } ++ + gkbd_keyboard_config_init (¤t_sys_kbd_config, + conf_client, + xkl_engine); +@@ -158,29 +184,20 @@ apply_xkb_settings (void) + gkbd_keyboard_config_load_from_x_current (¤t_sys_kbd_config, + NULL); + +- /* With GDM the user can already set a layout from the login +- * screen. Try to keep that setting */ +- if (gdm_keyboard_layout != NULL) { +- if (current_kbd_config.layouts_variants == NULL) { +- current_kbd_config.layouts_variants = g_slist_append (NULL, (char *) gdm_keyboard_layout); +- gconf_client_set_list (conf_client, +- GKBD_KEYBOARD_CONFIG_KEY_LAYOUTS, +- GCONF_VALUE_STRING, +- current_kbd_config.layouts_variants, +- NULL); +- } else { +- GSList *l; +- int i; +- size_t len = strlen (gdm_keyboard_layout); +- 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) +- break; +- } +- } ++ if (gdm_layout != NULL) { ++ /* If there are multiple layouts, ++ * try to find the one closest to the gdm layout ++ */ ++ GSList *l; ++ int i; ++ size_t len = strlen (gdm_layout); ++ for (i = 0, l = current_kbd_config.layouts_variants; l; i++, l = l->next) { ++ char *lv = l->data; ++ if (strncmp (lv, gdm_layout, len) == 0 && (lv[len] == '\0' || lv[len] == '\t')) { ++ group_to_activate = i; ++ break; ++ } + } +- gdm_keyboard_layout = NULL; + } + + /* Ignore model if using evdev, since evdev needs its own model +@@ -206,6 +223,8 @@ apply_xkb_settings (void) xkl_debug (100, "Actual KBD configuration was not changed: redundant notification\n"); diff --git a/gnome-settings-daemon.spec b/gnome-settings-daemon.spec index 3e09031..caffbea 100644 --- a/gnome-settings-daemon.spec +++ b/gnome-settings-daemon.spec @@ -1,6 +1,6 @@ Name: gnome-settings-daemon Version: 2.24.0 -Release: 6%{?dist} +Release: 7%{?dist} Summary: The daemon sharing settings from GNOME to GTK+/KDE applications Group: System Environment/Daemons @@ -38,11 +38,8 @@ Patch7: gnome-settings-daemon-2.23.91-fnf7-cycle.patch # http://bugzilla.gnome.org/show_bug.cgi?id=552857 Patch8: gnome-settings-daemon-2.24.0-fade.patch -# http://bugzilla.gnome.org/show_bug.cgi?id=554525 -Patch9: fix-gdm-layout.patch - # http://bugzilla.gnome.org/show_bug.cgi?id=555873 -Patch10: fix-gdm-layout-even-more.patch +Patch9: fix-gdm-layout.patch %description A daemon to share settings from GNOME to other applications. It also @@ -67,7 +64,6 @@ developing applications that use %{name}. %patch7 -p1 -b .fnf7-cycle %patch8 -p1 -b .fade %patch9 -p1 -b .fix-gdm-layout -%patch10 -p1 -b .fix-gdm-layout-even-more %build aclocal @@ -167,6 +163,9 @@ fi %{_libdir}/pkgconfig/gnome-settings-daemon.pc %changelog +* Sun Oct 12 2008 Matthias Clasen - 2.24.0-7 +- Try harder not to override peoples configured keyboard layouts + * Sun Oct 12 2008 Ray Strode - 2.24.0-6 - Update fade patch to skip crossfade when changing frames in slideshow background.