gnome-shell/js/ui/status
Florian Müllner 36b8dcbe07 a11y: Change HC icon theme first
There are two ways for applications to provide a high contrast icon:

 1. install an icon into the HighContrast theme
 2. install a symbolic icon into the default hicolor theme

The latter is preferred nowadays, and implemented in the high-contrast
CSS variant by enforcing the symbolic icon style.

However together with the way we currently enable/disable high-contrast,
this can lead to the following race:
 1. the GTK theme is changed from HighContrast
 2. we reload the default stylesheet
 3. the icon style changes to "regular", so we request a
    new icon from the HighContrast icon theme
 4. the icon theme is changed from HighContrast
 5. we evict existing icons from the cache
 6. we reload icons for the new icon theme; however as we
    find a pending request (from 3), we re-use it
 7. the request from 3 finishes, and we end up with a
    wrong icon in the cache

The simplest fix is to change the icon theme before the GTK theme: Unlike the
theme name, the icon style is encoded in the cache key, so we won't re-use
an old (and incorrect) request in that case.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2414
2020-03-17 12:45:25 +01:00
..
accessibility.js a11y: Change HC icon theme first 2020-03-17 12:45:25 +01:00
bluetooth.js js: Use Gjs GTypeName computation for all classes 2019-10-29 18:38:35 +00:00
brightness.js js: Replace child properties 2019-11-01 19:42:01 +00:00
dwellClick.js js: Don't use templates in files with translations 2020-02-17 23:20:40 +01:00
keyboard.js status/keyboard: Check for monkey-patched property before using it 2020-02-20 19:08:47 +00:00
location.js location: Update desktop file name for privacy settings 2020-03-06 19:16:47 +00:00
network.js js: Don't use templates in files with translations 2020-02-17 23:20:40 +01:00
nightLight.js js: Use Gjs GTypeName computation for all classes 2019-10-29 18:38:35 +00:00
power.js js: Don't use templates in files with translations 2020-02-17 23:20:40 +01:00
remoteAccess.js cleanup: Don't shadow variables 2019-11-11 19:25:14 +00:00
rfkill.js cleanup: Avoid unnecessary parentheses 2019-11-11 19:25:14 +00:00
screencast.js js: Use Gjs GTypeName computation for all classes 2019-10-29 18:38:35 +00:00
system.js status/system: Fix session submenu visibility 2020-02-04 14:40:44 +00:00
thunderbolt.js js: Don't use templates in files with translations 2020-02-17 23:20:40 +01:00
volume.js js: Don't use templates in files with translations 2020-02-17 23:20:40 +01:00