1
0
mirror of https://github.com/emilk/egui.git synced 2026-08-30 21:30:03 -04:00

Feat: implement IME preedit visuals for native platforms

This commit is contained in:
umajho
2026-04-08 17:14:05 +08:00
parent 1fdc5c0775
commit 41b877f3f5
7 changed files with 241 additions and 22 deletions

View File

@@ -688,10 +688,18 @@ impl State {
// Wayland, but it doesn't matter to us.
// See <https://github.com/rust-windowing/winit/issues/2498>
winit::event::Ime::Enabled | winit::event::Ime::Disabled => {}
winit::event::Ime::Preedit(text, _) => {
winit::event::Ime::Preedit(text, active_range_bytes) => {
self.egui_input
.events
.push(egui::Event::Ime(egui::ImeEvent::Preedit(text.clone())));
.push(egui::Event::Ime(egui::ImeEvent::Preedit {
text: text.clone(),
active_range_chars: active_range_bytes.map(|(start_bytes, end_bytes)| {
let start_char = text[..start_bytes].chars().count();
let end_char =
start_char + text[start_bytes..end_bytes].chars().count();
start_char..end_char
}),
}));
}
winit::event::Ime::Commit(text) => {
self.egui_input