diff --git a/crates/tek_sequencer/src/arranger.rs b/crates/tek_sequencer/src/arranger.rs index 0f715cfb..fd163bf5 100644 --- a/crates/tek_sequencer/src/arranger.rs +++ b/crates/tek_sequencer/src/arranger.rs @@ -240,10 +240,41 @@ impl Arrangement { self.show_phrase(); } pub fn move_back (&mut self) { - todo!("arrangement: move back") + match self.selected { + ArrangementFocus::Scene(s) => { + if s > 0 { + self.scenes.swap(s, s - 1); + self.selected = ArrangementFocus::Scene(s - 1); + } + }, + ArrangementFocus::Track(t) => { + if t > 0 { + self.tracks.swap(t, t - 1); + self.selected = ArrangementFocus::Track(t - 1); + // FIXME: also swap clip order in scenes + } + }, + _ => todo!("arrangement: move forward") + } } pub fn move_forward (&mut self) { - todo!("arrangement: move forward") + match self.selected { + ArrangementFocus::Scene(s) => { + if s < self.scenes.len().saturating_sub(1) { + self.scenes.swap(s, s + 1); + self.selected = ArrangementFocus::Scene(s + 1); + } + }, + ArrangementFocus::Track(t) => { + if t < self.tracks.len().saturating_sub(1) { + self.tracks.swap(t, t + 1); + self.selected = ArrangementFocus::Track(t + 1); + // FIXME: also swap clip order in scenes + } + }, + _ => todo!("arrangement: move forward") + } + } } /// Methods for tracks in arrangement