From 6e28400e176a94c54bbea40f2502fe3c331c1be2 Mon Sep 17 00:00:00 2001 From: Pavel Date: Tue, 6 May 2025 00:15:41 +0300 Subject: [PATCH] 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 image 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 ` --- crates/gpui/examples/input.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/crates/gpui/examples/input.rs b/crates/gpui/examples/input.rs index 2beee18658..2d01e3d749 100644 --- a/crates/gpui/examples/input.rs +++ b/crates/gpui/examples/input.rs @@ -334,7 +334,11 @@ impl EntityInputHandler for TextInput { self.content = (self.content[0..range.start].to_owned() + new_text + &self.content[range.end..]) .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 .as_ref() .map(|range_utf16| self.range_from_utf16(range_utf16))