fix(ime): Don't panic if some IME sends DeleteSurrounding events

This commit is contained in:
KENZ 2026-05-02 14:28:09 +09:00 committed by Michael Murphy
parent f752bba18f
commit 1444d5c43e

View file

@ -387,19 +387,19 @@ pub fn window_event(
self::modifiers(new_modifiers.state()), self::modifiers(new_modifiers.state()),
))) )))
} }
WindowEvent::Ime(event) => Some(Event::InputMethod(match event { WindowEvent::Ime(event) => match event {
Ime::Enabled => input_method::Event::Opened, Ime::Enabled => Some(input_method::Event::Opened),
Ime::Preedit(content, size) => input_method::Event::Preedit( Ime::Preedit(content, size) => Some(input_method::Event::Preedit(
content, content,
size.map(|(start, end)| start..end), size.map(|(start, end)| start..end),
), )),
Ime::Commit(content) => input_method::Event::Commit(content), Ime::Commit(content) => Some(input_method::Event::Commit(content)),
Ime::Disabled => input_method::Event::Closed, Ime::Disabled => Some(input_method::Event::Closed),
Ime::DeleteSurrounding { // Upstream iced depends on the winit version which doesn't support
before_bytes, // this kind of ime event.
after_bytes, Ime::DeleteSurrounding { .. } => None,
} => todo!(), }
})), .map(Event::InputMethod),
WindowEvent::Focused(focused) => Some(Event::Window(if focused { WindowEvent::Focused(focused) => Some(Event::Window(if focused {
window::Event::Focused window::Event::Focused
} else { } else {