Hello community, here is the log from the commit of package gnome-settings-daemon for openSUSE:Factory checked in at Tue Dec 8 10:41:37 CET 2009. -------- --- GNOME/gnome-settings-daemon/gnome-settings-daemon.changes 2009-10-22 09:57:42.000000000 +0200 +++ /mounts/work_src_done/STABLE/gnome-settings-daemon/gnome-settings-daemon.changes 2009-12-04 18:40:42.000000000 +0100 @@ -1,0 +2,13 @@ +Wed Dec 2 16:44:02 CET 2009 - vuntz@opensuse.org + +- Update to version 2.28.1: + + Try harder to use the keyboard layout passed by gdm. + + Updated translations. +- Drop gnome-settings-daemon-try-harder-gdm-layout.patch: part of + it is upstream, the other part is in a new patch. +- Add gnome-settings-daemon-add-layout-switcher.patch, which is the + part that was in the old patch. +- Add gnome-settings-daemon-gdm-layout-variant.patch to fix some + bug in the GDM keyboard layout handling. + +------------------------------------------------------------------- calling whatdependson for head-i586 Old: ---- gnome-settings-daemon-2.28.0.tar.bz2 gnome-settings-daemon-try-harder-gdm-layout.patch New: ---- gnome-settings-daemon-2.28.1.tar.bz2 gnome-settings-daemon-add-layout-switcher.patch gnome-settings-daemon-gdm-layout-variant.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ gnome-settings-daemon.spec ++++++ --- /var/tmp/diff_new_pack.yINqIY/_old 2009-12-08 10:40:46.000000000 +0100 +++ /var/tmp/diff_new_pack.yINqIY/_new 2009-12-08 10:40:46.000000000 +0100 @@ -1,5 +1,5 @@ # -# spec file for package gnome-settings-daemon (Version 2.28.0) +# spec file for package gnome-settings-daemon (Version 2.28.1) # # Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany. # @@ -19,9 +19,9 @@ Name: gnome-settings-daemon %define _name gnome-settings-daemon -Version: 2.28.0 -Release: 2 -License: GPL v2 or later +Version: 2.28.1 +Release: 1 +License: GPLv2+ Summary: Settings daemon for the GNOME desktop Url: http://www.gnome.org Group: System/GUI/GNOME @@ -38,8 +38,10 @@ Patch11: gnome-settings-daemon-bnc461755-randr-rotate-wacom.diff # PATCH-FIX-UPSTREAM gnome-settings-daemon-activate-xkb-with-broken.patch bgo585868 vuntz@novell.com -- Make sure we activate the right layout when broken layouts are in gconf Patch12: gnome-settings-daemon-activate-xkb-with-broken.patch -# PATCH-FIX-UPSTREAM # gnome-settings-daemon-try-harder-gdm-layout.patch bgo585290 vuntz@novell.com -- Try harder to use the keyboard layout passed from GDM -Patch13: gnome-settings-daemon-try-harder-gdm-layout.patch +# PATCH-FIX-UPSTREAM gnome-settings-daemon-add-layout-switcher.patch bgo603806 vuntz@opensuse.org -- Add a layout switching combo if needed; the real fix implies some API change in libgnomekbd (see upstream bug) +Patch13: gnome-settings-daemon-add-layout-switcher.patch +# PATCH-FIX-UPSTREAM gnome-settings-daemon-gdm-layout-variant.patch vuntz@opensuse.org -- Taken from git +Patch14: gnome-settings-daemon-gdm-layout-variant.patch BuildRequires: fdupes BuildRequires: gnome-common BuildRequires: gnome-desktop-devel @@ -66,7 +68,7 @@ splitted from it for a more general use. %package devel -License: GPL v2 or later +License: GPLv2+ Summary: Development package for the GNOME settings daemon Group: System/GUI/GNOME Requires: %{name} = %{version} @@ -98,6 +100,7 @@ #%patch11 -p1 %patch12 -p1 %patch13 -p1 +%patch14 -p1 gnome-patch-translation-update %build ++++++ gnome-settings-daemon-2.28.0.tar.bz2 -> gnome-settings-daemon-2.28.1.tar.bz2 ++++++ ++++ 7845 lines of diff (skipped) ++++++ gnome-settings-daemon-add-layout-switcher.patch ++++++ diff --git a/plugins/keyboard/gsd-keyboard-xkb.c b/plugins/keyboard/gsd-keyboard-xkb.c index cb969e3..3a5ed6c 100644 --- a/plugins/keyboard/gsd-keyboard-xkb.c +++ b/plugins/keyboard/gsd-keyboard-xkb.c @@ -137,6 +137,103 @@ apply_desktop_settings (void) gkbd_desktop_config_activate (¤t_config); } +#define GROUP_SWITCHERS_GROUP "grp" +#define DEFAULT_GROUP_SWITCH "grp:shifts_toggle" + +static void +_maybe_add_layout_switcher (GSList *layouts, + GConfClient *conf_client) +{ + GSList *options; + GSList *option; + gboolean any_switcher; + + /* do we have more than one layout? */ + if (g_slist_length (layouts) > 1) + return; + + /* If yes, we need to make sure there's a way to change the layout + * Based on xkl_layout_chooser_add_default_switcher_if_necessary() in + * capplets/keyboard/gnome-keyboard-properties-xkbltadd.c + * (gnome-control-center) */ + options = gconf_client_get_list (conf_client, + GKBD_KEYBOARD_CONFIG_KEY_OPTIONS, + GCONF_VALUE_STRING, + NULL); + + if (options == NULL) { + /* nothing in gconf, get the current options from X */ + GkbdKeyboardConfig kbd_config; + + gkbd_keyboard_config_init (&kbd_config, + conf_client, + xkl_engine); + gkbd_keyboard_config_load_from_x_initial (&kbd_config, NULL); + + for (option = kbd_config.options; option != NULL; option = option->next) { + options = g_slist_prepend (options, + g_strdup (option->data)); + } + + options = g_slist_reverse (options); + + gkbd_keyboard_config_term (&kbd_config); + } + + any_switcher = FALSE; + + while (option != NULL) { + char *g, *o; + + if (gkbd_keyboard_config_split_items (option->data, &g, &o)) { + if (!g_ascii_strcasecmp (g, GROUP_SWITCHERS_GROUP)) { + any_switcher = TRUE; + break; + } + } + option = option->next; + } + + /* no option to switch between layouts, let's add one */ + if (!any_switcher) { + XklConfigItem *ci = xkl_config_item_new (); + + g_snprintf (ci->name, XKL_MAX_CI_NAME_LENGTH, + DEFAULT_GROUP_SWITCH); + + /* we make sure the option we want to add is known */ + if (!xkl_registry) { + xkl_registry = xkl_config_registry_get_instance (xkl_engine); + if (!xkl_config_registry_load (xkl_registry, TRUE)) { + g_object_unref (xkl_registry); + xkl_registry = NULL; + } + } + + if (xkl_registry && + xkl_config_registry_find_option (xkl_registry, + GROUP_SWITCHERS_GROUP, + ci)) { + const char *id; + + id = gkbd_keyboard_config_merge_items + (GROUP_SWITCHERS_GROUP, + DEFAULT_GROUP_SWITCH); + + options = g_slist_append (options, g_strdup (id)); + gconf_client_set_list (conf_client, + GKBD_KEYBOARD_CONFIG_KEY_OPTIONS, + GCONF_VALUE_STRING, options, + NULL); + } + + g_object_unref (G_OBJECT (ci)); + } + + g_slist_foreach (options, (GFunc) g_free, NULL); + g_slist_free (options); +} + static gboolean try_activating_xkb_config_if_new (GkbdKeyboardConfig *current_sys_kbd_config) { @@ -274,6 +371,8 @@ apply_xkb_settings (void) g_slist_foreach (free_layouts, (GFunc) g_free, NULL); g_slist_free (free_layouts); + + _maybe_add_layout_switcher (layouts, conf_client); } gconf_client_set_list (conf_client, ++++++ gnome-settings-daemon-gdm-layout-variant.patch ++++++ commit 3d5189d3984980ec97d794f7bde6159bc97e1379 Author: Martin Pitt <martin.pitt@ubuntu.com> Date: Mon Oct 19 18:59:07 2009 +0200 fix variant handling in $GDM_KEYBOARD_LAYOUT gdm's configuration and $GDM_KEYBOARD_LAYOUT separates layout and variant with a space, but GConf uses tabs. Convert spaces to tabs in $GDM_KEYBOARD_LAYOUT to work with either format, for more robustness. https://bugzilla.gnome.org/show_bug.cgi?id=596897 Index: gnome-settings-daemon-2.28.1/plugins/keyboard/gsd-keyboard-xkb.c =================================================================== --- gnome-settings-daemon-2.28.1.orig/plugins/keyboard/gsd-keyboard-xkb.c +++ gnome-settings-daemon-2.28.1/plugins/keyboard/gsd-keyboard-xkb.c @@ -314,7 +314,8 @@ apply_xkb_settings (void) GConfClient *conf_client; GkbdKeyboardConfig current_sys_kbd_config; int group_to_activate = -1; - const char *gdm_layout; + char *gdm_layout; + char *s; if (!inited_ok) return; @@ -326,8 +327,18 @@ apply_xkb_settings (void) * We clear gdm_keyboard_layout early, so we don't risk * recursion from gconf notification. */ - gdm_layout = gdm_keyboard_layout; + gdm_layout = g_strdup (gdm_keyboard_layout); gdm_keyboard_layout = NULL; + + /* gdm's configuration and $GDM_KEYBOARD_LAYOUT separates layout and + * variant with a space, but gconf uses tabs; so convert to be robust + * with both */ + for (s = gdm_layout; s && *s; ++s) { + if (*s == ' ') { + *s = '\t'; + } + } + if (gdm_layout != NULL) { GSList *layouts; GSList *found_node; @@ -383,6 +394,8 @@ apply_xkb_settings (void) gkbd_keyboard_config_load_from_x_current (¤t_sys_kbd_config, NULL); + g_free (gdm_layout); + if (!try_activating_xkb_config_if_new (¤t_sys_kbd_config)) { if (filter_xkb_config ()) { if (!try_activating_xkb_config_if_new (¤t_sys_kbd_config)) { ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org