wip: focus refactor, e0

This commit is contained in:
🪞👃🪞 2024-11-23 15:32:40 +01:00
parent b663a09c15
commit 6f5c28f671

View file

@ -69,12 +69,12 @@ pub trait PhrasesViewState: Send + Sync {
fn phrase_mode (&self) -> &Option<PhrasesMode>;
}
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<Arc<RwLock<Phrase>>> {
@ -111,20 +111,22 @@ pub trait PhraseViewState: Send + Sync {
fn size (&self) -> &Measure<Tui>;
}
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<Arc<RwLock<Phrase>>> {
&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<Tui> {
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![];