diff --git a/src/textual/document/_edit.py b/src/textual/document/_edit.py index d0bd5ad83d..dc9c04aeba 100644 --- a/src/textual/document/_edit.py +++ b/src/textual/document/_edit.py @@ -81,8 +81,16 @@ def do(self, text_area: TextArea, record_selection: bool = True) -> EditResult: ) row_offset = new_edit_to_row - edit_bottom_row - target_selection_start_row = selection_start_row + row_offset - target_selection_end_row = selection_end_row + row_offset + target_selection_start_row = ( + selection_start_row + row_offset + if edit_bottom_row <= selection_start_row + else selection_start_row + ) + target_selection_end_row = ( + selection_end_row + row_offset + if edit_bottom_row <= selection_end_row + else selection_end_row + ) if self.maintain_selection_offset: self._updated_selection = Selection(