[gnome-settings-daemon/f18] Disable AccessX on exit if no settings changed (#816764)

Bastien Nocera hadess at fedoraproject.org
Mon Jan 28 17:35:37 UTC 2013


commit c676b5d6aa3944db96ac55e0b2d4d8ffc93a2f5f
Author: Bastien Nocera <hadess at hadess.net>
Date:   Mon Jan 28 18:35:28 2013 +0100

    Disable AccessX on exit if no settings changed (#816764)

 g-s-d-3.6.4-reset-a11y-keyboard.patch |  130 +++++++++++++++++++++++++++++++++
 gnome-settings-daemon.spec            |    8 ++-
 2 files changed, 137 insertions(+), 1 deletions(-)
---
diff --git a/g-s-d-3.6.4-reset-a11y-keyboard.patch b/g-s-d-3.6.4-reset-a11y-keyboard.patch
new file mode 100644
index 0000000..513684c
--- /dev/null
+++ b/g-s-d-3.6.4-reset-a11y-keyboard.patch
@@ -0,0 +1,130 @@
+From a53f1c87be48eae461b4e634470a508def9e1f88 Mon Sep 17 00:00:00 2001
+From: Bastien Nocera <hadess at hadess.net>
+Date: Mon, 28 Jan 2013 17:58:50 +0100
+Subject: [PATCH 1/2] a11y-keyboard: Use macro for everything mask
+
+Less to copy/paste
+---
+ plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c | 21 ++++++++++++---------
+ 1 file changed, 12 insertions(+), 9 deletions(-)
+
+diff --git a/plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c b/plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c
+index a227dd4..afcc0c4 100644
+--- a/plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c
++++ b/plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c
+@@ -68,6 +68,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);
+@@ -313,15 +324,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);
+-- 
+1.8.0.1
+
+
+From bff2c30670731ba79c9eb7e0d0e90efb780a1bd0 Mon Sep 17 00:00:00 2001
+From: Bastien Nocera <hadess at hadess.net>
+Date: Mon, 28 Jan 2013 17:59:21 +0100
+Subject: [PATCH 2/2] 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
+---
+ plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c | 25 +++++++++++++++++++++++
+ 1 file changed, 25 insertions(+)
+
+diff --git a/plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c b/plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c
+index afcc0c4..7dbf2e2 100644
+--- a/plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c
++++ b/plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c
+@@ -63,6 +63,8 @@ struct GsdA11yKeyboardManagerPrivate
+         GtkWidget        *preferences_dialog;
+         GtkStatusIcon    *status_icon;
+ 
++        XkbDescRec       *desc;
++
+         GSettings        *settings;
+ 
+         NotifyNotification *notification;
+@@ -948,6 +950,9 @@ start_a11y_keyboard_idle_cb (GsdA11yKeyboardManager *manager)
+ 
+         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 */
+ 
+@@ -993,6 +998,26 @@ gsd_a11y_keyboard_manager_stop (GsdA11yKeyboardManager *manager)
+ 
+         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;
+-- 
+1.8.0.1
+
diff --git a/gnome-settings-daemon.spec b/gnome-settings-daemon.spec
index 723dabf..e2fe065 100644
--- a/gnome-settings-daemon.spec
+++ b/gnome-settings-daemon.spec
@@ -1,6 +1,6 @@
 Name:           gnome-settings-daemon
 Version:        3.6.4
-Release:        2%{?dist}
+Release:        3%{?dist}
 Summary:        The daemon sharing settings from GNOME to GTK+/KDE applications
 
 Group:          System Environment/Daemons
@@ -10,6 +10,8 @@ URL:            http://download.gnome.org/sources/%{name}
 Source:         http://download.gnome.org/sources/%{name}/3.6/%{name}-%{version}.tar.xz
 # disable wacom for ppc/ppc64 (used on RHEL)
 Patch0:         %{name}-3.5.4-ppc-no-wacom.patch
+# https://bugzilla.redhat.com/show_bug.cgi?id=816764
+Patch1: g-s-d-3.6.4-reset-a11y-keyboard.patch
 # https://bugzilla.gnome.org/show_bug.cgi?id=680689
 Patch2: 0001-power-and-media-keys-Use-logind-for-suspending-and-r.patch
 # Wacom OSD window
@@ -83,6 +85,7 @@ The %{name}-updates package contains the updates plugin for %{name}
 %patch0 -p1 -b .ppc-no-wacom
 %endif
 
+%patch1 -p1
 %patch2 -p1
 %patch3 -p1 -b .wacom-osd-window
 %patch4 -p1
@@ -266,6 +269,9 @@ glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || :
 %{_datadir}/dbus-1/interfaces/org.gnome.SettingsDaemonUpdates.xml
 
 %changelog
+* Mon Jan 28 2013 Bastien Nocera <bnocera at redhat.com> 3.6.4-3
+- Disable AccessX on exit if no settings changed (#816764)
+
 * Mon Jan 14 2013 Dan HorĂ¡k <dan[at]danny.cz> - 3.6.4-2
 - fix filelist for s390(x) (and ppc/ppc64 in RHEL)
 


More information about the scm-commits mailing list