mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-07 04:06:45 +01:00
wip(p65,e2)
This commit is contained in:
parent
fffd830e15
commit
e768790658
9 changed files with 226 additions and 299 deletions
|
|
@ -1,5 +1,47 @@
|
|||
use crate::*;
|
||||
|
||||
#[derive(Clone, Copy, Debug, PartialEq)]
|
||||
pub enum FocusState<T: Copy + Debug + PartialEq> {
|
||||
Exited(T),
|
||||
Focused(T),
|
||||
Entered(T),
|
||||
}
|
||||
|
||||
impl<T: Copy + Debug + PartialEq> FocusState<T> {
|
||||
pub fn inner (&self) -> T {
|
||||
match self {
|
||||
Self::Exited(inner) => *inner,
|
||||
Self::Focused(inner) => *inner,
|
||||
Self::Entered(inner) => *inner,
|
||||
}
|
||||
}
|
||||
pub fn set_inner (&mut self, inner: T) {
|
||||
*self = match self {
|
||||
Self::Exited(_) => Self::Exited(inner),
|
||||
Self::Focused(_) => Self::Focused(inner),
|
||||
Self::Entered(_) => Self::Entered(inner),
|
||||
}
|
||||
}
|
||||
pub fn is_exited (&self) -> bool {
|
||||
if let Self::Exited(_) = self { true } else { false }
|
||||
}
|
||||
pub fn is_focused (&self) -> bool {
|
||||
if let Self::Focused(_) = self { true } else { false }
|
||||
}
|
||||
pub fn is_entered (&self) -> bool {
|
||||
if let Self::Entered(_) = self { true } else { false }
|
||||
}
|
||||
pub fn to_exited (&mut self) {
|
||||
*self = Self::Exited(self.inner())
|
||||
}
|
||||
pub fn to_focused (&mut self) {
|
||||
*self = Self::Focused(self.inner())
|
||||
}
|
||||
pub fn to_entered (&mut self) {
|
||||
*self = Self::Entered(self.inner())
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, PartialEq, Debug)]
|
||||
pub enum FocusCommand {
|
||||
Next,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue