update spec

This commit is contained in:
Matthias Clasen 2008-10-12 19:29:45 +00:00
parent 1dee568529
commit ef224b3e46
2 changed files with 82 additions and 18 deletions

View File

@ -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 (&current_sys_kbd_config,
conf_client,
xkl_engine);
@@ -158,29 +184,20 @@ apply_xkb_settings (void)
gkbd_keyboard_config_load_from_x_current (&current_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");

View File

@ -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 <mclasen@redhat.com> - 2.24.0-7
- Try harder not to override peoples configured keyboard layouts
* Sun Oct 12 2008 Ray Strode <rstrode@redhat.com> - 2.24.0-6
- Update fade patch to skip crossfade when changing frames in
slideshow background.