diff --git a/src/Menus.cpp b/src/Menus.cpp index 62547990a..5c4166714 100644 --- a/src/Menus.cpp +++ b/src/Menus.cpp @@ -76,6 +76,7 @@ MenuManager::MenuManager( AudacityProject &project ) 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 ); + mProject.Bind( EVT_UNDO_RENAMED, &MenuManager::OnUndoRedo, this ); } MenuManager::~MenuManager() diff --git a/src/UndoManager.cpp b/src/UndoManager.cpp index 5d17ccae6..a5cc5abf6 100644 --- a/src/UndoManager.cpp +++ b/src/UndoManager.cpp @@ -42,6 +42,7 @@ UndoManager wxDEFINE_EVENT(EVT_UNDO_PUSHED, wxCommandEvent); wxDEFINE_EVENT(EVT_UNDO_MODIFIED, wxCommandEvent); +wxDEFINE_EVENT(EVT_UNDO_RENAMED, wxCommandEvent); wxDEFINE_EVENT(EVT_UNDO_OR_REDO, wxCommandEvent); wxDEFINE_EVENT(EVT_UNDO_RESET, wxCommandEvent); wxDEFINE_EVENT(EVT_UNDO_PURGE, wxCommandEvent); @@ -316,6 +317,9 @@ void UndoManager::RenameState( int state, auto &theState = *stack[state]; theState.description = longDescription; theState.shortDescription = shortDescription; + + // wxWidgets will own the event object + mProject.QueueEvent( safenew wxCommandEvent{ EVT_UNDO_RENAMED } ); } } diff --git a/src/UndoManager.h b/src/UndoManager.h index f6eae46fb..c4c0ab529 100644 --- a/src/UndoManager.h +++ b/src/UndoManager.h @@ -63,6 +63,9 @@ wxDECLARE_EXPORTED_EVENT(AUDACITY_DLL_API, EVT_UNDO_PUSHED, wxCommandEvent); // Project state did not change, but current state was modified in Undo history wxDECLARE_EXPORTED_EVENT(AUDACITY_DLL_API, EVT_UNDO_MODIFIED, wxCommandEvent); +// Project state did not change, but current state was renamed in Undo history +wxDECLARE_EXPORTED_EVENT(AUDACITY_DLL_API, EVT_UNDO_RENAMED, wxCommandEvent); + // Project state changed because of undo or redo; undo manager // contents did not change other than the pointer to current state wxDECLARE_EXPORTED_EVENT(AUDACITY_DLL_API, EVT_UNDO_OR_REDO, wxCommandEvent);