1
0
mirror of https://github.com/cookiengineer/audacity synced 2026-03-23 06:35:50 +01:00

Rewrite many iterations over tracks and channels in src/commands

This commit is contained in:
Paul Licameli
2018-09-18 11:58:44 -04:00
parent 23a85893a1
commit c7ab9f2338
6 changed files with 77 additions and 112 deletions

View File

@@ -67,27 +67,21 @@ bool SetLabelCommand::Apply(const CommandContext & context)
//wxString mode = GetString(wxT("Type"));
AudacityProject * p = context.GetProject();
TrackList *tracks = context.GetProject()->GetTracks();
TrackListIterator iter(tracks);
Track *t = iter.First();
LabelStruct * pLabel = NULL;
int i=0;
int nn=0;
LabelTrack *labelTrack = nullptr;
while (t && i<=mLabelIndex) {
if (t->GetKind() == Track::Label) {
labelTrack = static_cast<LabelTrack*>(t);
if( labelTrack )
{
for (nn = 0;
(nn< (int)labelTrack->mLabels.size()) && i<=mLabelIndex;
nn++) {
i++;
pLabel = &labelTrack->mLabels[nn];
}
}
LabelTrack *labelTrack {};
for (auto lt : tracks->Any<LabelTrack>()) {
if( i > mLabelIndex )
break;
labelTrack = lt;
for (nn = 0;
(nn< (int)labelTrack->mLabels.size()) && i<=mLabelIndex;
nn++) {
i++;
pLabel = &labelTrack->mLabels[nn];
}
t = iter.Next();
}
if ( (i< mLabelIndex) || (pLabel == NULL))