mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-10 02:08:38 +09:00
Add a signal preference for dynamic color changes to adjust "brighttext" in the front-end.
This makes all relevant toolbars pick up the fact that the Windows accent color has changed and should check and if necessary update the "brighttext" property on them for styling of controls. This is a bit of a hack-around to the fact that there is no real easy way otherwise to notify the front-end of color changes without needing a change in focus of the window. There is a deliberate 300ms delay built in, because otherwise the styles might not have propagated yet, resulting in brighttext not being updated properly.
This commit is contained in:
parent
0ab64f6cfa
commit
2ce8b3b74e
2 changed files with 19 additions and 0 deletions
|
|
@ -8075,6 +8075,7 @@ var ToolbarIconColor = {
|
|||
window.addEventListener("activate", this);
|
||||
window.addEventListener("deactivate", this);
|
||||
Services.obs.addObserver(this, "lightweight-theme-styling-update", false);
|
||||
gPrefService.addObserver("ui.colorChanged", this, false);
|
||||
|
||||
// If the window isn't active now, we assume that it has never been active
|
||||
// before and will soon become active such that inferFromText will be
|
||||
|
|
@ -8089,6 +8090,7 @@ var ToolbarIconColor = {
|
|||
window.removeEventListener("activate", this);
|
||||
window.removeEventListener("deactivate", this);
|
||||
Services.obs.removeObserver(this, "lightweight-theme-styling-update");
|
||||
gPrefService.removeObserver("ui.colorChanged", this);
|
||||
},
|
||||
|
||||
handleEvent: function (event) {
|
||||
|
|
@ -8107,6 +8109,18 @@ var ToolbarIconColor = {
|
|||
// lightweight-theme-styling-update observer.
|
||||
setTimeout(() => { this.inferFromText(); }, 0);
|
||||
break;
|
||||
case "nsPref:changed":
|
||||
// system color change
|
||||
var colorChangedPref = false;
|
||||
try {
|
||||
colorChangedPref = gPrefService.getBoolPref("ui.colorChanged");
|
||||
} catch(e) { }
|
||||
// if pref indicates change, call inferFromText() on a small delay
|
||||
if (colorChangedPref == true)
|
||||
setTimeout(() => { this.inferFromText(); }, 300);
|
||||
break;
|
||||
default:
|
||||
console.error("ToolbarIconColor: Uncaught topic " + aTopic);
|
||||
}
|
||||
},
|
||||
|
||||
|
|
@ -8140,6 +8154,9 @@ var ToolbarIconColor = {
|
|||
else
|
||||
toolbar.setAttribute("brighttext", "true");
|
||||
}
|
||||
|
||||
// Clear pref if set, since we're done applying the color changes.
|
||||
gPrefService.clearUserPref("ui.colorChanged");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue