editor: Fix overwriting mode side effects
- insert_text normally shouldn't always overwrite when in overwriting mode.
This commit is contained in:
parent
dfe075b11c
commit
af621a6be0
2 changed files with 5 additions and 5 deletions
|
|
@ -339,10 +339,10 @@ class Editor:
|
||||||
self.text_widget[start_y:end_y+1] = [new_line]
|
self.text_widget[start_y:end_y+1] = [new_line]
|
||||||
self.cursor_x, self.cursor_y = start_x, start_y
|
self.cursor_x, self.cursor_y = start_x, start_y
|
||||||
|
|
||||||
def insert_text(self, text):
|
def insert_text(self, text, is_overwriting=False):
|
||||||
try:
|
try:
|
||||||
current_line = self.text_widget[self.cursor_y]
|
current_line = self.text_widget[self.cursor_y]
|
||||||
replace_count = len(text) if self.is_overwriting else 0
|
replace_count = len(text) if is_overwriting else 0
|
||||||
self.text_widget[self.cursor_y] = (current_line[:self.cursor_x] + text
|
self.text_widget[self.cursor_y] = (current_line[:self.cursor_x] + text
|
||||||
+ current_line[self.cursor_x+replace_count:])
|
+ current_line[self.cursor_x+replace_count:])
|
||||||
except IndexError:
|
except IndexError:
|
||||||
|
|
@ -575,7 +575,7 @@ class Editor:
|
||||||
except IndexError:
|
except IndexError:
|
||||||
self.ring_bell()
|
self.ring_bell()
|
||||||
elif term_code in self._PRINTABLE:
|
elif term_code in self._PRINTABLE:
|
||||||
self.insert_text(term_code)
|
self.insert_text(term_code, is_overwriting=self.is_overwriting)
|
||||||
else:
|
else:
|
||||||
self.insert_text(repr(term_code))
|
self.insert_text(repr(term_code))
|
||||||
self.previous_term_code = term_code
|
self.previous_term_code = term_code
|
||||||
|
|
|
||||||
|
|
@ -83,11 +83,11 @@ class EditorTestCase(unittest.TestCase):
|
||||||
# overwrite
|
# overwrite
|
||||||
self.editor.toggle_overwrite()
|
self.editor.toggle_overwrite()
|
||||||
self.editor.cursor_left()
|
self.editor.cursor_left()
|
||||||
self.editor.insert_text("d")
|
self.editor.insert_text("d", is_overwriting=True)
|
||||||
self._assert_editor("abd", (3, 0))
|
self._assert_editor("abd", (3, 0))
|
||||||
self.editor.cursor_left()
|
self.editor.cursor_left()
|
||||||
self.editor.cursor_left()
|
self.editor.cursor_left()
|
||||||
self.editor.insert_text("ef")
|
self.editor.insert_text("ef", is_overwriting=True)
|
||||||
self._assert_editor("aef", (3, 0))
|
self._assert_editor("aef", (3, 0))
|
||||||
|
|
||||||
def test_enter(self):
|
def test_enter(self):
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue