summaryrefslogtreecommitdiffstats
path: root/widget/src/text_input.rs
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2025-02-03 02:33:40 +0100
committerLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2025-02-03 02:33:40 +0100
commitc83809adb907498ba2a573ec9fb50936601ac8fc (patch)
tree5009581a507014cda6850f0780bd315108d56bdd /widget/src/text_input.rs
parent3a35fd6249eeb324379d3a14b020ccc48ec16fb4 (diff)
downloadiced-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.rs13
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>,