diff --git a/src/TrackPanel.cpp b/src/TrackPanel.cpp index c1c221466..81a5d7a92 100644 --- a/src/TrackPanel.cpp +++ b/src/TrackPanel.cpp @@ -8856,6 +8856,10 @@ void TrackPanel::OnChannelChange(wxCommandEvent & event) void TrackPanel::OnSwapChannels(wxCommandEvent & WXUNUSED(event)) { Track *partner = mPopupMenuTarget->GetLink(); + Track *const focused = GetFocusedTrack(); + const bool hasFocus = + (focused == mPopupMenuTarget || focused == partner); + SplitStereo(true); mPopupMenuTarget->SetChannel(Track::RightChannel); partner->SetChannel(Track::LeftChannel); @@ -8868,6 +8872,9 @@ void TrackPanel::OnSwapChannels(wxCommandEvent & WXUNUSED(event)) pMixerBoard->UpdateTrackClusters(); } + if (hasFocus) + SetFocusedTrack(partner); + MakeParentPushState(wxString::Format(_("Swapped Channels in '%s'"), mPopupMenuTarget->GetName().c_str()), _("Swap Channels"));