From ab200b6dc085c14e71ce171b47fe6ecbc647315f Mon Sep 17 00:00:00 2001 From: Mike Welsh Date: Sun, 29 Nov 2020 03:44:30 -0800 Subject: [PATCH] avm1: Don't fire button events when invisible (fix #1521) --- core/src/display_object/button.rs | 4 ++++ core/src/display_object/movie_clip.rs | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/core/src/display_object/button.rs b/core/src/display_object/button.rs index 06d46ed3a..0494ca2a5 100644 --- a/core/src/display_object/button.rs +++ b/core/src/display_object/button.rs @@ -326,6 +326,10 @@ impl<'gc> TDisplayObject<'gc> for Button<'gc> { context: &mut UpdateContext<'_, 'gc, '_>, event: ClipEvent, ) -> ClipEventResult { + if !self.visible() { + return ClipEventResult::NotHandled; + } + if event.propagates() { for child in self.iter_execution_list() { if child.handle_clip_event(context, event) == ClipEventResult::Handled { diff --git a/core/src/display_object/movie_clip.rs b/core/src/display_object/movie_clip.rs index 36fcbbdc8..af1a356dc 100644 --- a/core/src/display_object/movie_clip.rs +++ b/core/src/display_object/movie_clip.rs @@ -1774,6 +1774,10 @@ impl<'gc> TDisplayObject<'gc> for MovieClip<'gc> { context: &mut UpdateContext<'_, 'gc, '_>, event: ClipEvent, ) -> ClipEventResult { + if event.is_button_event() && !self.visible() { + return ClipEventResult::NotHandled; + } + if event.propagates() { for child in self.iter_execution_list() { if child.handle_clip_event(context, event) == ClipEventResult::Handled {