diff --git a/core/src/avm2/globals/flash/display/displayobjectcontainer.rs b/core/src/avm2/globals/flash/display/displayobjectcontainer.rs index 14cd9fd9a..92ca78cba 100644 --- a/core/src/avm2/globals/flash/display/displayobjectcontainer.rs +++ b/core/src/avm2/globals/flash/display/displayobjectcontainer.rs @@ -470,6 +470,12 @@ pub fn swap_children_at<'gc>( return Err(format!("RangeError: Index {} is out of bounds", index1).into()); } + let child0 = ctr.child_by_id(index0 as usize).unwrap(); + let child1 = ctr.child_by_id(index1 as usize).unwrap(); + + child0.set_placed_by_script(activation.context.gc_context, true); + child1.set_placed_by_script(activation.context.gc_context, true); + ctr.swap_at_id(&mut activation.context, index0 as usize, index1 as usize); } } @@ -509,6 +515,9 @@ pub fn swap_children<'gc>( .position(|a| DisplayObject::ptr_eq(a, child1)) .ok_or("ArgumentError: Child is not a child of this display object")?; + child0.set_placed_by_script(activation.context.gc_context, true); + child1.set_placed_by_script(activation.context.gc_context, true); + ctr.swap_at_id(&mut activation.context, index0, index1); } }