Skip to content

Commit a40592c

Browse files
author
Jonathan Plasse
committed
Handle selection starting on a separator
1 parent 9537a9d commit a40592c

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

src/textual/widgets/_masked_input.py

+6-3
Original file line numberDiff line numberDiff line change
@@ -620,22 +620,25 @@ def replace(self, text: str, start: int, end: int):
620620
"""
621621

622622
self.cursor_position = start
623+
# Handle case where cursor start on a separator
624+
self._template.move_cursor(1)
625+
self._template.move_cursor(-1)
626+
if self.cursor_position < start:
627+
self._template.move_cursor(1)
628+
623629
for char in text:
624630
if self.cursor_position >= end:
625631
return
626632
new_value_cursor_position = self._template.insert_text_at_cursor(char)
627633
if new_value_cursor_position is None:
628634
self.restricted()
629635
return
630-
631636
self.value, self.cursor_position = new_value_cursor_position
632637

633638
last_cursor_position = self.cursor_position
634-
635639
while self.cursor_position < end:
636640
self._template.delete_at_position()
637641
self._template.move_cursor(1)
638-
639642
self.cursor_position = last_cursor_position
640643

641644
def clear(self) -> None:

0 commit comments

Comments
 (0)