Skip to content

Commit e334f55

Browse files
rustbasichacknus
authored andcommitted
IME for chinese (emilk#4436)
* Completed. * Closes emilk#4430 IME for chinese
1 parent 490ea39 commit e334f55

File tree

1 file changed

+22
-20
lines changed

1 file changed

+22
-20
lines changed

crates/egui-winit/src/lib.rs

+22-20
Original file line numberDiff line numberDiff line change
@@ -342,20 +342,12 @@ impl State {
342342
// We use input_method_editor_started to manually insert CompositionStart
343343
// between Commits.
344344
match ime {
345-
winit::event::Ime::Enabled => {
346-
self.egui_input
347-
.events
348-
.push(egui::Event::Ime(egui::ImeEvent::Enabled));
349-
self.has_sent_ime_enabled = true;
345+
winit::event::Ime::Enabled => {}
346+
winit::event::Ime::Preedit(_, None) => {
347+
self.ime_event_enable();
350348
}
351-
winit::event::Ime::Preedit(_, None) => {}
352349
winit::event::Ime::Preedit(text, Some(_cursor)) => {
353-
if !self.has_sent_ime_enabled {
354-
self.egui_input
355-
.events
356-
.push(egui::Event::Ime(egui::ImeEvent::Enabled));
357-
self.has_sent_ime_enabled = true;
358-
}
350+
self.ime_event_enable();
359351
self.egui_input
360352
.events
361353
.push(egui::Event::Ime(egui::ImeEvent::Preedit(text.clone())));
@@ -364,16 +356,10 @@ impl State {
364356
self.egui_input
365357
.events
366358
.push(egui::Event::Ime(egui::ImeEvent::Commit(text.clone())));
367-
self.egui_input
368-
.events
369-
.push(egui::Event::Ime(egui::ImeEvent::Disabled));
370-
self.has_sent_ime_enabled = false;
359+
self.ime_event_disable();
371360
}
372361
winit::event::Ime::Disabled => {
373-
self.egui_input
374-
.events
375-
.push(egui::Event::Ime(egui::ImeEvent::Disabled));
376-
self.has_sent_ime_enabled = false;
362+
self.ime_event_disable();
377363
}
378364
};
379365

@@ -492,6 +478,22 @@ impl State {
492478
}
493479
}
494480

481+
pub fn ime_event_enable(&mut self) {
482+
if !self.has_sent_ime_enabled {
483+
self.egui_input
484+
.events
485+
.push(egui::Event::Ime(egui::ImeEvent::Enabled));
486+
self.has_sent_ime_enabled = true;
487+
}
488+
}
489+
490+
pub fn ime_event_disable(&mut self) {
491+
self.egui_input
492+
.events
493+
.push(egui::Event::Ime(egui::ImeEvent::Disabled));
494+
self.has_sent_ime_enabled = false;
495+
}
496+
495497
pub fn on_mouse_motion(&mut self, delta: (f64, f64)) {
496498
self.egui_input.events.push(egui::Event::MouseMoved(Vec2 {
497499
x: delta.0 as f32,

0 commit comments

Comments
 (0)