diff --git a/crates/app/src/model.rs b/crates/app/src/model.rs index 85dc5dd2..ce9b5bed 100644 --- a/crates/app/src/model.rs +++ b/crates/app/src/model.rs @@ -26,6 +26,8 @@ pub struct Tek { pub note_buf: Vec, /// Buffer for writing a chunk of midi events pub midi_buf: Vec>>, + /// Last track number (to avoid duplicate port names) + pub track_last: usize, /// List of tracks pub tracks: Vec, /// Scroll offset of tracks @@ -87,7 +89,11 @@ impl Tek { mins: &[PortConnect], mouts: &[PortConnect], ) -> Usually<(usize, &mut Track)> { - let name = name.map_or_else(||self.track_next_name(), |x|x.to_string().into()); + self.track_last += 1; + let name: Arc = name.map_or_else( + ||format!("Track{:02}", self.track_last).into(), + |x|x.to_string().into() + ); let mut track = Track { width: (name.len() + 2).max(12), color: color.unwrap_or_else(ItemTheme::random), @@ -594,9 +600,6 @@ pub trait HasTracks: HasSelection + HasClock + HasJack + HasEditor + Send + Sync self.tracks().iter().map(|s|s.name.len()).fold(0, usize::max) } const WIDTH_OFFSET: usize = 1; - fn track_next_name (&self) -> Arc { - format!("Track{:02}", self.tracks().len() + 1).into() - } fn track (&self) -> Option<&Track> { self.selected().track().and_then(|s|self.tracks().get(s)) }