Files
iris/src/default/attr.rs
T

27 lines
868 B
Rust

use crate::prelude::*;
use winit::dpi::{PhysicalPosition, PhysicalSize};
impl<T: HasDefaultUiState> 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<WeakWidget<TextEdit>>) {
self.default_state_mut().focus = id;
}
fn is_focused(&self, id: WeakWidget<TextEdit>) -> bool {
self.default_state().focus == Some(id)
}
fn focus_gained(&mut self, region: Option<PixelRegion>) {
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::<f32>::from(region.top_left.tuple()),
PhysicalSize::<f32>::from(region.size().tuple()),
);
}
}