diff --git a/application/basilisk/components/preferences/in-content/main.xul b/application/basilisk/components/preferences/in-content/main.xul index f695b308bd..9180f1c520 100644 --- a/application/basilisk/components/preferences/in-content/main.xul +++ b/application/basilisk/components/preferences/in-content/main.xul @@ -96,6 +96,12 @@ + + + + #endif + + + diff --git a/application/basilisk/locales/en-US/chrome/browser/preferences/main.dtd b/application/basilisk/locales/en-US/chrome/browser/preferences/main.dtd index 6b56f34005..eb435f6d76 100644 --- a/application/basilisk/locales/en-US/chrome/browser/preferences/main.dtd +++ b/application/basilisk/locales/en-US/chrome/browser/preferences/main.dtd @@ -43,3 +43,15 @@ + + + + + + + + + + + + diff --git a/application/palemoon/components/preferences/main.xul b/application/palemoon/components/preferences/main.xul index 16b784cdd7..3484a3ae8d 100644 --- a/application/palemoon/components/preferences/main.xul +++ b/application/palemoon/components/preferences/main.xul @@ -69,6 +69,11 @@ #endif + + + @@ -177,6 +182,27 @@ #endif + + + + + + + + diff --git a/application/palemoon/locales/en-US/chrome/browser/preferences/main.dtd b/application/palemoon/locales/en-US/chrome/browser/preferences/main.dtd index 15468eeb71..ed73df206a 100644 --- a/application/palemoon/locales/en-US/chrome/browser/preferences/main.dtd +++ b/application/palemoon/locales/en-US/chrome/browser/preferences/main.dtd @@ -42,3 +42,15 @@ + + + + + + + + + + + + diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js index 9f73b219fd..cd7b37dffb 100644 --- a/modules/libpref/init/all.js +++ b/modules/libpref/init/all.js @@ -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 diff --git a/widget/windows/nsLookAndFeel.cpp b/widget/windows/nsLookAndFeel.cpp index f03b7a7383..c5bbbdb7df 100644 --- a/widget/windows/nsLookAndFeel.cpp +++ b/widget/windows/nsLookAndFeel.cpp @@ -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;