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;