MenuManager listens for undo events, intrudes less in other code

This commit is contained in:
Paul Licameli 2019-06-08 11:44:47 -04:00
parent 5eaf0a649b
commit e2c6720436
4 changed files with 16 additions and 16 deletions

View File

@ -85,11 +85,16 @@ MenuManager::MenuManager( AudacityProject &project )
: mProject{ project }
{
UpdatePrefs();
mProject.Bind( EVT_UNDO_OR_REDO, &MenuManager::OnUndoRedo, this );
mProject.Bind( EVT_UNDO_RESET, &MenuManager::OnUndoRedo, this );
mProject.Bind( EVT_UNDO_PUSHED, &MenuManager::OnUndoRedo, this );
}
MenuManager::~MenuManager()
{
mProject.Unbind( EVT_UNDO_OR_REDO, &MenuManager::OnUndoRedo, this );
mProject.Unbind( EVT_UNDO_RESET, &MenuManager::OnUndoRedo, this );
mProject.Unbind( EVT_UNDO_PUSHED, &MenuManager::OnUndoRedo, this );
}
void MenuManager::UpdatePrefs()
@ -388,6 +393,13 @@ void MenuCreator::RebuildMenuBar(AudacityProject &project)
ModuleManager::Get().Dispatch(MenusRebuilt);
}
void MenuManager::OnUndoRedo( wxCommandEvent &evt )
{
evt.Skip();
ModifyUndoMenuItems( mProject );
UpdateMenus();
}
CommandFlag MenuManager::GetFocusedFrame(AudacityProject &project)
{
wxWindow *w = wxWindow::FindFocus();

View File

@ -17,6 +17,7 @@
#include "ClientData.h"
class wxArrayString;
class wxCommandEvent;
class AudacityProject;
class CommandContext;
class CommandManager;
@ -87,6 +88,8 @@ public:
private:
void OnUndoRedo( wxCommandEvent &evt );
CommandFlag GetFocusedFrame(AudacityProject &project);
AudacityProject &mProject;

View File

@ -60,10 +60,6 @@ void ProjectHistory::InitialState()
_("Created new project"), wxT(""));
undoManager.StateSaved();
auto &menuManager = MenuManager::Get( project );
menuManager.ModifyUndoMenuItems( project );
menuManager.UpdateMenus();
}
bool ProjectHistory::UndoAvailable()
@ -106,10 +102,6 @@ void ProjectHistory::PushState(const wxString &desc,
mDirty = true;
auto &menuManager = MenuManager::Get( project );
menuManager.ModifyUndoMenuItems( project );
menuManager.UpdateMenus();
if (settings.GetTracksFitVerticallyZoomed())
ViewActions::DoZoomFitV( project );
if((flags & UndoPush::AUTOSAVE) != UndoPush::MINIMAL)
@ -190,8 +182,6 @@ void ProjectHistory::PopState(const UndoState &state)
if(odUsed)
ODManager::Instance()->AddNewTask(std::move(computeTask));
MenuManager::Get( project ).UpdateMenus();
projectFileIO.AutoSave();
}
@ -206,5 +196,4 @@ void ProjectHistory::SetStateTo(unsigned int n)
trackPanel.SetFocusedTrack(NULL);
trackPanel.Refresh(false);
MenuManager::Get( project ).ModifyUndoMenuItems( project );
}

View File

@ -252,8 +252,6 @@ void DoUndo(AudacityProject &project)
ProjectHistory::Get( project ).PopState( state ); } );
trackPanel.EnsureVisible(trackPanel.GetFirstSelectedTrack());
MenuManager::ModifyUndoMenuItems(project);
}
// Menu handler functions
@ -286,8 +284,6 @@ void OnRedo(const CommandContext &context)
ProjectHistory::Get( project ).PopState( state ); } );
trackPanel.EnsureVisible(trackPanel.GetFirstSelectedTrack());
MenuManager::ModifyUndoMenuItems(project);
}
void OnCut(const CommandContext &context)