Factor out a new function to check display property is changed from 'none' to other

This commit is contained in:
Hiroyuki Ikezoe 2018-02-21 19:33:59 +09:00
parent f90e98dcc9
commit 5ba2e874b1
2 changed files with 17 additions and 8 deletions

View file

@ -176,14 +176,7 @@ trait PrivateMatchMethods: TElement {
return; return;
} }
let display_changed_from_none = old_values.map_or(false, |old| { if new_values.is_display_property_changed_from_none(old_values) {
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 {
// When display value is changed from none to other, we need to // When display value is changed from none to other, we need to
// traverse descendant elements in a subsequent normal // traverse descendant elements in a subsequent normal
// traversal (we can't traverse them in this animation-only restyle // traversal (we can't traverse them in this animation-only restyle

View file

@ -144,6 +144,22 @@ impl ComputedValues {
return our_type == CSSPseudoElementType_InheritingAnonBox || return our_type == CSSPseudoElementType_InheritingAnonBox ||
our_type == CSSPseudoElementType::NonInheritingAnonBox; 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 { impl Drop for ComputedValues {