1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-11-21 08:27:13 +01:00

Bug1119: Windows menu on Mac should list all project names...

... Reimplemented without making dependency cycles.

Project and ProjectFileManager publish events for change of active project or
change of a project title.

WindowMenus.cpp can listen for those events, so that it can update the menu
appropriately.  So it's all done nonintrusively in the rest of the code.
This commit is contained in:
Paul Licameli
2020-04-21 13:07:01 -04:00
parent 78c2c09ba2
commit 2e3c072fd5
8 changed files with 106 additions and 154 deletions

View File

@@ -109,10 +109,6 @@ It handles initialization and termination by subclassing wxApp.
#include "tracks/ui/Scrubbing.h"
#include "widgets/FileHistory.h"
#if defined(__WXMAC__)
#include "menus/WindowMenus.h"
#endif
#ifdef EXPERIMENTAL_EASY_CHANGE_KEY_BINDINGS
#include "prefs/KeyConfigPrefs.h"
#endif
@@ -889,11 +885,6 @@ BEGIN_EVENT_TABLE(AudacityApp, wxApp)
EVT_MENU_RANGE(FileHistory::ID_RECENT_FIRST, FileHistory::ID_RECENT_LAST,
AudacityApp::OnMRUFile)
#if defined(__WXMAC__)
// Window menu event handlers.
EVT_MENU_RANGE(WindowActions::ID_BASE, WindowActions::ID_LAST, AudacityApp::OnWindow)
#endif
// Handle AppCommandEvents (usually from a script)
EVT_APP_COMMAND(wxID_ANY, AudacityApp::OnReceiveCommand)
@@ -987,35 +978,6 @@ void AudacityApp::OnMRUFile(wxCommandEvent& event) {
history.RemoveFileFromHistory(n);
}
#if defined(__WXMAC__)
// Handles switching projects when an item in the Window menu is selected
void AudacityApp::OnWindow(wxCommandEvent& event)
{
// Get the project's number
int projectNumber = event.GetId() - WindowActions::ID_BASE;
// Search for it
for (auto project : AllProjects{})
{
if (project->GetProjectNumber() == projectNumber)
{
// Make it the active project
SetActiveProject(project.get());
// And ensure it's visible
wxFrame *frame = project->GetFrame();
if (frame->IsIconized())
{
frame->Restore();
}
frame->Raise();
break;
}
}
}
#endif
void AudacityApp::OnTimer(wxTimerEvent& WXUNUSED(event))
{
// Filenames are queued when Audacity receives a few of the