diff --git a/components/style/matching.rs b/components/style/matching.rs index 89b60c9905a..82db5ded7ae 100644 --- a/components/style/matching.rs +++ b/components/style/matching.rs @@ -176,14 +176,7 @@ trait PrivateMatchMethods: TElement { return; } - let display_changed_from_none = old_values.map_or(false, |old| { - let old_display_style = old.get_box().clone_display(); - let new_display_style = new_values.get_box().clone_display(); - old_display_style == Display::None && - new_display_style != Display::None - }); - - if display_changed_from_none { + if new_values.is_display_property_changed_from_none(old_values) { // When display value is changed from none to other, we need to // traverse descendant elements in a subsequent normal // traversal (we can't traverse them in this animation-only restyle diff --git a/components/style/properties/gecko.mako.rs b/components/style/properties/gecko.mako.rs index 11b8ac5210a..aea141323ce 100644 --- a/components/style/properties/gecko.mako.rs +++ b/components/style/properties/gecko.mako.rs @@ -144,6 +144,22 @@ impl ComputedValues { return our_type == CSSPseudoElementType_InheritingAnonBox || our_type == CSSPseudoElementType::NonInheritingAnonBox; } + + /// Returns true if the display property is changed from 'none' to others. + pub fn is_display_property_changed_from_none( + &self, + old_values: Option<<&ComputedValues> + ) -> bool { + use properties::longhands::display::computed_value::T as Display; + + old_values.map_or(false, |old| { + let old_display_style = old.get_box().clone_display(); + let new_display_style = self.get_box().clone_display(); + old_display_style == Display::None && + new_display_style != Display::None + }) + } + } impl Drop for ComputedValues {