Windows theme version override

This commit is contained in:
K4sum1 2025-04-27 17:24:52 -07:00
commit 8b80d1e84e
6 changed files with 122 additions and 5 deletions

View file

@ -96,6 +96,12 @@
<preference id="browser.ctrlTab.previews"
name="browser.ctrlTab.previews"
type="bool"/>
<!-- Theme -->
<preference id="widget.native-controls.override-win-version"
name="widget.native-controls.override-win-version"
type="int"/>
</preferences>
<hbox id="header-general"
@ -271,3 +277,48 @@
preference="browser.taskbar.previews.enable"/>
#endif
</groupbox>
<!-- Theme -->
<groupbox id="themeGroup"
data-category="paneGeneral"
hidden="true">
<caption><label>&theme.label;</label></caption>
<html:table id="themeTable">
<html:tr>
<html:td class="label-cell">
<label accesskey="&ThemeOverride.accesskey;"
control="browserThemeOverride">&ThemeOverride.label;</label>
</html:td>
<html:td class="content-cell">
<menulist id="browserThemeOverride"
class="content-cell-item"
preference="widget.native-controls.override-win-version">
<menupopup>
<menuitem label="&browserThemeOverrideNone.label;"
value="0"
id="browserThemeOverrideNone"/>
<menuitem label="&browserThemeOverrideXP.label;"
value="5"
id="browserThemeOverrideXP"/>
<menuitem label="&browserThemeOverrideVista.label;"
value="6"
id="browserThemeOverrideVista"/>
<menuitem label="&browserThemeOverride7.label;"
value="7"
id="browserThemeOverride7"/>
<menuitem label="&browserThemeOverride8.label;"
value="8"
id="browserThemeOverride8"/>
<menuitem label="&browserThemeOverride10.label;"
value="10"
id="browserThemeOverride10"/>
<menuitem label="&browserThemeOverride11.label;"
value="11"
id="browserThemeOverride11"/>
</menupopup>
</menulist>
</html:td>
</html:tr>
</html:table>
</groupbox>

View file

@ -43,3 +43,15 @@
<!ENTITY getStarted.label "Start using Sync…">
<!ENTITY e10sEnabled.label "Enable multi-process &brandShortName;">
<!ENTITY theme.label "Theme Override">
<!ENTITY ThemeOverride.label "Override Windows version theme (requires restart):">
<!ENTITY ThemeOverride.accesskey "t">
<!ENTITY browserThemeOverrideNone.label "Current OS version">
<!ENTITY browserThemeOverrideXP.label "Windows XP">
<!ENTITY browserThemeOverrideVista.label "Windows Vista">
<!ENTITY browserThemeOverride7.label "Windows 7">
<!ENTITY browserThemeOverride8.label "Windows 8">
<!ENTITY browserThemeOverride10.label "Windows 10">
<!ENTITY browserThemeOverride11.label "Windows 11">

View file

@ -69,6 +69,11 @@
<preference id="browser.download.saveZoneInformation" name="browser.download.saveZoneInformation" type="int" />
#endif
<!-- Theme -->
<preference id="widget.native-controls.override-win-version"
name="widget.native-controls.override-win-version"
type="int"/>
</preferences>
<stringbundle id="bundlePreferences" src="chrome://browser/locale/preferences/preferences.properties"/>
@ -177,6 +182,27 @@
#endif
</groupbox>
<!-- Theme -->
<groupbox id="themeGroup">
<caption label="&theme.label;"/>
<hbox align="center">
<label value="&ThemeOverride.label;" accesskey="&ThemeOverride.accesskey;"
control="browserThemeOverride"/>
<menulist id="browserThemeOverride" preference="widget.native-controls.override-win-version">
<menupopup>
<menuitem label="&browserThemeOverrideNone.label;" value="0" id="browserThemeOverrideNone"/>
<menuitem label="&browserThemeOverrideXP.label;" value="5" id="browserThemeOverrideXP"/>
<menuitem label="&browserThemeOverrideVista.label;" value="6" id="browserThemeOverrideVista"/>
<menuitem label="&browserThemeOverride7.label;" value="7" id="browserThemeOverride7"/>
<menuitem label="&browserThemeOverride8.label;" value="8" id="browserThemeOverride8"/>
<menuitem label="&browserThemeOverride10.label;" value="10" id="browserThemeOverride10"/>
<menuitem label="&browserThemeOverride11.label;" value="11" id="browserThemeOverride11"/>
</menupopup>
</menulist>
</hbox>
</groupbox>
</prefpane>
</overlay>

View file

@ -42,3 +42,15 @@
<!ENTITY zoneInfo.always "Always">
<!ENTITY zoneInfo.system "Use system setting">
<!ENTITY theme.label "Theme Override">
<!ENTITY ThemeOverride.label "Override Windows version theme (requires restart):">
<!ENTITY ThemeOverride.accesskey "t">
<!ENTITY browserThemeOverrideNone.label "Current OS version">
<!ENTITY browserThemeOverrideXP.label "Windows XP">
<!ENTITY browserThemeOverrideVista.label "Windows Vista">
<!ENTITY browserThemeOverride7.label "Windows 7">
<!ENTITY browserThemeOverride8.label "Windows 8">
<!ENTITY browserThemeOverride10.label "Windows 10">
<!ENTITY browserThemeOverride11.label "Windows 11">

View file

@ -3659,6 +3659,18 @@ pref("ui.osk.debug.keyboardDisplayReason", "");
// * 2: auto
pref("widget.windows.follow_shortcuts_on_file_open", 1);
// Whether to override the Windows version for styling purposes
//
// Valid values:
// * 0: never
// * 5: XP
// * 6: Vista
// * 7: 7
// * 8: 8
// * 10: 10
// * 11: 11
pref("widget.native-controls.override-win-version", 0);
# XP_WIN
#endif

View file

@ -11,6 +11,7 @@
#include "nsUXThemeConstants.h"
#include "gfxFont.h"
#include "WinUtils.h"
#include "mozilla/Preferences.h"
#include "mozilla/WindowsVersion.h"
#include "gfxFontConstants.h"
@ -27,15 +28,18 @@ nsLookAndFeel::GetOperatingSystemVersion()
return version;
}
if (IsWin11OrLater()) {
int overridePref = Preferences::GetInt("widget.native-controls.override-win-version", 1);
bool doesOverride = overridePref > 0;
if ((!doesOverride && IsWin11OrLater()) || overridePref == 11) {
version = eOperatingSystemVersion_Windows11;
} else if (IsWin10OrLater()) {
} else if ((!doesOverride && IsWin10OrLater()) || overridePref == 10) {
version = eOperatingSystemVersion_Windows10;
} else if (IsWin8OrLater()) {
} else if ((!doesOverride && IsWin8OrLater()) || overridePref == 8) {
version = eOperatingSystemVersion_Windows8;
} else if (IsWin7OrLater()) {
} else if ((!doesOverride && IsWin7OrLater()) || overridePref == 7) {
version = eOperatingSystemVersion_Windows7;
} else if (IsVistaOrLater()) {
} else if ((!doesOverride && IsVistaOrLater()) || overridePref == 6) {
version = eOperatingSystemVersion_WindowsVista;
} else {
version = eOperatingSystemVersion_WindowsXP;