gpui: Fix a bug with Japanese romaji typing in input example (#28507)
Steps to reproduce: * On macOS, run `input` example * type `aaa|bbb` place caret on the place marked with | * switch to `japanese romaji` * press `ko` * press left arrow <img width="412" alt="image" src="https://github.com/user-attachments/assets/d3c02e9b-98f9-420e-a3b7-681ba90829cd" /> You will get `aaa` duplicated with every arrow press. According to [reference implementation](https://developer.apple.com/library/archive/samplecode/TextInputView/Listings/FadingTextView_m.html#//apple_ref/doc/uid/DTS40008840-FadingTextView_m-DontLinkElementID_6) we need to unmark text when we get empty line in `setMarkedText `
This commit is contained in:
parent
78545a93ea
commit
6e28400e17
1 changed files with 5 additions and 1 deletions
|
@ -334,7 +334,11 @@ impl EntityInputHandler for TextInput {
|
||||||
self.content =
|
self.content =
|
||||||
(self.content[0..range.start].to_owned() + new_text + &self.content[range.end..])
|
(self.content[0..range.start].to_owned() + new_text + &self.content[range.end..])
|
||||||
.into();
|
.into();
|
||||||
self.marked_range = Some(range.start..range.start + new_text.len());
|
if !new_text.is_empty() {
|
||||||
|
self.marked_range = Some(range.start..range.start + new_text.len());
|
||||||
|
} else {
|
||||||
|
self.marked_range = None;
|
||||||
|
}
|
||||||
self.selected_range = new_selected_range_utf16
|
self.selected_range = new_selected_range_utf16
|
||||||
.as_ref()
|
.as_ref()
|
||||||
.map(|range_utf16| self.range_from_utf16(range_utf16))
|
.map(|range_utf16| self.range_from_utf16(range_utf16))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue