[gnome-shell] a11y: also set the WM HighContrast theme when switch is flipped



commit 65edbc14243b74f542d105c2f84cce4c7dc555df
Author: Cosimo Cecchi <cosimoc gnome org>
Date:   Tue Nov 13 09:34:20 2012 -0500

    a11y: also set the WM HighContrast theme when switch is flipped
    
    Now that we have a HighContrast-specific WM theme.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=688256

 js/ui/status/accessibility.js |   41 +++++++++++++++++++++++++++--------------
 1 files changed, 27 insertions(+), 14 deletions(-)
---
diff --git a/js/ui/status/accessibility.js b/js/ui/status/accessibility.js
index 0c4f1ca..50f52f7 100644
--- a/js/ui/status/accessibility.js
+++ b/js/ui/status/accessibility.js
@@ -27,6 +27,7 @@ const KEY_VISUAL_BELL      = 'visual-bell';
 const DESKTOP_INTERFACE_SCHEMA = 'org.gnome.desktop.interface';
 const KEY_GTK_THEME      = 'gtk-theme';
 const KEY_ICON_THEME     = 'icon-theme';
+const KEY_WM_THEME       = 'theme';
 const KEY_TEXT_SCALING_FACTOR = 'text-scaling-factor';
 
 const HIGH_CONTRAST_THEME = 'HighContrast';
@@ -101,28 +102,35 @@ const ATIndicator = new Lang.Class({
     },
 
     _buildHCItem: function() {
-        let settings = new Gio.Settings({ schema: DESKTOP_INTERFACE_SCHEMA });
-        let gtkTheme = settings.get_string(KEY_GTK_THEME);
-        let iconTheme = settings.get_string(KEY_ICON_THEME);
+        let interfaceSettings = new Gio.Settings({ schema: DESKTOP_INTERFACE_SCHEMA });
+        let wmSettings = new Gio.Settings({ schema: WM_SCHEMA });
+        let gtkTheme = interfaceSettings.get_string(KEY_GTK_THEME);
+        let iconTheme = interfaceSettings.get_string(KEY_ICON_THEME);
+        let wmTheme = wmSettings.get_string(KEY_WM_THEME);
         let hasHC = (gtkTheme == HIGH_CONTRAST_THEME);
         let highContrast = this._buildItemExtended(
             _("High Contrast"),
             hasHC,
-            settings.is_writable(KEY_GTK_THEME) && settings.is_writable(KEY_ICON_THEME),
+            interfaceSettings.is_writable(KEY_GTK_THEME) &&
+            interfaceSettings.is_writable(KEY_ICON_THEME) &&
+            wmSettings.is_writable(KEY_WM_THEME),
             function (enabled) {
                 if (enabled) {
-                    settings.set_string(KEY_GTK_THEME, HIGH_CONTRAST_THEME);
-                    settings.set_string(KEY_ICON_THEME, HIGH_CONTRAST_THEME);
+                    interfaceSettings.set_string(KEY_GTK_THEME, HIGH_CONTRAST_THEME);
+                    interfaceSettings.set_string(KEY_ICON_THEME, HIGH_CONTRAST_THEME);
+                    wmSettings.set_string(KEY_WM_THEME, HIGH_CONTRAST_THEME);
                 } else if(!hasHC) {
-                    settings.set_string(KEY_GTK_THEME, gtkTheme);
-                    settings.set_string(KEY_ICON_THEME, iconTheme);
+                    interfaceSettings.set_string(KEY_GTK_THEME, gtkTheme);
+                    interfaceSettings.set_string(KEY_ICON_THEME, iconTheme);
+                    wmSettings.set_string(KEY_WM_THEME, wmTheme);
                 } else {
-                    settings.reset(KEY_GTK_THEME);
-                    settings.reset(KEY_ICON_THEME);
+                    interfaceSettings.reset(KEY_GTK_THEME);
+                    interfaceSettings.reset(KEY_ICON_THEME);
+                    wmSettings.reset(KEY_WM_THEME);
                 }
             });
-        settings.connect('changed::' + KEY_GTK_THEME, function() {
-            let value = settings.get_string(KEY_GTK_THEME);
+        interfaceSettings.connect('changed::' + KEY_GTK_THEME, function() {
+            let value = interfaceSettings.get_string(KEY_GTK_THEME);
             if (value == HIGH_CONTRAST_THEME) {
                 highContrast.setToggleState(true);
             } else {
@@ -130,11 +138,16 @@ const ATIndicator = new Lang.Class({
                 gtkTheme = value;
             }
         });
-        settings.connect('changed::' + KEY_ICON_THEME, function() {
-            let value = settings.get_string(KEY_ICON_THEME);
+        interfaceSettings.connect('changed::' + KEY_ICON_THEME, function() {
+            let value = interfaceSettings.get_string(KEY_ICON_THEME);
             if (value != HIGH_CONTRAST_THEME)
                 iconTheme = value;
         });
+        wmSettings.connect('changed::' + KEY_WM_THEME, function() {
+            let value = wmSettings.get_string(KEY_WM_THEME);
+            if (value != HIGH_CONTRAST_THEME)
+                wmTheme = value;
+        });
         return highContrast;
     },
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]