MenuManager listens for undo events, intrudes less in other code
This commit is contained in:
parent
5eaf0a649b
commit
e2c6720436
|
@ -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();
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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 );
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue