1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
pub trait Focusable { fn focus(&mut self); fn unfocus(&mut self); } #[macro_export] macro_rules! impl_focusable { ($target:ty) => { impl $crate::traits::Focusable for $target { fn focus(&mut self) { self.is_focused = true; } fn unfocus(&mut self) { self.is_focused = false; } } }; }