diff --git a/core/src/focus_tracker.rs b/core/src/focus_tracker.rs index f7476f4c8069..7447146da088 100644 --- a/core/src/focus_tracker.rs +++ b/core/src/focus_tracker.rs @@ -229,7 +229,7 @@ impl<'gc> FocusTracker<'gc> { // first run this logic (and not care whether it's a mouse focus), // and then handle placing the caret. if let Some(text_field) = self.get_as_edit_text() { - if text_field.is_editable() && !text_field.movie().is_action_script_3() { + if !text_field.movie().is_action_script_3() { let length = text_field.text_length(); text_field.set_selection(Some(TextSelection::for_range(0, length)), context.gc()); } diff --git a/tests/tests/swfs/avm1/edittext_focus_selection/output.txt b/tests/tests/swfs/avm1/edittext_focus_selection/output.txt new file mode 100644 index 000000000000..c4bbe5ff2a24 --- /dev/null +++ b/tests/tests/swfs/avm1/edittext_focus_selection/output.txt @@ -0,0 +1,2 @@ +abcd; |abcd +|abcd; | diff --git a/tests/tests/swfs/avm1/edittext_focus_selection/test.as b/tests/tests/swfs/avm1/edittext_focus_selection/test.as new file mode 100644 index 000000000000..2ab4587a4d8e --- /dev/null +++ b/tests/tests/swfs/avm1/edittext_focus_selection/test.as @@ -0,0 +1,17 @@ +function checkSel() { + var before = text.text; + text.replaceSel("|"); + var after = text.text; + trace(before + "; " + after); +} + +_root.createTextField( + "text", + _root.getNextHighestDepth(), + 10, 10, 100, 30); + +text.text = "abcd"; +checkSel(); + +Selection.setFocus(text); +checkSel(); diff --git a/tests/tests/swfs/avm1/edittext_focus_selection/test.swf b/tests/tests/swfs/avm1/edittext_focus_selection/test.swf new file mode 100644 index 000000000000..19fb0f392b1c Binary files /dev/null and b/tests/tests/swfs/avm1/edittext_focus_selection/test.swf differ diff --git a/tests/tests/swfs/avm1/edittext_focus_selection/test.toml b/tests/tests/swfs/avm1/edittext_focus_selection/test.toml new file mode 100644 index 000000000000..cf6123969a1d --- /dev/null +++ b/tests/tests/swfs/avm1/edittext_focus_selection/test.toml @@ -0,0 +1 @@ +num_ticks = 1 diff --git a/tests/tests/swfs/avm2/edittext_focus_selection/Test.as b/tests/tests/swfs/avm2/edittext_focus_selection/Test.as new file mode 100644 index 000000000000..de71f34e380d --- /dev/null +++ b/tests/tests/swfs/avm2/edittext_focus_selection/Test.as @@ -0,0 +1,31 @@ +package { +import flash.display.*; +import flash.text.*; +import flash.events.*; + +public class Test extends MovieClip { + public function Test() { + var tf = new TextField(); + tf.type = "input"; + addChild(tf); + + tf.text = "abcd"; + trace(tf.selectionBeginIndex + "," + tf.selectionEndIndex); + + stage.focus = tf; + + trace(tf.selectionBeginIndex + "," + tf.selectionEndIndex); + + stage.focus = null; + + trace(tf.selectionBeginIndex + "," + tf.selectionEndIndex); + + tf.setSelection(1, 2); + trace(tf.selectionBeginIndex + "," + tf.selectionEndIndex); + + stage.focus = tf; + + trace(tf.selectionBeginIndex + "," + tf.selectionEndIndex); + } +} +} diff --git a/tests/tests/swfs/avm2/edittext_focus_selection/output.txt b/tests/tests/swfs/avm2/edittext_focus_selection/output.txt new file mode 100644 index 000000000000..77c1d3da73ba --- /dev/null +++ b/tests/tests/swfs/avm2/edittext_focus_selection/output.txt @@ -0,0 +1,5 @@ +0,0 +0,0 +0,0 +1,2 +1,2 diff --git a/tests/tests/swfs/avm2/edittext_focus_selection/test.swf b/tests/tests/swfs/avm2/edittext_focus_selection/test.swf new file mode 100644 index 000000000000..c413f8eaf79d Binary files /dev/null and b/tests/tests/swfs/avm2/edittext_focus_selection/test.swf differ diff --git a/tests/tests/swfs/avm2/edittext_focus_selection/test.toml b/tests/tests/swfs/avm2/edittext_focus_selection/test.toml new file mode 100644 index 000000000000..cf6123969a1d --- /dev/null +++ b/tests/tests/swfs/avm2/edittext_focus_selection/test.toml @@ -0,0 +1 @@ +num_ticks = 1