From c81fd97eb24da8af5ba3105d9af5de60bdd03b6b Mon Sep 17 00:00:00 2001 From: unspeaker Date: Thu, 24 Oct 2024 23:21:32 +0300 Subject: [PATCH] don't mark empty scenes as playing --- crates/tek_sequencer/src/arranger.rs | 23 ++++++++++++----------- crates/tek_sequencer/src/arranger_tui.rs | 2 +- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/crates/tek_sequencer/src/arranger.rs b/crates/tek_sequencer/src/arranger.rs index a1b5f28d..a436cbdc 100644 --- a/crates/tek_sequencer/src/arranger.rs +++ b/crates/tek_sequencer/src/arranger.rs @@ -675,17 +675,18 @@ impl Scene { } /// Returns true if all phrases in the scene are currently playing pub fn is_playing (&self, tracks: &[ArrangementTrack]) -> bool { - self.clips.iter().enumerate().all(|(track_index, clip)|match clip { - Some(clip) => tracks - .get(track_index) - .map(|track|if let Some(phrase) = &track.player.phrase { - *phrase.read().unwrap() == *clip.read().unwrap() - } else { - false - }) - .unwrap_or(false), - None => true - }) + self.clips.iter().any(|clip|clip.is_some()) && self.clips.iter().enumerate() + .all(|(track_index, clip)|match clip { + Some(clip) => tracks + .get(track_index) + .map(|track|if let Some(phrase) = &track.player.phrase { + *phrase.read().unwrap() == *clip.read().unwrap() + } else { + false + }) + .unwrap_or(false), + None => true + }) } pub fn ppqs (scenes: &[Self], factor: usize) -> Vec<(usize, usize)> { let mut total = 0; diff --git a/crates/tek_sequencer/src/arranger_tui.rs b/crates/tek_sequencer/src/arranger_tui.rs index 127d12de..32a69c12 100644 --- a/crates/tek_sequencer/src/arranger_tui.rs +++ b/crates/tek_sequencer/src/arranger_tui.rs @@ -175,7 +175,7 @@ impl<'a> Content for VerticalArranger<'a, Tui> { // scene titles let scene_name = |scene, playing: bool, height|row!( - if playing { " ▶" } else { " " }, + if playing { "▶ " } else { " " }, (scene as &Scene).name.read().unwrap().as_str(), ).fixed_xy(offset.saturating_sub(1), height);