From 1deebc87e869387c962f97b665d26785d0a2b52f Mon Sep 17 00:00:00 2001 From: Jay Sackwild Date: Sat, 11 Mar 2023 22:19:48 +0000 Subject: [PATCH] Support click events on movie clips containing text fields (#9995) Remove code that prevents click events from working on text fields within movie clips --- core/src/display_object/movie_clip.rs | 5 ----- .../avm2/movieclip_text_mousedown/input.json | 7 +++++++ .../avm2/movieclip_text_mousedown/output.txt | 1 + .../swfs/avm2/movieclip_text_mousedown/test.fla | Bin 0 -> 59392 bytes .../swfs/avm2/movieclip_text_mousedown/test.swf | Bin 0 -> 2578 bytes .../avm2/movieclip_text_mousedown/test.toml | 1 + 6 files changed, 9 insertions(+), 5 deletions(-) create mode 100644 tests/tests/swfs/avm2/movieclip_text_mousedown/input.json create mode 100644 tests/tests/swfs/avm2/movieclip_text_mousedown/output.txt create mode 100644 tests/tests/swfs/avm2/movieclip_text_mousedown/test.fla create mode 100644 tests/tests/swfs/avm2/movieclip_text_mousedown/test.swf create mode 100644 tests/tests/swfs/avm2/movieclip_text_mousedown/test.toml diff --git a/core/src/display_object/movie_clip.rs b/core/src/display_object/movie_clip.rs index c9e4a3f84..1f4fbb5f6 100644 --- a/core/src/display_object/movie_clip.rs +++ b/core/src/display_object/movie_clip.rs @@ -2974,11 +2974,6 @@ impl<'gc> TInteractiveObject<'gc> for MovieClip<'gc> { continue; } - // Clicking static text is ignored - if matches!(child, DisplayObject::Text(_)) { - continue; - } - let mut res = if let Some(child) = child.as_interactive() { child.mouse_pick_avm2(context, point, require_button_mode) } else if child.as_interactive().is_none() diff --git a/tests/tests/swfs/avm2/movieclip_text_mousedown/input.json b/tests/tests/swfs/avm2/movieclip_text_mousedown/input.json new file mode 100644 index 000000000..147b62084 --- /dev/null +++ b/tests/tests/swfs/avm2/movieclip_text_mousedown/input.json @@ -0,0 +1,7 @@ +[ + { + "type": "MouseDown", + "pos": [41.0, 184.0], + "btn": "Left" + } +] \ No newline at end of file diff --git a/tests/tests/swfs/avm2/movieclip_text_mousedown/output.txt b/tests/tests/swfs/avm2/movieclip_text_mousedown/output.txt new file mode 100644 index 000000000..cd0875583 --- /dev/null +++ b/tests/tests/swfs/avm2/movieclip_text_mousedown/output.txt @@ -0,0 +1 @@ +Hello world! diff --git a/tests/tests/swfs/avm2/movieclip_text_mousedown/test.fla b/tests/tests/swfs/avm2/movieclip_text_mousedown/test.fla new file mode 100644 index 0000000000000000000000000000000000000000..1567a2544c22f2d1d860e9398d68bb00c351e8d7 GIT binary patch literal 59392 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 literal 0 HcmV?d00001 diff --git a/tests/tests/swfs/avm2/movieclip_text_mousedown/test.swf b/tests/tests/swfs/avm2/movieclip_text_mousedown/test.swf new file mode 100644 index 0000000000000000000000000000000000000000..98fb504b427a62703d6a3f517bd50cf1e444594d GIT binary patch literal 2578 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 literal 0 HcmV?d00001 diff --git a/tests/tests/swfs/avm2/movieclip_text_mousedown/test.toml b/tests/tests/swfs/avm2/movieclip_text_mousedown/test.toml new file mode 100644 index 000000000..2708ada71 --- /dev/null +++ b/tests/tests/swfs/avm2/movieclip_text_mousedown/test.toml @@ -0,0 +1 @@ +num_frames = 1 \ No newline at end of file