diff options
author | 2025-02-03 02:33:40 +0100 | |
---|---|---|
committer | 2025-02-03 02:33:40 +0100 | |
commit | c83809adb907498ba2a573ec9fb50936601ac8fc (patch) | |
tree | 5009581a507014cda6850f0780bd315108d56bdd /widget/src/text_input.rs | |
parent | 3a35fd6249eeb324379d3a14b020ccc48ec16fb4 (diff) | |
download | iced-c83809adb907498ba2a573ec9fb50936601ac8fc.tar.gz iced-c83809adb907498ba2a573ec9fb50936601ac8fc.tar.bz2 iced-c83809adb907498ba2a573ec9fb50936601ac8fc.zip |
Implement basic IME selection in `Preedit` overlay
Diffstat (limited to '')
-rw-r--r-- | widget/src/text_input.rs | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/widget/src/text_input.rs b/widget/src/text_input.rs index a1a1d3b5..4c9e46c1 100644 --- a/widget/src/text_input.rs +++ b/widget/src/text_input.rs @@ -440,7 +440,7 @@ where } else { input_method::Purpose::Normal }, - preedit: Some(preedit), + preedit: Some(preedit.as_ref()), } } @@ -1256,13 +1256,16 @@ where state.is_ime_open = matches!(event, input_method::Event::Opened) - .then(String::new); + .then(input_method::Preedit::new); } - input_method::Event::Preedit(content, _range) => { + input_method::Event::Preedit(content, selection) => { let state = state::<Renderer>(tree); if state.is_focused.is_some() { - state.is_ime_open = Some(content.to_owned()); + state.is_ime_open = Some(input_method::Preedit { + content: content.to_owned(), + selection: selection.clone(), + }); } } input_method::Event::Commit(text) => { @@ -1514,7 +1517,7 @@ pub struct State<P: text::Paragraph> { placeholder: paragraph::Plain<P>, icon: paragraph::Plain<P>, is_focused: Option<Focus>, - is_ime_open: Option<String>, + is_ime_open: Option<input_method::Preedit>, is_dragging: bool, is_pasting: Option<Value>, last_click: Option<mouse::Click>, |