summaryrefslogtreecommitdiff
path: root/schist_desktop_gui/src/traits/focusable.rs
diff options
context:
space:
mode:
Diffstat (limited to 'schist_desktop_gui/src/traits/focusable.rs')
-rw-r--r--schist_desktop_gui/src/traits/focusable.rs18
1 files changed, 18 insertions, 0 deletions
diff --git a/schist_desktop_gui/src/traits/focusable.rs b/schist_desktop_gui/src/traits/focusable.rs
new file mode 100644
index 0000000..8eb9628
--- /dev/null
+++ b/schist_desktop_gui/src/traits/focusable.rs
@@ -0,0 +1,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;
+ }
+ }
+ };
+}