diff options
Diffstat (limited to 'components/layout/incremental.rs')
-rw-r--r-- | components/layout/incremental.rs | 55 |
1 files changed, 37 insertions, 18 deletions
diff --git a/components/layout/incremental.rs b/components/layout/incremental.rs index ff1e0813ccd..f0f76453919 100644 --- a/components/layout/incremental.rs +++ b/components/layout/incremental.rs @@ -11,7 +11,7 @@ use style::servo::restyle_damage::ServoRestyleDamage; #[derive(Clone, Copy, PartialEq)] pub enum RelayoutMode { Incremental, - Force + Force, } bitflags! { @@ -30,7 +30,10 @@ pub trait LayoutDamageComputation { impl<'a> LayoutDamageComputation for &'a mut Flow { fn compute_layout_damage(self) -> SpecialRestyleDamage { let mut special_damage = SpecialRestyleDamage::empty(); - let is_absolutely_positioned = self.base().flags.contains(FlowFlags::IS_ABSOLUTELY_POSITIONED); + let is_absolutely_positioned = self + .base() + .flags + .contains(FlowFlags::IS_ABSOLUTELY_POSITIONED); // In addition to damage, we use this phase to compute whether nodes affect CSS counters. let mut has_counter_affecting_children = false; @@ -41,35 +44,47 @@ impl<'a> LayoutDamageComputation for &'a mut Flow { let parent_damage = self_base.restyle_damage; for kid in self_base.children.iter_mut() { - let child_is_absolutely_positioned = - kid.base().flags.contains(FlowFlags::IS_ABSOLUTELY_POSITIONED); + let child_is_absolutely_positioned = kid + .base() + .flags + .contains(FlowFlags::IS_ABSOLUTELY_POSITIONED); kid.mut_base().restyle_damage.insert( - parent_damage.damage_for_child(is_absolutely_positioned, - child_is_absolutely_positioned)); + parent_damage + .damage_for_child(is_absolutely_positioned, child_is_absolutely_positioned), + ); { let kid: &mut Flow = kid; special_damage.insert(kid.compute_layout_damage()); } - self_base.restyle_damage - .insert(kid.base().restyle_damage.damage_for_parent( - child_is_absolutely_positioned)); + self_base.restyle_damage.insert( + kid.base() + .restyle_damage + .damage_for_parent(child_is_absolutely_positioned), + ); - has_counter_affecting_children = has_counter_affecting_children || - kid.base().flags.intersects(FlowFlags::AFFECTS_COUNTERS | - FlowFlags::HAS_COUNTER_AFFECTING_CHILDREN); + has_counter_affecting_children = + has_counter_affecting_children || kid.base().flags.intersects( + FlowFlags::AFFECTS_COUNTERS | FlowFlags::HAS_COUNTER_AFFECTING_CHILDREN, + ); } } let self_base = self.mut_base(); - if self_base.flags.float_kind() != Float::None && - self_base.restyle_damage.intersects(ServoRestyleDamage::REFLOW) { + if self_base.flags.float_kind() != Float::None && self_base + .restyle_damage + .intersects(ServoRestyleDamage::REFLOW) + { special_damage.insert(SpecialRestyleDamage::REFLOW_ENTIRE_DOCUMENT); } if has_counter_affecting_children { - self_base.flags.insert(FlowFlags::HAS_COUNTER_AFFECTING_CHILDREN) + self_base + .flags + .insert(FlowFlags::HAS_COUNTER_AFFECTING_CHILDREN) } else { - self_base.flags.remove(FlowFlags::HAS_COUNTER_AFFECTING_CHILDREN) + self_base + .flags + .remove(FlowFlags::HAS_COUNTER_AFFECTING_CHILDREN) } special_damage @@ -77,8 +92,12 @@ impl<'a> LayoutDamageComputation for &'a mut Flow { fn reflow_entire_document(self) { let self_base = self.mut_base(); - self_base.restyle_damage.insert(RestyleDamage::rebuild_and_reflow()); - self_base.restyle_damage.remove(ServoRestyleDamage::RECONSTRUCT_FLOW); + self_base + .restyle_damage + .insert(RestyleDamage::rebuild_and_reflow()); + self_base + .restyle_damage + .remove(ServoRestyleDamage::RECONSTRUCT_FLOW); for kid in self_base.children.iter_mut() { kid.reflow_entire_document(); } |