diff --git a/src/Menus.cpp b/src/Menus.cpp index 8b87732e0..08a772991 100644 --- a/src/Menus.cpp +++ b/src/Menus.cpp @@ -1882,7 +1882,7 @@ void AudacityProject::ModifyToolbarMenus() mCommandManager.Check(wxT("AutomatedInputLevelAdjustmentOnOff"), active); #endif - active = PlaybackPrefs::GetPinnedHeadPreference(); + active = TracksPrefs::GetPinnedHeadPreference(); mCommandManager.Check(wxT("PinnedHead"), active); gPrefs->Read(wxT("/AudioIO/Duplex"),&active, true); @@ -2411,8 +2411,8 @@ void AudacityProject::OnToggleSoundActivated() void AudacityProject::OnTogglePinnedHead() { - bool value = !PlaybackPrefs::GetPinnedHeadPreference(); - PlaybackPrefs::SetPinnedHeadPreference(value, true); + bool value = !TracksPrefs::GetPinnedHeadPreference(); + TracksPrefs::SetPinnedHeadPreference(value, true); ModifyAllProjectToolbarMenus(); // Change what happens in case transport is in progress right now diff --git a/src/prefs/PlaybackPrefs.cpp b/src/prefs/PlaybackPrefs.cpp index f9436a468..b84942c10 100644 --- a/src/prefs/PlaybackPrefs.cpp +++ b/src/prefs/PlaybackPrefs.cpp @@ -27,18 +27,6 @@ #include "../ShuttleGui.h" #include "../Prefs.h" -namespace { - const wxChar *PinnedHeadPreferenceKey() - { - return wxT("/AudioIO/PinnedHead"); - } - - bool PinnedHeadPreferenceDefault() - { - return false; - } -} - PlaybackPrefs::PlaybackPrefs(wxWindow * parent) : PrefsPanel(parent, _("Playback")) { @@ -125,11 +113,6 @@ void PlaybackPrefs::PopulateOrExchange(ShuttleGui & S) S.EndThreeColumn(); } S.EndStatic(); - - // This affects recording too, though it is in playback preferences. - S.TieCheckBox(_("Pinned playback/recording head"), - PinnedHeadPreferenceKey(), - PinnedHeadPreferenceDefault()); } bool PlaybackPrefs::Apply() @@ -140,18 +123,6 @@ bool PlaybackPrefs::Apply() return true; } -bool PlaybackPrefs::GetPinnedHeadPreference() -{ - return gPrefs->ReadBool(PinnedHeadPreferenceKey(), PinnedHeadPreferenceDefault()); -} - -void PlaybackPrefs::SetPinnedHeadPreference(bool value, bool flush) -{ - gPrefs->Write(PinnedHeadPreferenceKey(), value); - if(flush) - gPrefs->Flush(); -} - PrefsPanel *PlaybackPrefsFactory::Create(wxWindow *parent) { wxASSERT(parent); // to justify safenew diff --git a/src/prefs/PlaybackPrefs.h b/src/prefs/PlaybackPrefs.h index 43f176b47..0385498d6 100644 --- a/src/prefs/PlaybackPrefs.h +++ b/src/prefs/PlaybackPrefs.h @@ -27,9 +27,6 @@ class PlaybackPrefs final : public PrefsPanel virtual ~PlaybackPrefs(); bool Apply() override; - static bool GetPinnedHeadPreference(); - static void SetPinnedHeadPreference(bool value, bool flush = false); - private: void Populate(); void PopulateOrExchange(ShuttleGui & S); diff --git a/src/prefs/TracksPrefs.cpp b/src/prefs/TracksPrefs.cpp index 990720139..a31324248 100644 --- a/src/prefs/TracksPrefs.cpp +++ b/src/prefs/TracksPrefs.cpp @@ -30,6 +30,20 @@ #include "../Experimental.h" + +namespace { + const wxChar *PinnedHeadPreferenceKey() + { + return wxT("/AudioIO/PinnedHead"); + } + + bool PinnedHeadPreferenceDefault() + { + return false; + } +} + + TracksPrefs::TracksPrefs(wxWindow * parent) : PrefsPanel(parent, _("Tracks")) { @@ -89,9 +103,13 @@ void TracksPrefs::PopulateOrExchange(ShuttleGui & S) S.StartStatic(_("Display")); { - S.TieCheckBox(_("&Update display while playing"), + S.TieCheckBox(_("&Update display while when Recording/Playback head unpinned"), wxT("/GUI/AutoScroll"), true); + + S.TieCheckBox(_("Pinned Recording/Playback head"), + PinnedHeadPreferenceKey(), + PinnedHeadPreferenceDefault()); S.TieCheckBox(_("Automatically &fit tracks vertically zoomed"), wxT("/GUI/TracksFitVerticallyZoomed"), false); @@ -160,6 +178,19 @@ void TracksPrefs::PopulateOrExchange(ShuttleGui & S) S.EndStatic(); } +bool TracksPrefs::GetPinnedHeadPreference() +{ + return gPrefs->ReadBool(PinnedHeadPreferenceKey(), PinnedHeadPreferenceDefault()); +} + +void TracksPrefs::SetPinnedHeadPreference(bool value, bool flush) +{ + gPrefs->Write(PinnedHeadPreferenceKey(), value); + if(flush) + gPrefs->Flush(); +} + + bool TracksPrefs::Apply() { ShuttleGui S(this, eIsSavingToPrefs); diff --git a/src/prefs/TracksPrefs.h b/src/prefs/TracksPrefs.h index b8df5001f..fa08863a6 100644 --- a/src/prefs/TracksPrefs.h +++ b/src/prefs/TracksPrefs.h @@ -29,6 +29,8 @@ class TracksPrefs final : public PrefsPanel ~TracksPrefs(); bool Apply() override; + static bool GetPinnedHeadPreference(); + static void SetPinnedHeadPreference(bool value, bool flush = false); static const wxChar *ScrollingPreferenceKey(); static inline bool ScrollingPreferenceDefault() { return false; } diff --git a/src/toolbars/ControlToolBar.cpp b/src/toolbars/ControlToolBar.cpp index feecd37e8..9d072b52a 100644 --- a/src/toolbars/ControlToolBar.cpp +++ b/src/toolbars/ControlToolBar.cpp @@ -68,7 +68,7 @@ #include "../widgets/Meter.h" #include "../tracks/ui/Scrubbing.h" -#include "../prefs/PlaybackPrefs.h" +#include "../prefs/TracksPrefs.h" #include "../toolbars/ToolManager.h" IMPLEMENT_CLASS(ControlToolBar, ToolBar); @@ -1260,7 +1260,7 @@ void ControlToolBar::UpdateStatusBar(AudacityProject *pProject) void ControlToolBar::StartScrollingIfPreferred() { - if (PlaybackPrefs::GetPinnedHeadPreference()) + if (TracksPrefs::GetPinnedHeadPreference()) StartScrolling(); #ifdef __WXMAC__ else if (::GetActiveProject()->GetScrubber().HasStartedScrubbing()) { diff --git a/src/tracks/ui/Scrubbing.cpp b/src/tracks/ui/Scrubbing.cpp index eef333b2a..769c1fb39 100644 --- a/src/tracks/ui/Scrubbing.cpp +++ b/src/tracks/ui/Scrubbing.cpp @@ -19,7 +19,7 @@ Paul Licameli split from TrackPanel.cpp #include "../../TrackPanelCell.h" #include "../../TrackPanelCellIterator.h" #include "../../commands/CommandFunctors.h" -#include "../../prefs/PlaybackPrefs.h" +#include "../../prefs/TracksPrefs.h" #include "../../toolbars/ControlToolBar.h" #include "../../toolbars/ScrubbingToolBar.h" #include "../../toolbars/ToolManager.h" @@ -852,7 +852,7 @@ Scrubber &ScrubbingOverlay::GetScrubber() void Scrubber::DoScrub(bool seek) { const bool wasScrubbing = HasStartedScrubbing() || IsScrubbing(); - const bool scroll = PlaybackPrefs::GetPinnedHeadPreference(); + const bool scroll = TracksPrefs::GetPinnedHeadPreference(); if (!wasScrubbing) { auto tp = mProject->GetTrackPanel(); wxCoord xx = tp->ScreenToClient(::wxGetMouseState().GetPosition()).x; diff --git a/src/widgets/Ruler.cpp b/src/widgets/Ruler.cpp index 72607960b..9672f95e2 100644 --- a/src/widgets/Ruler.cpp +++ b/src/widgets/Ruler.cpp @@ -2429,7 +2429,7 @@ void AdornedRulerPanel::OnMouseEvents(wxMouseEvent &evt) else if (!HasCapture() && inScrubZone) { if (evt.LeftDown()) { scrubber.MarkScrubStart(evt.m_x, - PlaybackPrefs::GetPinnedHeadPreference(), false); + TracksPrefs::GetPinnedHeadPreference(), false); UpdateStatusBarAndTooltips(StatusChoice::EnteringScrubZone); } ShowQuickPlayIndicator(); @@ -2785,7 +2785,7 @@ void AdornedRulerPanel::UpdateButtonStates() }; { - bool state = PlaybackPrefs::GetPinnedHeadPreference(); + bool state = TracksPrefs::GetPinnedHeadPreference(); auto pinButton = static_cast(FindWindow(OnTogglePinnedStateID)); pinButton->PopUp(); pinButton->SetAlternateIdx(state ? 0 : 1);