Package: release.debian.org Severity: normal User: release.debian....@packages.debian.org Usertags: unblock
Please unblock package gnome-settings-daemon for a GDM-related bug fix. gnome-settings-daemon (3.4.2+git20121218.7c1322-3) unstable; urgency=low * 06_a11y_gdm_leak.patch: backported from git master. Reset keyboard accessibility settings when shutting down the settings daemon. This avoids leaking them from the GDM session to the user’s. Closes: #682581. + 06_a11y_macro.patch: a bit of refactoring that the previous patch depends on. unblock gnome-settings-daemon/3.4.2+git20121218.7c1322-3 Thanks, -- .''`. Josselin Mouette : :' : `. `' `-
>From ae36405207ba5ef0a0c7ea6b154e80d8be3e675c Mon Sep 17 00:00:00 2001 From: Bastien Nocera <had...@hadess.net> Date: Mon, 28 Jan 2013 16:59:21 +0000 Subject: a11y-keyboard: Disable everything on exit if no settings changed The default setting in GDM is to have the keys enablable through keyboard shortcuts, and this gets inherited by the user sessions. The problem is that non-GNOME users won't have anything changing those defaults back to their expected values (so that Slow Keys don't triggered for example), and this causes problems: https://bugzilla.redhat.com/show_bug.cgi?id=816764 If the user doesn't change anything to the defaults in the GDM session, we revert to the pre-"GNOME session" values. https://bugzilla.gnome.org/show_bug.cgi?id=685063 --- Index: gnome-settings-daemon-3.4.2+git20121218.7c1322/plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c =================================================================== --- gnome-settings-daemon-3.4.2+git20121218.7c1322.orig/plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c 2013-02-05 16:38:44.911939950 +0100 +++ gnome-settings-daemon-3.4.2+git20121218.7c1322/plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c 2013-02-05 16:38:44.903939914 +0100 @@ -63,6 +63,8 @@ struct GsdA11yKeyboardManagerPrivate GtkWidget *preferences_dialog; GtkStatusIcon *status_icon; + XkbDescRec *desc; + GSettings *settings; NotifyNotification *notification; @@ -950,6 +952,9 @@ start_a11y_keyboard_idle_cb (GsdA11yKeyb set_devicepresence_handler (manager); + /* Get the original configuration from the server */ + manager->priv->desc = get_xkb_desc_rec (manager); + event_mask = XkbControlsNotifyMask; event_mask |= XkbAccessXNotifyMask; /* make default when AXN_AXKWarning works */ @@ -995,6 +1000,26 @@ gsd_a11y_keyboard_manager_stop (GsdA11yK g_debug ("Stopping a11y_keyboard manager"); + if (p->desc != NULL) { + XkbDescRec *desc; + + desc = get_xkb_desc_rec (manager); + if (desc != NULL) { + if (p->desc->ctrls->enabled_ctrls != desc->ctrls->enabled_ctrls) { + gdk_error_trap_push (); + XkbSetControls (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), + DEFAULT_XKB_SET_CONTROLS_MASK, + p->desc); + + XSync (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), FALSE); + gdk_error_trap_pop_ignored (); + } + XkbFreeKeyboard (desc, XkbAllComponentsMask, True); + } + XkbFreeKeyboard (p->desc, XkbAllComponentsMask, True); + p->desc = NULL; + } + if (p->start_idle_id != 0) { g_source_remove (p->start_idle_id); p->start_idle_id = 0;
>From 0bc81bad702d314cfc975ab4df58817a45a6dd05 Mon Sep 17 00:00:00 2001 From: Bastien Nocera <had...@hadess.net> Date: Mon, 28 Jan 2013 16:58:50 +0000 Subject: a11y-keyboard: Use macro for everything mask Less to copy/paste --- diff --git a/plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c b/plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c index 7acd274..33e4665 100644 --- a/plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c +++ b/plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c @@ -62,6 +62,17 @@ struct GsdA11yKeyboardManagerPrivate NotifyNotification *notification; }; +#define DEFAULT_XKB_SET_CONTROLS_MASK XkbSlowKeysMask | \ + XkbBounceKeysMask | \ + XkbStickyKeysMask | \ + XkbMouseKeysMask | \ + XkbMouseKeysAccelMask | \ + XkbAccessXKeysMask | \ + XkbAccessXTimeoutMask | \ + XkbAccessXFeedbackMask | \ + XkbControlsEnabledMask + + static void gsd_a11y_keyboard_manager_class_init (GsdA11yKeyboardManagerClass *klass); static void gsd_a11y_keyboard_manager_init (GsdA11yKeyboardManager *a11y_keyboard_manager); static void gsd_a11y_keyboard_manager_finalize (GObject *object); @@ -306,15 +317,7 @@ set_server_from_gsettings (GsdA11yKeyboardManager *manager) gdk_error_trap_push (); XkbSetControls (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), - XkbSlowKeysMask | - XkbBounceKeysMask | - XkbStickyKeysMask | - XkbMouseKeysMask | - XkbMouseKeysAccelMask | - XkbAccessXKeysMask | - XkbAccessXTimeoutMask | - XkbAccessXFeedbackMask | - XkbControlsEnabledMask, + DEFAULT_XKB_SET_CONTROLS_MASK, desc); XkbFreeKeyboard (desc, XkbAllComponentsMask, True); -- cgit v0.9.0.2