mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-26 17:17:31 +09:00
Issue #1784 - Add -moz-dark-theme media query and allow prefers-color-scheme to follow it.
This commit is contained in:
parent
dbf1d0b5fa
commit
efc6048941
3 changed files with 64 additions and 7 deletions
|
|
@ -2267,6 +2267,7 @@ GK_ATOM(windows_theme_generic, "windows-theme-generic")
|
||||||
|
|
||||||
// And the same again, as media query keywords.
|
// And the same again, as media query keywords.
|
||||||
GK_ATOM(_moz_color_picker_available, "-moz-color-picker-available")
|
GK_ATOM(_moz_color_picker_available, "-moz-color-picker-available")
|
||||||
|
GK_ATOM(_moz_dark_theme, "-moz-dark-theme")
|
||||||
GK_ATOM(_moz_scrollbar_start_backward, "-moz-scrollbar-start-backward")
|
GK_ATOM(_moz_scrollbar_start_backward, "-moz-scrollbar-start-backward")
|
||||||
GK_ATOM(_moz_scrollbar_start_forward, "-moz-scrollbar-start-forward")
|
GK_ATOM(_moz_scrollbar_start_forward, "-moz-scrollbar-start-forward")
|
||||||
GK_ATOM(_moz_scrollbar_end_backward, "-moz-scrollbar-end-backward")
|
GK_ATOM(_moz_scrollbar_end_backward, "-moz-scrollbar-end-backward")
|
||||||
|
|
|
||||||
|
|
@ -466,20 +466,60 @@ GetOperatingSystemVersion(nsPresContext* aPresContext, const nsMediaFeature* aFe
|
||||||
|
|
||||||
static nsresult
|
static nsresult
|
||||||
GetPrefersColorScheme(nsPresContext* aPresContext, const nsMediaFeature* aFeature,
|
GetPrefersColorScheme(nsPresContext* aPresContext, const nsMediaFeature* aFeature,
|
||||||
nsCSSValue& aResult)
|
nsCSSValue& aResult)
|
||||||
{
|
{
|
||||||
switch(Preferences::GetInt("browser.display.prefers_color_scheme", 1)) {
|
switch(Preferences::GetInt("browser.display.prefers_color_scheme", 1)) {
|
||||||
case 1:
|
case 1:
|
||||||
aResult.SetIntValue(NS_STYLE_PREFERS_COLOR_SCHEME_LIGHT,
|
aResult.SetIntValue(NS_STYLE_PREFERS_COLOR_SCHEME_LIGHT,
|
||||||
eCSSUnit_Enumerated);
|
eCSSUnit_Enumerated);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
aResult.SetIntValue(NS_STYLE_PREFERS_COLOR_SCHEME_DARK,
|
aResult.SetIntValue(NS_STYLE_PREFERS_COLOR_SCHEME_DARK,
|
||||||
eCSSUnit_Enumerated);
|
eCSSUnit_Enumerated);
|
||||||
break;
|
break;
|
||||||
|
case 3:
|
||||||
|
// If the pref is 3, we follow ui.color_scheme instead. When following
|
||||||
|
// ui.color_scheme, light theme is the fallback behavior.
|
||||||
|
switch(Preferences::GetInt("ui.color_scheme", 1)) {
|
||||||
|
case 2:
|
||||||
|
aResult.SetIntValue(NS_STYLE_PREFERS_COLOR_SCHEME_DARK,
|
||||||
|
eCSSUnit_Enumerated);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
aResult.SetIntValue(NS_STYLE_PREFERS_COLOR_SCHEME_LIGHT,
|
||||||
|
eCSSUnit_Enumerated);
|
||||||
|
}
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
aResult.Reset();
|
aResult.Reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
static nsresult
|
||||||
|
GetDarkTheme(nsPresContext* aPresContext, const nsMediaFeature* aFeature,
|
||||||
|
nsCSSValue& aResult)
|
||||||
|
{
|
||||||
|
#ifdef XP_WIN
|
||||||
|
// Under Windows, do nothing if High Contrast Theme is on.
|
||||||
|
if (LookAndFeel::GetInt(LookAndFeel::eIntID_UseAccessibilityTheme, 0)) {
|
||||||
|
aResult.Reset();
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
switch(Preferences::GetInt("ui.color_scheme", 1)) {
|
||||||
|
case 1:
|
||||||
|
aResult.SetIntValue(0, eCSSUnit_Integer);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
aResult.SetIntValue(1, eCSSUnit_Integer);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
aResult.Reset();
|
||||||
|
}
|
||||||
|
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -645,6 +685,14 @@ nsMediaFeatures::features[] = {
|
||||||
},
|
},
|
||||||
|
|
||||||
// Mozilla extensions
|
// Mozilla extensions
|
||||||
|
{
|
||||||
|
&nsGkAtoms::_moz_dark_theme,
|
||||||
|
nsMediaFeature::eMinMaxNotAllowed,
|
||||||
|
nsMediaFeature::eBoolInteger,
|
||||||
|
nsMediaFeature::eNoRequirements,
|
||||||
|
{ nullptr },
|
||||||
|
GetDarkTheme
|
||||||
|
},
|
||||||
{
|
{
|
||||||
&nsGkAtoms::_moz_device_pixel_ratio,
|
&nsGkAtoms::_moz_device_pixel_ratio,
|
||||||
nsMediaFeature::eMinMaxAllowed,
|
nsMediaFeature::eMinMaxAllowed,
|
||||||
|
|
|
||||||
|
|
@ -250,6 +250,13 @@ pref("browser.sessionhistory.max_total_viewers", -1);
|
||||||
// See https://github.com/MoonchildProductions/UXP/issues/719
|
// See https://github.com/MoonchildProductions/UXP/issues/719
|
||||||
pref("browser.newtabpage.add_to_session_history", false);
|
pref("browser.newtabpage.add_to_session_history", false);
|
||||||
|
|
||||||
|
|
||||||
|
// Determines whether the browser's current theme should be light or dark.
|
||||||
|
// 0 = feature disabled
|
||||||
|
// 1 = default: light theme
|
||||||
|
// 2 = dark theme
|
||||||
|
pref("ui.color_scheme", 1);
|
||||||
|
|
||||||
pref("ui.use_native_colors", true);
|
pref("ui.use_native_colors", true);
|
||||||
#ifdef MOZ_WIDGET_GTK
|
#ifdef MOZ_WIDGET_GTK
|
||||||
// Determines whether the menubar is shown in the global menubar or not.
|
// Determines whether the menubar is shown in the global menubar or not.
|
||||||
|
|
@ -269,6 +276,7 @@ pref("browser.display.document_color_use", 0);
|
||||||
// 0 = feature disabled
|
// 0 = feature disabled
|
||||||
// 1 = default: light theme preferred
|
// 1 = default: light theme preferred
|
||||||
// 2 = dark theme preferred
|
// 2 = dark theme preferred
|
||||||
|
// 3 = match ui.color_scheme
|
||||||
pref("browser.display.prefers_color_scheme", 1);
|
pref("browser.display.prefers_color_scheme", 1);
|
||||||
pref("browser.display.use_system_colors", false);
|
pref("browser.display.use_system_colors", false);
|
||||||
pref("browser.display.foreground_color", "#000000");
|
pref("browser.display.foreground_color", "#000000");
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue