From d6302bc370de8700244e19820795d90cb5d3c6e0 Mon Sep 17 00:00:00 2001 From: James Crook Date: Fri, 7 Oct 2016 21:53:10 +0100 Subject: [PATCH] Count stereo tracks as one track, not two. The TrackIterator actually iterates through channels, so we need to skip the linked tracks when counting. --- src/TrackPanel.cpp | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/TrackPanel.cpp b/src/TrackPanel.cpp index ec9b7ae9e..b12aa39f5 100644 --- a/src/TrackPanel.cpp +++ b/src/TrackPanel.cpp @@ -1894,17 +1894,34 @@ void TrackPanel::SelectTrack(Track *pTrack, bool selected, bool updateLastPicked } } +// Counts tracks, counting stereo tracks as one track. size_t TrackPanel::GetTrackCount(){ - auto tracks = GetTracks(); - return (size_t)tracks->GetCount(); + size_t count = 0; + + TrackListIterator iter(GetTracks()); + for (Track *t = iter.First(); t; t = iter.Next()) { + count += 1; + if( t->GetLinked() ){ + t = iter.Next(); + if( !t ) + break; + } + } + return count; } +// Counts selected tracks, counting stereo tracks as one track. size_t TrackPanel::GetSelectedTrackCount(){ size_t count = 0; TrackListIterator iter(GetTracks()); for (Track *t = iter.First(); t; t = iter.Next()) { count += t->GetSelected() ? 1:0; + if( t->GetLinked() ){ + t = iter.Next(); + if( !t ) + break; + } } return count; }