From 6f5c28f6719d998f4085bf4992e75404c1966657 Mon Sep 17 00:00:00 2001 From: unspeaker Date: Sat, 23 Nov 2024 15:32:40 +0100 Subject: [PATCH] wip: focus refactor, e0 --- crates/tek_tui/src/tui_view.rs | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/crates/tek_tui/src/tui_view.rs b/crates/tek_tui/src/tui_view.rs index 04c9fcd0..750312f8 100644 --- a/crates/tek_tui/src/tui_view.rs +++ b/crates/tek_tui/src/tui_view.rs @@ -69,12 +69,12 @@ pub trait PhrasesViewState: Send + Sync { fn phrase_mode (&self) -> &Option; } macro_rules! impl_phrases_view_state { - ($Struct:ident $(:: $field:ident)* [$self:ident: $focus:expr] [self: $enter:expr]) => { + ($Struct:ident $(:: $field:ident)* [$self1:ident: $focus:expr] [$self2:ident: $enter:expr]) => { impl PhrasesViewState for $Struct { - fn phrases_focused (&$self) -> bool { + fn phrases_focused (&$self1) -> bool { $focus } - fn phrases_entered (&$self) -> bool { + fn phrases_entered (&$self2) -> bool { $enter } fn phrases (&self) -> Vec>> { @@ -111,20 +111,22 @@ pub trait PhraseViewState: Send + Sync { fn size (&self) -> &Measure; } macro_rules! impl_phrase_view_state { - ($Struct:ident $(:: $field:ident)*) => { + ($Struct:ident $(:: $field:ident)* [$self1:ident : $focused:expr] [$self2:ident : $entered:expr]) => { impl PhraseViewState for $Struct { fn phrase_editing (&self) -> &Option>> { &self$(.$field)*.phrase } - fn phrase_editor_focused (&self) -> bool { - self$(.$field)*.focus.is_focused() + fn phrase_editor_focused (&$self1) -> bool { + $focused + //self$(.$field)*.focus.is_focused() + } + fn phrase_editor_entered (&$self2) -> bool { + $entered + //self$(.$field)*.focus.is_entered() } fn phrase_editor_size (&self) -> &Measure { todo!() } - fn phrase_editor_entered (&self) -> bool { - self$(.$field)*.focus.is_entered() - } fn keys (&self) -> &Buffer { &self$(.$field)*.keys } @@ -149,9 +151,15 @@ macro_rules! impl_phrase_view_state { } } } -impl_phrase_view_state!(PhraseEditorModel); -impl_phrase_view_state!(SequencerTui::editor); -impl_phrase_view_state!(ArrangerTui::editor); +impl_phrase_view_state!(PhraseEditorModel + [self: true] + [self: true]); +impl_phrase_view_state!(SequencerTui::editor + [self: self.focused() == AppFocus::Content(SequencerFocus::PhraseEditor)] + [self: self.entered() && self.focused() == AppFocus::Content(SequencerFocus::PhraseEditor)]); +impl_phrase_view_state!(ArrangerTui::editor + [self: self.focused() == AppFocus::Content(ArrangerFocus::PhraseEditor)] + [self: self.entered() && self.focused() == AppFocus::Content(ArrangerFocus::PhraseEditor)]); fn track_widths (tracks: &[ArrangerTrack]) -> Vec<(usize, usize)> { let mut widths = vec![];