From 2b44e117bfa1d04fa63f3dd81948562404930710 Mon Sep 17 00:00:00 2001 From: mchinen Date: Mon, 18 Apr 2011 18:54:18 +0000 Subject: [PATCH] Bug 367 (P2) - fix regression where tracks could not be dragged in normal (non-sync) mode under certain conditions --- src/TrackPanel.cpp | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/src/TrackPanel.cpp b/src/TrackPanel.cpp index 8ae2e365f..6a14a747b 100644 --- a/src/TrackPanel.cpp +++ b/src/TrackPanel.cpp @@ -7555,18 +7555,7 @@ bool TrackPanel::MoveClipToTrack(WaveClip *clip, // Get the second track of two stereo tracks src2 = (WaveTrack*)mTracks->GetLink(src); - if (clip2 && !src2) { - // if we are copying two mono linked tracks we have to ask for it differently - src2 = (WaveTrack*)mTracks->GetNext(src, false); - if (src2 && src2->GetKind() != Track::Wave) - src2 = NULL; - } dst2 = (WaveTrack*)mTracks->GetLink(dst); - if (clip2 && !dst2) { - dst2 = (WaveTrack*)mTracks->GetNext(dst, false); - if (dst2 && dst2->GetKind() != Track::Wave) - dst2 = NULL; - } if ((src2 && !dst2) || (dst2 && !src2)) return false; // cannot move stereo- to mono track or other way around @@ -7575,6 +7564,28 @@ bool TrackPanel::MoveClipToTrack(WaveClip *clip, return false; if (clip2) { + // linking can cause pairs of mono tracks to get here. + // allow this case (both these won't have links) + if ((!src2 && !dst2) && (dst2 || src2)) + return false; + + if (!src2) { + // if we are copying two mono linked tracks we have to ask for it differently + src2 = (WaveTrack*)mTracks->GetNext(src, false); + if (src2 && src2->GetKind() != Track::Wave) + src2 = NULL; + } + if (!dst2) { + dst2 = (WaveTrack*)mTracks->GetNext(dst, false); + if (dst2 && dst2->GetKind() != Track::Wave) + dst2 = NULL; + } + + // we should have a source and dest track + if (!dst2 || !src2) + return false; + + if (!dst2->CanInsertClip(clip2)) return false; }