diff --git a/ports/geckolib/glue.rs b/ports/geckolib/glue.rs index 99e6ef6d259..0026c7212e8 100644 --- a/ports/geckolib/glue.rs +++ b/ports/geckolib/glue.rs @@ -282,13 +282,19 @@ pub extern "C" fn Servo_TraverseSubtree(root: RawGeckoElementBorrowed, _ => panic!("invalid combination of TraversalRootBehavior and TraversalRestyleBehavior"), }; - let needs_animation_only_restyle = element.has_animation_only_dirty_descendants() || - element.has_animation_restyle_hints(); - if needs_animation_only_restyle { - traverse_subtree(element, - raw_data, - traversal_flags | ANIMATION_ONLY, - unsafe { &*snapshots }); + // It makes no sense to do an animation restyle when we're restyling + // newly-inserted content. + if !traversal_flags.contains(UNSTYLED_CHILDREN_ONLY) { + let needs_animation_only_restyle = + element.has_animation_only_dirty_descendants() || + element.has_animation_restyle_hints(); + + if needs_animation_only_restyle { + traverse_subtree(element, + raw_data, + traversal_flags | ANIMATION_ONLY, + unsafe { &*snapshots }); + } } if restyle_behavior == Restyle::ForThrottledAnimationFlush {