|
|
35159f |
From a94260b4f2f72ea9328a0194b8656f1fb3e98675 Mon Sep 17 00:00:00 2001
|
|
|
35159f |
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
|
|
35159f |
Date: Sat, 14 Dec 2019 19:15:53 +0100
|
|
|
35159f |
Subject: [PATCH] a11y: Change HC icon theme first
|
|
|
35159f |
|
|
|
35159f |
There are two ways for applications to provide a high contrast icon:
|
|
|
35159f |
|
|
|
35159f |
1. install an icon into the HighContrast theme
|
|
|
35159f |
2. install a symbolic icon into the default hicolor theme
|
|
|
35159f |
|
|
|
35159f |
The latter is preferred nowadays, and implemented in the high-contrast
|
|
|
35159f |
CSS variant by enforcing the symbolic icon style.
|
|
|
35159f |
|
|
|
35159f |
However together with the way we currently enable/disable high-contrast,
|
|
|
35159f |
this can lead to the following race:
|
|
|
35159f |
1. the GTK theme is changed from HighContrast
|
|
|
35159f |
2. we reload the default stylesheet
|
|
|
35159f |
3. the icon style changes to "regular", so we request a
|
|
|
35159f |
new icon from the HighContrast icon theme
|
|
|
35159f |
4. the icon theme is changed from HighContrast
|
|
|
35159f |
5. we evict existing icons from the cache
|
|
|
35159f |
6. we reload icons for the new icon theme; however as we
|
|
|
35159f |
find a pending request (from 3), we re-use it
|
|
|
35159f |
7. the request from 3 finishes, and we end up with a
|
|
|
35159f |
wrong icon in the cache
|
|
|
35159f |
|
|
|
35159f |
The simplest fix is to change the icon theme before the GTK theme: Unlike the
|
|
|
35159f |
theme name, the icon style is encoded in the cache key, so we won't re-use
|
|
|
35159f |
an old (and incorrect) request in that case.
|
|
|
35159f |
---
|
|
|
35159f |
js/ui/status/accessibility.js | 6 +++---
|
|
|
35159f |
1 file changed, 3 insertions(+), 3 deletions(-)
|
|
|
35159f |
|
|
|
35159f |
diff --git a/js/ui/status/accessibility.js b/js/ui/status/accessibility.js
|
|
|
35159f |
index 10223ec84..90948d465 100644
|
|
|
35159f |
--- a/js/ui/status/accessibility.js
|
|
|
35159f |
+++ b/js/ui/status/accessibility.js
|
|
|
35159f |
@@ -154,14 +154,14 @@ class ATIndicator extends PanelMenu.Button {
|
|
|
35159f |
interfaceSettings.is_writable(KEY_ICON_THEME),
|
|
|
35159f |
enabled => {
|
|
|
35159f |
if (enabled) {
|
|
|
35159f |
- interfaceSettings.set_string(KEY_GTK_THEME, HIGH_CONTRAST_THEME);
|
|
|
35159f |
interfaceSettings.set_string(KEY_ICON_THEME, HIGH_CONTRAST_THEME);
|
|
|
35159f |
+ interfaceSettings.set_string(KEY_GTK_THEME, HIGH_CONTRAST_THEME);
|
|
|
35159f |
} else if(!hasHC) {
|
|
|
35159f |
- interfaceSettings.set_string(KEY_GTK_THEME, gtkTheme);
|
|
|
35159f |
interfaceSettings.set_string(KEY_ICON_THEME, iconTheme);
|
|
|
35159f |
+ interfaceSettings.set_string(KEY_GTK_THEME, gtkTheme);
|
|
|
35159f |
} else {
|
|
|
35159f |
- interfaceSettings.reset(KEY_GTK_THEME);
|
|
|
35159f |
interfaceSettings.reset(KEY_ICON_THEME);
|
|
|
35159f |
+ interfaceSettings.reset(KEY_GTK_THEME);
|
|
|
35159f |
}
|
|
|
35159f |
});
|
|
|
35159f |
return highContrast;
|
|
|
35159f |
--
|
|
|
35159f |
2.23.0
|
|
|
35159f |
|