From 8b549ea07ff57b9b60c76d42f5079e5ef6492d31 Mon Sep 17 00:00:00 2001 From: Paul Licameli Date: Thu, 27 Jun 2019 23:01:53 -0400 Subject: [PATCH] Another overload of ControlToolBar::OnRecord taking bool... ... so that it's called directly where needed without the roundabout of SetInt in an event, and there is no checking of the state of a button first --- src/ProjectAudioManager.cpp | 5 +---- src/menus/TransportMenus.cpp | 5 +---- src/toolbars/ControlToolBar.cpp | 15 ++++++++------- src/toolbars/ControlToolBar.h | 1 + 4 files changed, 11 insertions(+), 15 deletions(-) diff --git a/src/ProjectAudioManager.cpp b/src/ProjectAudioManager.cpp index 346642f2e..f96bdfe91 100644 --- a/src/ProjectAudioManager.cpp +++ b/src/ProjectAudioManager.cpp @@ -330,11 +330,8 @@ void DoPause( AudacityProject &project ) void DoRecord( AudacityProject &project ) { - wxCommandEvent evt; - evt.SetInt(2); // 0 is default, use 1 to set shift on, 2 to clear it - auto &controlToolBar = ControlToolBar::Get( project ); - controlToolBar.OnRecord(evt); + controlToolBar.OnRecord(false); } void DoLockPlayRegion( AudacityProject &project ) diff --git a/src/menus/TransportMenus.cpp b/src/menus/TransportMenus.cpp index 2164f588f..adaff0849 100644 --- a/src/menus/TransportMenus.cpp +++ b/src/menus/TransportMenus.cpp @@ -247,11 +247,8 @@ void OnRecord(const CommandContext &context) void OnRecord2ndChoice(const CommandContext &context) { auto &project = context.project; - wxCommandEvent evt; - evt.SetInt(1); // 0 is default, use 1 to set shift on, 2 to clear it - auto &controlToolBar = ControlToolBar::Get( project ); - controlToolBar.OnRecord(evt); + controlToolBar.OnRecord(true); } void OnTimerRecord(const CommandContext &context) diff --git a/src/toolbars/ControlToolBar.cpp b/src/toolbars/ControlToolBar.cpp index d8861cb72..d2e2e636f 100644 --- a/src/toolbars/ControlToolBar.cpp +++ b/src/toolbars/ControlToolBar.cpp @@ -985,19 +985,20 @@ void ControlToolBar::OnRecord(wxCommandEvent &evt) // Here instead we reduplicate some logic (from CommandHandler) because it isn't // normally used for buttons. - // Code from CommandHandler start... - AudacityProject *p = &mProject; - bool altAppearance = mRecord->WasShiftDown(); - if (evt.GetInt() == 1) // used when called by keyboard shortcut. Default (0) ignored. - altAppearance = true; - if (evt.GetInt() == 2) - altAppearance = false; + OnRecord( altAppearance ); +} +void ControlToolBar::OnRecord(bool altAppearance) +// STRONG-GUARANTEE (for state of current project's tracks) +{ bool bPreferNewTrack; gPrefs->Read("/GUI/PreferNewTrackRecord", &bPreferNewTrack, false); const bool appendRecord = (altAppearance == bPreferNewTrack); + // Code from CommandHandler start... + AudacityProject *p = &mProject; + if (p) { const auto &selectedRegion = ViewInfo::Get( *p ).selectedRegion; double t0 = selectedRegion.t0(); diff --git a/src/toolbars/ControlToolBar.h b/src/toolbars/ControlToolBar.h index 47a4df78f..015e7400b 100644 --- a/src/toolbars/ControlToolBar.h +++ b/src/toolbars/ControlToolBar.h @@ -77,6 +77,7 @@ class ControlToolBar final : public ToolBar { void OnPlay(wxCommandEvent & evt); void OnStop(wxCommandEvent & evt); void OnRecord(wxCommandEvent & evt); + void OnRecord(bool altAppearance); bool DoRecord(AudacityProject &project, const TransportTracks &transportTracks, // If captureTracks is empty, then tracks are created double t0, double t1,