diff --git a/core/src/display_object/avm1_button.rs b/core/src/display_object/avm1_button.rs index 65431e434..6ec9ccb7b 100644 --- a/core/src/display_object/avm1_button.rs +++ b/core/src/display_object/avm1_button.rs @@ -599,8 +599,8 @@ impl<'gc> TInteractiveObject<'gc> for Avm1Button<'gc> { } } - fn tab_enabled_avm1(&self, context: &mut UpdateContext<'_, 'gc>) -> bool { - self.get_avm1_boolean_property(context, "tabEnabled", |_| true) + fn tab_enabled_default(&self, _context: &mut UpdateContext<'_, 'gc>) -> bool { + true } fn highlight_bounds(self) -> Rectangle { diff --git a/core/src/display_object/avm2_button.rs b/core/src/display_object/avm2_button.rs index f4feedab7..47183bb22 100644 --- a/core/src/display_object/avm2_button.rs +++ b/core/src/display_object/avm2_button.rs @@ -821,7 +821,7 @@ impl<'gc> TInteractiveObject<'gc> for Avm2Button<'gc> { } } - fn tab_enabled_avm2_default(&self, _context: &mut UpdateContext<'_, 'gc>) -> bool { + fn tab_enabled_default(&self, _context: &mut UpdateContext<'_, 'gc>) -> bool { true } } diff --git a/core/src/display_object/edit_text.rs b/core/src/display_object/edit_text.rs index 2d24fb014..a23adbd15 100644 --- a/core/src/display_object/edit_text.rs +++ b/core/src/display_object/edit_text.rs @@ -2459,11 +2459,7 @@ impl<'gc> TInteractiveObject<'gc> for EditText<'gc> { self.tab_enabled(context) } - fn tab_enabled_avm1(&self, context: &mut UpdateContext<'_, 'gc>) -> bool { - self.get_avm1_boolean_property(context, "tabEnabled", |_| true) - } - - fn tab_enabled_avm2_default(&self, _context: &mut UpdateContext<'_, 'gc>) -> bool { + fn tab_enabled_default(&self, _context: &mut UpdateContext<'_, 'gc>) -> bool { self.is_editable() } } diff --git a/core/src/display_object/interactive.rs b/core/src/display_object/interactive.rs index e5f403641..285796559 100644 --- a/core/src/display_object/interactive.rs +++ b/core/src/display_object/interactive.rs @@ -641,20 +641,16 @@ pub trait TInteractiveObject<'gc>: if context.swf.is_action_script_3() { self.raw_interactive() .tab_enabled - .unwrap_or_else(|| self.tab_enabled_avm2_default(context)) + .unwrap_or_else(|| self.tab_enabled_default(context)) } else { - self.tab_enabled_avm1(context) + self.as_displayobject() + .get_avm1_boolean_property(context, "tabEnabled", |context| { + self.tab_enabled_default(context) + }) } } - /// Look up the `tabEnabled` property from AVM1. - /// - /// Do not use this directly, use [`Self::is_tabbable()`] or [`Self::tab_enabled()`]. - fn tab_enabled_avm1(&self, _context: &mut UpdateContext<'_, 'gc>) -> bool { - false - } - - fn tab_enabled_avm2_default(&self, _context: &mut UpdateContext<'_, 'gc>) -> bool { + fn tab_enabled_default(&self, _context: &mut UpdateContext<'_, 'gc>) -> bool { false } diff --git a/core/src/display_object/movie_clip.rs b/core/src/display_object/movie_clip.rs index f2f50082e..ff01b2c6c 100644 --- a/core/src/display_object/movie_clip.rs +++ b/core/src/display_object/movie_clip.rs @@ -3369,14 +3369,17 @@ impl<'gc> TInteractiveObject<'gc> for MovieClip<'gc> { } } - fn tab_enabled_avm1(&self, context: &mut UpdateContext<'_, 'gc>) -> bool { - self.get_avm1_boolean_property(context, "tabEnabled", |context| { - self.tab_index().is_some() || self.is_button_mode(context) - }) - } + fn tab_enabled_default(&self, context: &mut UpdateContext<'_, 'gc>) -> bool { + if self.is_button_mode(context) { + return true; + } - fn tab_enabled_avm2_default(&self, context: &mut UpdateContext<'_, 'gc>) -> bool { - self.is_button_mode(context) + let is_avm1 = !context.swf.is_action_script_3(); + if is_avm1 && self.tab_index().is_some() { + return true; + } + + false } }