use crate::prelude::*; use winit::dpi::{PhysicalPosition, PhysicalSize}; impl FocusHost for T { fn recent_click(&mut self) -> bool { crate::attr::recent_click(&mut self.default_state_mut().last_click) } fn set_focus(&mut self, id: Option>) { self.default_state_mut().focus = id; } fn is_focused(&self, id: WeakWidget) -> bool { self.default_state().focus == Some(id) } fn focus_gained(&mut self, region: Option) { let state = self.default_state_mut(); let Some(region) = region else { return }; state.window.set_ime_allowed(true); state.window.set_ime_cursor_area( PhysicalPosition::::from(region.top_left.tuple()), PhysicalSize::::from(region.size().tuple()), ); } }