From 905f9d7ac61b3a96aa7981ca13610d2de517a528 Mon Sep 17 00:00:00 2001 From: Mike Welsh Date: Sat, 27 Jun 2020 23:34:19 -0700 Subject: [PATCH] core: Clear mouse down flag even if there is no hovered object --- core/src/player.rs | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/core/src/player.rs b/core/src/player.rs index 26f72522f..247880d79 100644 --- a/core/src/player.rs +++ b/core/src/player.rs @@ -481,23 +481,29 @@ impl Player { let mut is_mouse_down = self.is_mouse_down; self.mutate_with_update_context(|avm, context| { if let Some(node) = context.mouse_hovered_object { - if !node.removed() { - match event { - PlayerEvent::MouseDown { .. } => { - is_mouse_down = true; - needs_render = true; - node.handle_clip_event(avm, context, ClipEvent::Press); - } + if node.removed() { + context.mouse_hovered_object = None; + } + } - PlayerEvent::MouseUp { .. } => { - is_mouse_down = false; - needs_render = true; - node.handle_clip_event(avm, context, ClipEvent::Release); - } - - _ => (), + match event { + PlayerEvent::MouseDown { .. } => { + is_mouse_down = true; + needs_render = true; + if let Some(node) = context.mouse_hovered_object { + node.handle_clip_event(avm, context, ClipEvent::Press); } } + + PlayerEvent::MouseUp { .. } => { + is_mouse_down = false; + needs_render = true; + if let Some(node) = context.mouse_hovered_object { + node.handle_clip_event(avm, context, ClipEvent::Release); + } + } + + _ => (), } Self::run_actions(avm, context);