1use winit::dpi::{Position, Size};
4use winit::window::{
5 ImeCapabilities, ImeEnableRequest, ImeHint, ImePurpose, ImeRequest, ImeRequestData, Window,
6};
7
8pub fn enable_ime(window: &dyn Window, position: Position, size: Size) {
10 let data = ImeRequestData::default().with_cursor_area(position, size);
11 let request = if window.ime_capabilities().is_some() {
12 ImeRequest::Update(data)
13 } else {
14 let capabilities = ImeCapabilities::new()
15 .with_cursor_area()
16 .with_hint_and_purpose();
17 let data = data.with_hint_and_purpose(ImeHint::NONE, ImePurpose::Normal);
18 ImeRequest::Enable(
19 ImeEnableRequest::new(capabilities, data)
20 .expect("IME capabilities match the initial cursor area, hint and purpose"),
21 )
22 };
23 let _ = window.request_ime_update(request);
25}
26
27pub fn disable_ime(window: &dyn Window) {
29 let _ = window.request_ime_update(ImeRequest::Disable);
30}