From ce2fc400af9679bc8d169f2928829dc6ca3c415b Mon Sep 17 00:00:00 2001 From: umajho Date: Wed, 27 May 2026 07:35:26 +0800 Subject: [PATCH] Fix(egui-winit): only ignore invalid range instead of whole Ime::Preedit event --- crates/egui-winit/src/lib.rs | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/crates/egui-winit/src/lib.rs b/crates/egui-winit/src/lib.rs index 91be2e408..b0851270f 100644 --- a/crates/egui-winit/src/lib.rs +++ b/crates/egui-winit/src/lib.rs @@ -691,14 +691,15 @@ impl State { winit::event::Ime::Preedit(text, active_range_bytes) => { let active_range_chars = match *active_range_bytes { Some((start_bytes, end_bytes)) => { - let (Some(start_chars), Some(middle_chars)) = ( + if let (Some(start_chars), Some(middle_chars)) = ( text.get(..start_bytes).map(|s| s.chars().count()), text.get(start_bytes..end_bytes).map(|s| s.chars().count()), - ) else { - log::warn!("{ime:?} is ignored due to invalid range"); - return; - }; - Some(start_chars..start_chars + middle_chars) + ) { + Some(start_chars..start_chars + middle_chars) + } else { + log::warn!("ignoring {ime:?}'s range because it is invalid"); + None + } } None => None, };