From e684415c2f8c5a5ec06b904a95c866107817f4d9 Mon Sep 17 00:00:00 2001 From: unspeaker Date: Fri, 9 May 2025 21:43:07 +0300 Subject: [PATCH] arranger: fix t keybind on main (thx @magicpotatobean) --- config/keys_arranger.edn | 2 +- crates/app/src/api.rs | 6 ++++++ crates/app/src/model/selection.rs | 10 ++++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/config/keys_arranger.edn b/config/keys_arranger.edn index ba467da7..998d2349 100644 --- a/config/keys_arranger.edn +++ b/config/keys_arranger.edn @@ -1,6 +1,6 @@ (@c color) (@q launch) -(@t select :track 0) +(@t select :select-track-header) (@tab edit :clip) (@shift-I input add) (@shift-O output add) diff --git a/crates/app/src/api.rs b/crates/app/src/api.rs index 4eb728af..408f5555 100644 --- a/crates/app/src/api.rs +++ b/crates/app/src/api.rs @@ -131,6 +131,9 @@ handle!(TuiIn: |self: App, input|Ok(if let Some(command) = self.config.keys.comm fn select_scene_prev (&self) -> Selection { self.selected.scene_prev() } + fn select_track_header (&self) -> Selection { + self.selected.track_header(self.tracks.len()) + } fn select_track_next (&self) -> Selection { self.selected.track_next(self.tracks.len()) } @@ -373,16 +376,19 @@ impl<'state> Context<'state, ClockCommand> for App { Context::get(&self.clock, iter) } } + impl<'state> Context<'state, MidiEditCommand> for App { fn get <'source> (&'state self, iter: &mut TokenIter<'source>) -> Option { self.editor().map(|e|Context::get(e, iter)).flatten() } } + impl<'state> Context<'state, PoolCommand> for App { fn get <'source> (&'state self, iter: &mut TokenIter<'source>) -> Option { self.pool().map(|p|Context::get(p, iter)).flatten() } } + impl<'state> Context<'state, SamplerCommand> for App { fn get <'source> (&'state self, iter: &mut TokenIter<'source>) -> Option { self.sampler().map(|p|Context::get(p, iter)).flatten() diff --git a/crates/app/src/model/selection.rs b/crates/app/src/model/selection.rs index 82d588cc..d4560a94 100644 --- a/crates/app/src/model/selection.rs +++ b/crates/app/src/model/selection.rs @@ -53,6 +53,16 @@ impl Selection { _ => None } } + pub fn track_header (&self, track_count: usize) -> Self { + use Selection::*; + match self { + Mix => Track(0), + Scene(_) => Mix, + Track(t) => Track((t + 1) % track_count), + TrackClip { track, .. } => Track(*track), + _ => todo!(), + } + } pub fn track_next (&self, len: usize) -> Self { use Selection::*; match self {