mirror of
https://github.com/cookiengineer/audacity
synced 2025-06-24 16:20:05 +02:00
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 }
|
: mProject{ project }
|
||||||
{
|
{
|
||||||
UpdatePrefs();
|
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()
|
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()
|
void MenuManager::UpdatePrefs()
|
||||||
@ -388,6 +393,13 @@ void MenuCreator::RebuildMenuBar(AudacityProject &project)
|
|||||||
ModuleManager::Get().Dispatch(MenusRebuilt);
|
ModuleManager::Get().Dispatch(MenusRebuilt);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MenuManager::OnUndoRedo( wxCommandEvent &evt )
|
||||||
|
{
|
||||||
|
evt.Skip();
|
||||||
|
ModifyUndoMenuItems( mProject );
|
||||||
|
UpdateMenus();
|
||||||
|
}
|
||||||
|
|
||||||
CommandFlag MenuManager::GetFocusedFrame(AudacityProject &project)
|
CommandFlag MenuManager::GetFocusedFrame(AudacityProject &project)
|
||||||
{
|
{
|
||||||
wxWindow *w = wxWindow::FindFocus();
|
wxWindow *w = wxWindow::FindFocus();
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
#include "ClientData.h"
|
#include "ClientData.h"
|
||||||
|
|
||||||
class wxArrayString;
|
class wxArrayString;
|
||||||
|
class wxCommandEvent;
|
||||||
class AudacityProject;
|
class AudacityProject;
|
||||||
class CommandContext;
|
class CommandContext;
|
||||||
class CommandManager;
|
class CommandManager;
|
||||||
@ -87,6 +88,8 @@ public:
|
|||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
void OnUndoRedo( wxCommandEvent &evt );
|
||||||
|
|
||||||
CommandFlag GetFocusedFrame(AudacityProject &project);
|
CommandFlag GetFocusedFrame(AudacityProject &project);
|
||||||
|
|
||||||
AudacityProject &mProject;
|
AudacityProject &mProject;
|
||||||
|
@ -60,10 +60,6 @@ void ProjectHistory::InitialState()
|
|||||||
_("Created new project"), wxT(""));
|
_("Created new project"), wxT(""));
|
||||||
|
|
||||||
undoManager.StateSaved();
|
undoManager.StateSaved();
|
||||||
|
|
||||||
auto &menuManager = MenuManager::Get( project );
|
|
||||||
menuManager.ModifyUndoMenuItems( project );
|
|
||||||
menuManager.UpdateMenus();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ProjectHistory::UndoAvailable()
|
bool ProjectHistory::UndoAvailable()
|
||||||
@ -106,10 +102,6 @@ void ProjectHistory::PushState(const wxString &desc,
|
|||||||
|
|
||||||
mDirty = true;
|
mDirty = true;
|
||||||
|
|
||||||
auto &menuManager = MenuManager::Get( project );
|
|
||||||
menuManager.ModifyUndoMenuItems( project );
|
|
||||||
menuManager.UpdateMenus();
|
|
||||||
|
|
||||||
if (settings.GetTracksFitVerticallyZoomed())
|
if (settings.GetTracksFitVerticallyZoomed())
|
||||||
ViewActions::DoZoomFitV( project );
|
ViewActions::DoZoomFitV( project );
|
||||||
if((flags & UndoPush::AUTOSAVE) != UndoPush::MINIMAL)
|
if((flags & UndoPush::AUTOSAVE) != UndoPush::MINIMAL)
|
||||||
@ -190,8 +182,6 @@ void ProjectHistory::PopState(const UndoState &state)
|
|||||||
if(odUsed)
|
if(odUsed)
|
||||||
ODManager::Instance()->AddNewTask(std::move(computeTask));
|
ODManager::Instance()->AddNewTask(std::move(computeTask));
|
||||||
|
|
||||||
MenuManager::Get( project ).UpdateMenus();
|
|
||||||
|
|
||||||
projectFileIO.AutoSave();
|
projectFileIO.AutoSave();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -206,5 +196,4 @@ void ProjectHistory::SetStateTo(unsigned int n)
|
|||||||
|
|
||||||
trackPanel.SetFocusedTrack(NULL);
|
trackPanel.SetFocusedTrack(NULL);
|
||||||
trackPanel.Refresh(false);
|
trackPanel.Refresh(false);
|
||||||
MenuManager::Get( project ).ModifyUndoMenuItems( project );
|
|
||||||
}
|
}
|
||||||
|
@ -252,8 +252,6 @@ void DoUndo(AudacityProject &project)
|
|||||||
ProjectHistory::Get( project ).PopState( state ); } );
|
ProjectHistory::Get( project ).PopState( state ); } );
|
||||||
|
|
||||||
trackPanel.EnsureVisible(trackPanel.GetFirstSelectedTrack());
|
trackPanel.EnsureVisible(trackPanel.GetFirstSelectedTrack());
|
||||||
|
|
||||||
MenuManager::ModifyUndoMenuItems(project);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Menu handler functions
|
// Menu handler functions
|
||||||
@ -286,8 +284,6 @@ void OnRedo(const CommandContext &context)
|
|||||||
ProjectHistory::Get( project ).PopState( state ); } );
|
ProjectHistory::Get( project ).PopState( state ); } );
|
||||||
|
|
||||||
trackPanel.EnsureVisible(trackPanel.GetFirstSelectedTrack());
|
trackPanel.EnsureVisible(trackPanel.GetFirstSelectedTrack());
|
||||||
|
|
||||||
MenuManager::ModifyUndoMenuItems(project);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnCut(const CommandContext &context)
|
void OnCut(const CommandContext &context)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user