From 6bfd3ee54ae848fd5ebec5ceca636340ae35acad Mon Sep 17 00:00:00 2001 From: Paul Licameli Date: Fri, 28 Aug 2015 10:40:19 -0400 Subject: [PATCH] Move Mute and solo details out of TrackPanel.cpp --- src/Menus.cpp | 17 +++++++++++++-- src/Project.cpp | 32 +++++++++++++++++++++++++++ src/Project.h | 3 +++ src/TrackPanel.cpp | 54 +++++++--------------------------------------- src/TrackPanel.h | 5 +++-- 5 files changed, 61 insertions(+), 50 deletions(-) diff --git a/src/Menus.cpp b/src/Menus.cpp index 9a3cdcf2a..5736b8938 100644 --- a/src/Menus.cpp +++ b/src/Menus.cpp @@ -2878,12 +2878,25 @@ void AudacityProject::OnTrackMenu() void AudacityProject::OnTrackMute() { - mTrackPanel->OnTrackMute(false); + Track *t = NULL; + if (!t) { + t = mTrackPanel->GetFocusedTrack(); + if (!t || (t->GetKind() != Track::Wave)) + return; + } + DoTrackMute(t, false); } void AudacityProject::OnTrackSolo() { - mTrackPanel->OnTrackSolo(false); + Track *t = NULL; + if (!t) + { + t = mTrackPanel->GetFocusedTrack(); + if (!t || (t->GetKind() != Track::Wave)) + return; + } + DoTrackSolo(t, false); } void AudacityProject::OnTrackClose() diff --git a/src/Project.cpp b/src/Project.cpp index 186cf7a32..48c38417d 100644 --- a/src/Project.cpp +++ b/src/Project.cpp @@ -4849,6 +4849,38 @@ void AudacityProject::SetSyncLock(bool flag) } } +void AudacityProject::DoTrackMute(Track *t, bool exclusive) +{ + HandleTrackMute(t, exclusive); + + // Update mixer board, too. + MixerBoard* pMixerBoard = this->GetMixerBoard(); + if (pMixerBoard) + { + pMixerBoard->UpdateMute(); // Update for all tracks. + pMixerBoard->UpdateSolo(); // Update for all tracks. + } + + mTrackPanel->UpdateAccessibility(); + mTrackPanel->Refresh(false); +} + +void AudacityProject::DoTrackSolo(Track *t, bool exclusive) +{ + HandleTrackSolo(t, exclusive); + + // Update mixer board, too. + MixerBoard* pMixerBoard = this->GetMixerBoard(); + if (pMixerBoard) + { + pMixerBoard->UpdateMute(); // Update for all tracks. + pMixerBoard->UpdateSolo(); // Update for all tracks. + } + + mTrackPanel->UpdateAccessibility(); + mTrackPanel->Refresh(false); +} + void AudacityProject::HandleTrackMute(Track *t, const bool exclusive) { // "exclusive" mute means mute the chosen track and unmute all others. diff --git a/src/Project.h b/src/Project.h index ce5d3195d..6a82c0c7d 100644 --- a/src/Project.h +++ b/src/Project.h @@ -335,6 +335,9 @@ class AUDACITY_DLL_API AudacityProject: public wxFrame, bool IsSyncLocked(); void SetSyncLock(bool flag); + void DoTrackMute(Track *pTrack, bool exclusive); + void DoTrackSolo(Track *pTrack, bool exclusive); + // "exclusive" mute means mute the chosen track and unmute all others. void HandleTrackMute(Track *t, const bool exclusive); diff --git a/src/TrackPanel.cpp b/src/TrackPanel.cpp index 051de223c..d3a7ba3f7 100644 --- a/src/TrackPanel.cpp +++ b/src/TrackPanel.cpp @@ -2906,6 +2906,12 @@ void TrackPanel::UpdateSelectionDisplay() DisplaySelection(); } +void TrackPanel::UpdateAccessibility() +{ + if (mAx) + mAx->Updated(); +} + #ifdef EXPERIMENTAL_SPECTRAL_EDITING namespace { @@ -5305,9 +5311,9 @@ void TrackPanel::HandleMutingSoloing(wxMouseEvent & event, bool solo) { // For either, MakeParentPushState to make the track state dirty. if(solo) - OnTrackSolo(event.ShiftDown(),t); + GetProject()->DoTrackSolo(t, event.ShiftDown()); else - OnTrackMute(event.ShiftDown(),t); + GetProject()->DoTrackMute(t, event.ShiftDown()); } SetCapturedTrack( NULL ); // mTrackInfo.DrawMuteSolo(&dc, rect, t, false, solo); @@ -8603,50 +8609,6 @@ void TrackPanel::OnVRulerMenu(Track *t, wxMouseEvent *pEvent) mPopupMenuTarget = NULL; } -void TrackPanel::OnTrackMute(bool shiftDown, Track *t) -{ - if (!t) { - t = GetFocusedTrack(); - if (!t || (t->GetKind() != Track::Wave)) - return; - } - GetProject()->HandleTrackMute(t, shiftDown); - - // Update mixer board, too. - MixerBoard* pMixerBoard = this->GetMixerBoard(); - if (pMixerBoard) - { - pMixerBoard->UpdateMute(); // Update for all tracks. - pMixerBoard->UpdateSolo(); // Update for all tracks. - } - - mAx->Updated(); - Refresh(false); -} - - -void TrackPanel::OnTrackSolo(bool shiftDown, Track *t) -{ - if (!t) - { - t = GetFocusedTrack(); - if (!t || (t->GetKind() != Track::Wave)) - return; - } - GetProject()->HandleTrackSolo(t, shiftDown); - - // Update mixer board, too. - MixerBoard* pMixerBoard = this->GetMixerBoard(); - if (pMixerBoard) - { - pMixerBoard->UpdateMute(); // Update for all tracks. - pMixerBoard->UpdateSolo(); // Update for all tracks. - } - - mAx->Updated(); - Refresh(false); -} - void TrackPanel::OnTrackClose() { Track *t = GetFocusedTrack(); diff --git a/src/TrackPanel.h b/src/TrackPanel.h index f333cd7b5..54ce5d365 100644 --- a/src/TrackPanel.h +++ b/src/TrackPanel.h @@ -206,8 +206,6 @@ class AUDACITY_DLL_API TrackPanel:public wxPanel { virtual void OnTrackGainInc(); virtual void OnTrackMenu(Track *t = NULL); virtual void OnVRulerMenu(Track *t, wxMouseEvent *pEvent = NULL); - virtual void OnTrackMute(bool shiftdown, Track *t = NULL); - virtual void OnTrackSolo(bool shiftdown, Track *t = NULL); virtual void OnTrackClose(); virtual void OnTrackMoveUp(); virtual void OnTrackMoveDown(); @@ -347,6 +345,9 @@ protected: Track *pTrack); virtual void UpdateSelectionDisplay(); +public: + virtual void UpdateAccessibility(); + #ifdef EXPERIMENTAL_SPECTRAL_EDITING public: void SnapCenterOnce (const WaveTrack *pTrack, bool up);