diff options
-rw-r--r-- | components/style/properties/gecko.mako.rs | 7 | ||||
-rw-r--r-- | components/style/properties/longhand/font.mako.rs | 10 | ||||
-rw-r--r-- | components/style/properties/properties.mako.rs | 3 |
3 files changed, 15 insertions, 5 deletions
diff --git a/components/style/properties/gecko.mako.rs b/components/style/properties/gecko.mako.rs index b428ec3e198..e6aab102506 100644 --- a/components/style/properties/gecko.mako.rs +++ b/components/style/properties/gecko.mako.rs @@ -1490,8 +1490,10 @@ fn static_assert() { /// This function will also handle scriptminsize and scriptlevel /// so should not be called when you just want the font sizes to be copied. /// Hence the different name. + /// + /// Returns true if the inherited keyword size was actually used pub fn inherit_font_size_from(&mut self, parent: &Self, - kw_inherited_size: Option<Au>) { + kw_inherited_size: Option<Au>) -> bool { let (adjusted_size, adjusted_unconstrained_size) = self.calculate_script_level_size(parent); if adjusted_size.0 != parent.gecko.mSize || @@ -1513,18 +1515,21 @@ fn static_assert() { self.gecko.mFont.size = adjusted_size.0; self.gecko.mSize = adjusted_size.0; self.gecko.mScriptUnconstrainedSize = adjusted_unconstrained_size.0; + false } else if let Some(size) = kw_inherited_size { // Parent element was a keyword-derived size. self.gecko.mFont.size = size.0; self.gecko.mSize = size.0; // MathML constraints didn't apply here, so we can ignore this. self.gecko.mScriptUnconstrainedSize = size.0; + true } else { // MathML isn't affecting us, and our parent element does not // have a keyword-derived size. Set things normally. self.gecko.mFont.size = parent.gecko.mFont.size; self.gecko.mSize = parent.gecko.mSize; self.gecko.mScriptUnconstrainedSize = parent.gecko.mScriptUnconstrainedSize; + false } } diff --git a/components/style/properties/longhand/font.mako.rs b/components/style/properties/longhand/font.mako.rs index e99b15dd9cf..842b3279d90 100644 --- a/components/style/properties/longhand/font.mako.rs +++ b/components/style/properties/longhand/font.mako.rs @@ -927,10 +927,14 @@ ${helpers.single_keyword_system("font-variant-caps", let kw_inherited_size = context.style().font_size_keyword.map(|(kw, ratio)| { SpecifiedValue::Keyword(kw, ratio).to_computed_value(context) }); - context.mutate_style().mutate_font() + let used_kw = context.mutate_style().mutate_font() .inherit_font_size_from(parent, kw_inherited_size); - context.mutate_style().font_size_keyword = - context.inherited_style.font_size_keyword; + if used_kw { + context.mutate_style().font_size_keyword = + context.inherited_style.font_size_keyword; + } else { + context.mutate_style().font_size_keyword = None; + } } pub fn cascade_initial_font_size(context: &mut Context) { diff --git a/components/style/properties/properties.mako.rs b/components/style/properties/properties.mako.rs index ff2361fb792..b2a122adcbe 100644 --- a/components/style/properties/properties.mako.rs +++ b/components/style/properties/properties.mako.rs @@ -1569,8 +1569,9 @@ pub mod style_structs { /// (Servo does not handle MathML, so this just calls copy_font_size_from) pub fn inherit_font_size_from(&mut self, parent: &Self, - _: Option<Au>) { + _: Option<Au>) -> bool { self.copy_font_size_from(parent); + false } /// (Servo does not handle MathML, so this just calls set_font_size) pub fn apply_font_size(&mut self, |