mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-08 08:48:39 +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.
|
||||
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_forward, "-moz-scrollbar-start-forward")
|
||||
GK_ATOM(_moz_scrollbar_end_backward, "-moz-scrollbar-end-backward")
|
||||
|
|
|
|||
|
|
@ -466,20 +466,60 @@ GetOperatingSystemVersion(nsPresContext* aPresContext, const nsMediaFeature* aFe
|
|||
|
||||
static nsresult
|
||||
GetPrefersColorScheme(nsPresContext* aPresContext, const nsMediaFeature* aFeature,
|
||||
nsCSSValue& aResult)
|
||||
nsCSSValue& aResult)
|
||||
{
|
||||
switch(Preferences::GetInt("browser.display.prefers_color_scheme", 1)) {
|
||||
case 1:
|
||||
aResult.SetIntValue(NS_STYLE_PREFERS_COLOR_SCHEME_LIGHT,
|
||||
eCSSUnit_Enumerated);
|
||||
break;
|
||||
aResult.SetIntValue(NS_STYLE_PREFERS_COLOR_SCHEME_LIGHT,
|
||||
eCSSUnit_Enumerated);
|
||||
break;
|
||||
case 2:
|
||||
aResult.SetIntValue(NS_STYLE_PREFERS_COLOR_SCHEME_DARK,
|
||||
eCSSUnit_Enumerated);
|
||||
break;
|
||||
aResult.SetIntValue(NS_STYLE_PREFERS_COLOR_SCHEME_DARK,
|
||||
eCSSUnit_Enumerated);
|
||||
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:
|
||||
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;
|
||||
}
|
||||
|
||||
|
|
@ -645,6 +685,14 @@ nsMediaFeatures::features[] = {
|
|||
},
|
||||
|
||||
// Mozilla extensions
|
||||
{
|
||||
&nsGkAtoms::_moz_dark_theme,
|
||||
nsMediaFeature::eMinMaxNotAllowed,
|
||||
nsMediaFeature::eBoolInteger,
|
||||
nsMediaFeature::eNoRequirements,
|
||||
{ nullptr },
|
||||
GetDarkTheme
|
||||
},
|
||||
{
|
||||
&nsGkAtoms::_moz_device_pixel_ratio,
|
||||
nsMediaFeature::eMinMaxAllowed,
|
||||
|
|
|
|||
|
|
@ -250,6 +250,13 @@ pref("browser.sessionhistory.max_total_viewers", -1);
|
|||
// See https://github.com/MoonchildProductions/UXP/issues/719
|
||||
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);
|
||||
#ifdef MOZ_WIDGET_GTK
|
||||
// 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
|
||||
// 1 = default: light theme preferred
|
||||
// 2 = dark theme preferred
|
||||
// 3 = match ui.color_scheme
|
||||
pref("browser.display.prefers_color_scheme", 1);
|
||||
pref("browser.display.use_system_colors", false);
|
||||
pref("browser.display.foreground_color", "#000000");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue