From 302fb1f6968fbf6fe07a9f97ce0a4331dc5081ef Mon Sep 17 00:00:00 2001 From: Paul Licameli <paul.licameli@audacityteam.org> Date: Mon, 24 Jul 2023 08:20:46 -0400 Subject: [PATCH] Fix crash when dragging clips between tracks with sync lock on --- src/tracks/ui/TimeShiftHandle.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/tracks/ui/TimeShiftHandle.cpp b/src/tracks/ui/TimeShiftHandle.cpp index 0b94745c55..3695bbcfbb 100644 --- a/src/tracks/ui/TimeShiftHandle.cpp +++ b/src/tracks/ui/TimeShiftHandle.cpp @@ -363,7 +363,10 @@ void ClipMoveState::Init( for ( auto pTrack2 : group ) { if (pTrack2 == &track) continue; - + if (!pTrack2->IsLeader()) + continue; + + // shifters maps from leader tracks only auto &shifter2 = *shifters[pTrack2]; auto size = shifter2.MovingIntervals().size(); shifter2.SelectInterval(*interval); @@ -832,8 +835,10 @@ UIHandle::Result TimeShiftHandle::Drag const wxMouseEvent &event = evt.event; auto &viewInfo = ViewInfo::Get( *pProject ); + auto &trackList = TrackList::Get(*pProject); ChannelView *trackView = dynamic_cast<ChannelView*>(evt.pCell.get()); - Track *track = trackView ? trackView->FindTrack().get() : nullptr; + Track *track = + *trackList.FindLeader(trackView ? trackView->FindTrack().get() : nullptr); // Uncommenting this permits drag to continue to work even over the controls area /* @@ -853,9 +858,6 @@ UIHandle::Result TimeShiftHandle::Drag if (!pTrack) return RefreshCode::RefreshNone; - - auto &trackList = TrackList::Get( *pProject ); - // GM: slide now implementing snap-to // samples functionality based on sample rate. -- GitLab