diff --git a/src/MixerBoard.cpp b/src/MixerBoard.cpp index eb1749d7b..28cd5d8a9 100644 --- a/src/MixerBoard.cpp +++ b/src/MixerBoard.cpp @@ -937,7 +937,8 @@ MixerBoard::MixerBoard(AudacityProject* pProject, void MixerBoard::UpdatePrefs() { - mProject->RecreateMixerBoard(); + // Destroys this: + static_cast(GetParent())->Recreate( mProject ); // Old approach modified things in situ. // However with a theme change there is so much to modify, it is easier @@ -1450,4 +1451,22 @@ void MixerBoardFrame::OnKeyEvent(wxKeyEvent & event) project->GetCommandManager()->FilterKeyEvent(project, event, true); } +void MixerBoardFrame::Recreate( AudacityProject *pProject ) +{ + wxPoint pos = mMixerBoard->GetPosition(); + wxSize siz = mMixerBoard->GetSize(); + wxSize siz2 = this->GetSize(); + + //wxLogDebug("Got rid of board %p", mMixerBoard ); + mMixerBoard->Destroy(); + mMixerBoard = NULL; + mMixerBoard = safenew MixerBoard(pProject, this, pos, siz); + //wxLogDebug("Created NEW board %p", mMixerBoard ); + mMixerBoard->UpdateTrackClusters(); + mMixerBoard->SetSize( siz ); + + this->SetSize( siz2 ); +} + + diff --git a/src/MixerBoard.h b/src/MixerBoard.h index 5ad4a8747..81cbb1134 100644 --- a/src/MixerBoard.h +++ b/src/MixerBoard.h @@ -266,6 +266,8 @@ public: MixerBoardFrame(AudacityProject* parent); virtual ~MixerBoardFrame(); + void Recreate(AudacityProject *pProject); + private: // event handlers void OnCloseWindow(wxCloseEvent &WXUNUSED(event)); diff --git a/src/Project.cpp b/src/Project.cpp index d81c7ba32..236f7c8d9 100644 --- a/src/Project.cpp +++ b/src/Project.cpp @@ -4713,24 +4713,6 @@ void AudacityProject::SetStateTo(unsigned int n) GetMenuManager(*this).ModifyUndoMenuItems(*this); } -void AudacityProject::RecreateMixerBoard( ) -{ - wxASSERT( mMixerBoard ); - wxASSERT( mMixerBoardFrame ); - wxPoint pos = mMixerBoard->GetPosition(); - wxSize siz = mMixerBoard->GetSize(); - wxSize siz2 = mMixerBoardFrame->GetSize(); - //wxLogDebug("Got rid of board %p", mMixerBoard ); - mMixerBoard->Destroy(); - mMixerBoard = NULL; - mMixerBoard = safenew MixerBoard(this, mMixerBoardFrame, pos, siz); - mMixerBoardFrame->mMixerBoard = mMixerBoard; - //wxLogDebug("Created NEW board %p", mMixerBoard ); - mMixerBoard->UpdateTrackClusters(); - mMixerBoard->SetSize( siz ); - mMixerBoardFrame->SetSize( siz2 ); -} - // // Clipboard methods // diff --git a/src/Project.h b/src/Project.h index e7e2b12e9..9efd87d5d 100644 --- a/src/Project.h +++ b/src/Project.h @@ -531,7 +531,6 @@ public: LyricsWindow* GetLyricsWindow(bool create = false); MixerBoardFrame* GetMixerBoardFrame(bool create = false); - MixerBoard* GetMixerBoard() { return mMixerBoard; } HistoryWindow *GetHistoryWindow(bool create = false); MacrosWindow *GetMacrosWindow(bool bExpanded, bool create = false); FreqWindow *GetFreqWindow(bool create = false); @@ -601,7 +600,6 @@ public: public: void ModifyState(bool bWantsAutoSave); // if true, writes auto-save file. Should set only if you really want the state change restored after // a crash, as it can take many seconds for large (eg. 10 track-hours) projects - void RecreateMixerBoard(); void PopState(const UndoState &state);