diff --git a/components/layout/incremental.rs b/components/layout/incremental.rs index e8cf8e4c500..9670028cfa3 100644 --- a/components/layout/incremental.rs +++ b/components/layout/incremental.rs @@ -274,13 +274,15 @@ impl<'a> LayoutDamageComputation for &'a mut Flow { { let self_base = flow::mut_base(self); + // Take a snapshot of the parent damage before updating it with damage from children. + let parent_damage = self_base.restyle_damage; + for kid in self_base.children.iter_mut() { let child_is_absolutely_positioned = flow::base(kid).flags.contains(IS_ABSOLUTELY_POSITIONED); - flow::mut_base(kid).restyle_damage - .insert(self_base.restyle_damage.damage_for_child( - is_absolutely_positioned, - child_is_absolutely_positioned)); + flow::mut_base(kid).restyle_damage.insert( + parent_damage.damage_for_child(is_absolutely_positioned, + child_is_absolutely_positioned)); { let kid: &mut Flow = kid; special_damage.insert(kid.compute_layout_damage());