diff --git a/components/style/gecko/media_queries.rs b/components/style/gecko/media_queries.rs index 6e82404de1d..7bab0b002d1 100644 --- a/components/style/gecko/media_queries.rs +++ b/components/style/gecko/media_queries.rs @@ -93,7 +93,9 @@ impl Device { document, default_values: ComputedValues::default_values(doc), root_font_size: AtomicU32::new(FONT_MEDIUM_PX.to_bits()), - body_text_color: AtomicUsize::new(prefs.mColors.mDefault as usize), + // This gets updated when we see the , so it doesn't really + // matter which color-scheme we look at here. + body_text_color: AtomicUsize::new(prefs.mLightColors.mDefault as usize), used_root_font_size: AtomicBool::new(false), used_font_metrics: AtomicBool::new(false), used_viewport_size: AtomicBool::new(false), @@ -386,13 +388,18 @@ impl Device { } /// Returns the default background color. - pub fn default_background_color(&self) -> RGBA { - convert_nscolor_to_rgba(self.pref_sheet_prefs().mColors.mDefaultBackground) + /// + /// This is only for forced-colors/high-contrast, so looking at light colors + /// is ok. + pub fn default_background_color_for_forced_colors(&self) -> RGBA { + convert_nscolor_to_rgba(self.pref_sheet_prefs().mLightColors.mDefaultBackground) } /// Returns the default foreground color. - pub fn default_color(&self) -> RGBA { - convert_nscolor_to_rgba(self.pref_sheet_prefs().mColors.mDefault) + /// + /// See above for looking at light colors only. + pub fn default_color_for_forced_colors(&self) -> RGBA { + convert_nscolor_to_rgba(self.pref_sheet_prefs().mLightColors.mDefault) } /// Returns the current effective text zoom. diff --git a/components/style/properties/cascade.rs b/components/style/properties/cascade.rs index 0834da93e89..fe5bae33fe8 100644 --- a/components/style/properties/cascade.rs +++ b/components/style/properties/cascade.rs @@ -430,7 +430,7 @@ fn tweak_when_ignoring_colors( // widget background color's rgb channels but not alpha... let alpha = alpha_channel(color, context); if alpha != 0 { - let mut color = context.builder.device.default_background_color(); + let mut color = context.builder.device.default_background_color_for_forced_colors(); color.alpha = alpha; declarations_to_apply_unless_overriden .push(PropertyDeclaration::BackgroundColor(color.into())) @@ -448,7 +448,7 @@ fn tweak_when_ignoring_colors( // override this with a non-transparent color, then override it with // the default color. Otherwise just let it inherit through. if context.builder.get_parent_inherited_text().clone_color().alpha == 0 { - let color = context.builder.device.default_color(); + let color = context.builder.device.default_color_for_forced_colors(); declarations_to_apply_unless_overriden.push(PropertyDeclaration::Color( specified::ColorPropertyValue(color.into()), )) diff --git a/components/style/properties/longhands/inherited_ui.mako.rs b/components/style/properties/longhands/inherited_ui.mako.rs index 4fb702a97b4..44dfdd74a2a 100644 --- a/components/style/properties/longhands/inherited_ui.mako.rs +++ b/components/style/properties/longhands/inherited_ui.mako.rs @@ -104,6 +104,7 @@ ${helpers.predefined_type( gecko_pref="layout.css.color-scheme.enabled", animation_value_type="discrete", has_effect_on_gecko_scrollbars=False, + ignored_when_colors_disabled=True, enabled_in="chrome", )}