diff options
| -rw-r--r-- | native/src/widget/text_input/editor.rs | 18 | 
1 files changed, 12 insertions, 6 deletions
| diff --git a/native/src/widget/text_input/editor.rs b/native/src/widget/text_input/editor.rs index c9b9795d..5cda4f1d 100644 --- a/native/src/widget/text_input/editor.rs +++ b/native/src/widget/text_input/editor.rs @@ -17,8 +17,10 @@ impl<'a> Editor<'a> {      pub fn insert(&mut self, character: char) {          match self.cursor.selection() {              Some((left, right)) => { -                self.cursor.move_left(self.value); -                self.value.remove_many(left, right); +                if left < self.value.len() { +                    self.cursor.move_left(self.value); +                    self.value.remove_many(left, right.min(self.value.len())); +                }              }              _ => (),          } @@ -32,8 +34,10 @@ impl<'a> Editor<'a> {          match self.cursor.selection() {              Some((left, right)) => { -                self.cursor.move_left(self.value); -                self.value.remove_many(left, right); +                if left < self.value.len() { +                    self.cursor.move_left(self.value); +                    self.value.remove_many(left, right.min(self.value.len())); +                }              }              _ => (),          } @@ -46,8 +50,10 @@ impl<'a> Editor<'a> {      pub fn backspace(&mut self) {          match self.cursor.selection() {              Some((start, end)) => { -                self.cursor.move_left(self.value); -                self.value.remove_many(start, end); +                if start < self.value.len() { +                    self.cursor.move_left(self.value); +                    self.value.remove_many(start, end.min(self.value.len())); +                }              }              None => {                  let start = self.cursor.start(self.value); | 
