rpms/gnome-settings-daemon/devel fix-gdm-layout.patch, 1.1, 1.2 gnome-settings-daemon.spec, 1.63, 1.64

Matthias Clasen mclasen at fedoraproject.org
Sun Oct 12 19:30:15 UTC 2008


Author: mclasen

Update of /cvs/extras/rpms/gnome-settings-daemon/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv1003

Modified Files:
	fix-gdm-layout.patch gnome-settings-daemon.spec 
Log Message:
update spec


fix-gdm-layout.patch:

Index: fix-gdm-layout.patch
===================================================================
RCS file: /cvs/extras/rpms/gnome-settings-daemon/devel/fix-gdm-layout.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- fix-gdm-layout.patch	1 Oct 2008 03:32:08 -0000	1.1
+++ fix-gdm-layout.patch	12 Oct 2008 19:29:45 -0000	1.2
@@ -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");
  


Index: gnome-settings-daemon.spec
===================================================================
RCS file: /cvs/extras/rpms/gnome-settings-daemon/devel/gnome-settings-daemon.spec,v
retrieving revision 1.63
retrieving revision 1.64
diff -u -r1.63 -r1.64
--- gnome-settings-daemon.spec	12 Oct 2008 17:06:54 -0000	1.63
+++ gnome-settings-daemon.spec	12 Oct 2008 19:29:45 -0000	1.64
@@ -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 @@
 # 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 @@
 %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 @@
 %{_libdir}/pkgconfig/gnome-settings-daemon.pc
 
 %changelog
+* Sun Oct 12 2008 Matthias Clasen <mclasen at redhat.com> - 2.24.0-7
+- Try harder not to override peoples configured keyboard layouts
+
 * Sun Oct 12 2008 Ray Strode <rstrode at redhat.com> - 2.24.0-6
 - Update fade patch to skip crossfade when changing frames in
   slideshow background.




More information about the scm-commits mailing list