From 4d2f4bbd69e8b4ec8ae4e30b5f12d2f67bd29f2c Mon Sep 17 00:00:00 2001 From: Paul Licameli Date: Sat, 23 Jan 2016 18:25:06 -0500 Subject: [PATCH] Buig1307: Misbehavior posting mono into stereo --- src/Menus.cpp | 39 +++++++++++++++++++-------------------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/src/Menus.cpp b/src/Menus.cpp index d38e526f8..f7e09890c 100644 --- a/src/Menus.cpp +++ b/src/Menus.cpp @@ -3982,7 +3982,7 @@ void AudacityProject::OnPaste() Track *c = clipIter.First(); if (c == NULL) return; - Track *f = NULL; + Track *ff = NULL; Track *tmpSrc = NULL; Track *tmpC = NULL; Track *prev = NULL; @@ -3994,8 +3994,9 @@ void AudacityProject::OnPaste() while (n && c) { if (n->GetSelected()) { bAdvanceClipboard = true; - if (tmpC) c = tmpC; - if (c->GetKind() != n->GetKind()){ + if (tmpC) + c = tmpC; + if (c->GetKind() != n->GetKind()) { if (!bTrackTypeMismatch) { tmpSrc = prev; tmpC = c; @@ -4005,7 +4006,7 @@ void AudacityProject::OnPaste() c = tmpSrc; // If the types still don't match... - while (c && c->GetKind() != n->GetKind()){ + while (c && c->GetKind() != n->GetKind()) { prev = c; c = clipIter.Next(); } @@ -4013,7 +4014,7 @@ void AudacityProject::OnPaste() // Handle case where the first track in clipboard // is of different type than the first selected track - if (!c){ + if (!c) { c = tmpC; while (n && (c->GetKind() != n->GetKind() || !n->GetSelected())) { @@ -4023,13 +4024,14 @@ void AudacityProject::OnPaste() } n = iter.Next(); } - if (!n) c = NULL; + if (!n) + c = NULL; } // The last possible case for cross-type pastes: triggered when we try to // paste 1+ tracks from one type into 1+ tracks of another type. If // there's a mix of types, this shouldn't run. - if (!c){ + if (!c) { wxMessageBox( _("Pasting one type of track into another is not allowed."), _("Error"), wxICON_ERROR, this); @@ -4048,8 +4050,8 @@ void AudacityProject::OnPaste() break; } - if (!f) - f = n; + if (!ff) + ff = n; if (msClipProject != this && c->GetKind() == Track::Wave) ((WaveTrack *) c)->Lock(); @@ -4083,11 +4085,7 @@ void AudacityProject::OnPaste() n = iter.Next(); if (n->GetKind() == Track::Wave) { - //printf("Checking to see if we need to pre-clear the track\n"); - if (!((WaveTrack *) n)->IsEmpty(t0, t1)) { - ((WaveTrack *) n)->Clear(t0, t1); - } - bPastedSomething |= ((WaveTrack *)n)->Paste(t0, c); + bPastedSomething |= ((WaveTrack *)n)->ClearAndPaste(t0, t1, c, true, true); } else { @@ -4121,12 +4119,13 @@ void AudacityProject::OnPaste() TrackListOfKindIterator clipWaveIter(Track::Wave, msClipboard); c = clipWaveIter.Last(); - while (n){ - if (n->GetSelected() && n->GetKind()==Track::Wave){ - if (c && c->GetKind() == Track::Wave){ + while (n) { + if (n->GetSelected() && n->GetKind()==Track::Wave) { + if (c && c->GetKind() == Track::Wave) { bPastedSomething |= ((WaveTrack *)n)->ClearAndPaste(t0, t1, (WaveTrack *)c, true, true); - }else{ + } + else { WaveTrack *tmp; tmp = mTrackFactory->NewWaveTrack( ((WaveTrack*)n)->GetSampleFormat(), ((WaveTrack*)n)->GetRate()); bool bResult = tmp->InsertSilence(0.0, msClipT1 - msClipT0); // MJS: Is this correct? @@ -4166,8 +4165,8 @@ void AudacityProject::OnPaste() RedrawProject(); - if (f) - mTrackPanel->EnsureVisible(f); + if (ff) + mTrackPanel->EnsureVisible(ff); } }