mirror of
https://github.com/servo/servo.git
synced 2025-08-06 14:10:11 +01:00
Fix Backspace deleting entire previous line in <textarea>
(#36112)
* test(textinput): Add test for backspace at beginning of line in textarea Introduce a test to reproduce and verify the fix for backspacing at the beginning of a line in a multiline textarea. This ensures that pressing Backspace when the cursor is at the start of a line correctly removes the newline without deleting the entire previous line’s content. Related to: #27523 Signed-off-by: Emmanuel Elom <elomemmanuel007@gmail.com> * fix(textinput): Preserve selection origin when adjusting vertical position Fixes an issue where pressing Backspace at the beginning of a line in a textarea incorrectly deleted the entire previous line's content. This happened because `self.adjust_vertical(-1, select)` modified `selection_origin` and `edit_point`, but `selection_origin` was not restored before performing the horizontal adjustment. As a result, `self.selection_start()` and `self.selection_end()` were inconsistent, leading to `replace_operation` erasing the entire line. Now, we temporarily store `selection_origin` before adjusting vertical position and restore it afterward to ensure proper cursor and selection behavior. Fixes: #27523 Signed-off-by: Emmanuel Elom <elomemmanuel007@gmail.com> --------- Signed-off-by: Emmanuel Elom <elomemmanuel007@gmail.com> Co-authored-by: Josh Matthews <josh@joshmatthews.net>
This commit is contained in:
parent
4f33f31c86
commit
30a2a89d16
2 changed files with 14 additions and 0 deletions
|
@ -856,3 +856,11 @@ fn test_select_all() {
|
|||
textinput.selection_end()
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_backspace_in_textarea_at_beginning_of_line() {
|
||||
let mut textinput = text_input(Lines::Multiple, "first line\n");
|
||||
textinput.handle_keydown_aux(Key::ArrowDown, Modifiers::empty(), false);
|
||||
textinput.handle_keydown_aux(Key::Backspace, Modifiers::empty(), false);
|
||||
assert_eq!(textinput.get_content(), DOMString::from("first line"));
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue