diff --git a/src/Menus.cpp b/src/Menus.cpp index 9677b6bfe..2edaa351e 100644 --- a/src/Menus.cpp +++ b/src/Menus.cpp @@ -4955,7 +4955,7 @@ void AudacityProject::OnZoomNormal() void AudacityProject::OnZoomFit() { const double end = mTracks->GetEndTime(); - const double start = mScrollBeyondZero + const double start = mViewInfo.bScrollBeyondZero ? std::min(mTracks->GetStartTime(), 0.0) : 0; const double len = end - start; diff --git a/src/Project.cpp b/src/Project.cpp index 414357795..02492b7ca 100644 --- a/src/Project.cpp +++ b/src/Project.cpp @@ -780,7 +780,6 @@ AudacityProject::AudacityProject(wxWindow * parent, wxWindowID id, mIsDeleting(false), mTracksFitVerticallyZoomed(false), //lda mShowId3Dialog(true), //lda - mScrollBeyondZero(false), mLastFocusedWindow(NULL), mKeyboardCaptureHandler(NULL), mImportXMLTagHandler(NULL), @@ -1052,9 +1051,6 @@ AudioIOStartStreamOptions AudacityProject::GetDefaultPlayOptions() void AudacityProject::UpdatePrefsVariables() { -#ifdef EXPERIMENTAL_SCROLLING_LIMITS - gPrefs->Read(wxT("/GUI/ScrollBeyondZero"), &mScrollBeyondZero, false); -#endif gPrefs->Read(wxT("/AudioFiles/ShowId3Dialog"), &mShowId3Dialog, true); gPrefs->Read(wxT("/AudioFiles/NormalizeOnLoad"),&mNormalizeOnLoad, false); gPrefs->Read(wxT("/GUI/AutoScroll"), &mViewInfo.bUpdateTrackIndicator, true); @@ -1474,7 +1470,7 @@ void AudacityProject::OnScrollRightButton(wxScrollEvent & event) double AudacityProject::ScrollingLowerBoundTime() const { - if (!mScrollBeyondZero) + if (!mViewInfo.bScrollBeyondZero) return 0; const double screen = mTrackPanel->GetScreenEndTime() - mViewInfo.h; return std::min(mTracks->GetStartTime(), -screen / 2.0); @@ -1583,7 +1579,7 @@ void AudacityProject::FixScrollbars() // may be scrolled to the midline. // May add even more to the end, so that you can always scroll the starting time to zero. const double lowerBound = ScrollingLowerBoundTime(); - const double additional = mScrollBeyondZero + const double additional = mViewInfo.bScrollBeyondZero ? -lowerBound + std::max(halfScreen, screen - LastTime) : screen / 4.0; @@ -1921,7 +1917,7 @@ void AudacityProject::OnScroll(wxScrollEvent & WXUNUSED(event)) } - if (mScrollBeyondZero) { + if (mViewInfo.bScrollBeyondZero) { enum { SCROLL_PIXEL_TOLERANCE = 10 }; if (std::abs(mViewInfo.TimeToPosition(0.0, 0 )) < SCROLL_PIXEL_TOLERANCE) { diff --git a/src/Project.h b/src/Project.h index 879173fb2..f945fba41 100644 --- a/src/Project.h +++ b/src/Project.h @@ -606,8 +606,6 @@ class AUDACITY_DLL_API AudacityProject: public wxFrame, bool mShowId3Dialog; //lda bool mEmptyCanBeDirty; - bool mScrollBeyondZero; - bool mSelectAllOnNone; bool mIsSyncLocked; diff --git a/src/TrackPanel.cpp b/src/TrackPanel.cpp index 3a55831ef..d1c9d172c 100644 --- a/src/TrackPanel.cpp +++ b/src/TrackPanel.cpp @@ -888,9 +888,6 @@ void TrackPanel::UpdateVirtualStereoOrder() void TrackPanel::UpdatePrefs() { -#ifdef EXPERIMENTAL_SCROLLING_LIMITS - gPrefs->Read(wxT("/GUI/ScrollBeyondZero"), &mScrollBeyondZero, false); -#endif gPrefs->Read(wxT("/GUI/AutoScroll"), &mViewInfo->bUpdateTrackIndicator, true); gPrefs->Read(wxT("/GUI/AdjustSelectionEdges"), &mAdjustSelectionEdges, @@ -7527,7 +7524,7 @@ void TrackPanel::TimerUpdateScrubbing(double playPos) const int deltaX = posX - width / 2; mViewInfo->h = mViewInfo->OffsetTimeByPixels(mViewInfo->h, deltaX, true); - if (!mScrollBeyondZero) + if (!mViewInfo->bScrollBeyondZero) // Can't scroll too far left mViewInfo->h = std::max(0.0, mViewInfo->h); Refresh(false); diff --git a/src/TrackPanel.h b/src/TrackPanel.h index df35dadff..8c68bdc76 100644 --- a/src/TrackPanel.h +++ b/src/TrackPanel.h @@ -808,7 +808,6 @@ protected: enum MouseCaptureEnum mMouseCapture; virtual void SetCapturedTrack( Track * t, enum MouseCaptureEnum MouseCapture=IsUncaptured ); - bool mScrollBeyondZero; bool mAdjustSelectionEdges; bool mSlideUpDownOnly; bool mCircularTrackNavigation; diff --git a/src/ViewInfo.cpp b/src/ViewInfo.cpp index c707d80af..6f659563b 100644 --- a/src/ViewInfo.cpp +++ b/src/ViewInfo.cpp @@ -9,6 +9,7 @@ Paul Licameli **********************************************************************/ #include "ViewInfo.h" +#include "Experimental.h" #include @@ -110,7 +111,18 @@ ViewInfo::ViewInfo(double start, double screenDuration, double pixelsPerSecond) , sbarScale(1.0) , scrollStep(16) , bUpdateTrackIndicator(true) + , bScrollBeyondZero(false) { + UpdatePrefs(); +} + +void ViewInfo::UpdatePrefs() +{ + ZoomInfo::UpdatePrefs(); +#ifdef EXPERIMENTAL_SCROLLING_LIMITS + gPrefs->Read(wxT("/GUI/ScrollBeyondZero"), &bScrollBeyondZero, false); +#endif + } void ViewInfo::SetBeforeScreenWidth(wxInt64 beforeWidth, wxInt64 screenWidth, double lowerBoundTime) diff --git a/src/ViewInfo.h b/src/ViewInfo.h index b8149ab76..2c8d82943 100644 --- a/src/ViewInfo.h +++ b/src/ViewInfo.h @@ -130,6 +130,8 @@ class AUDACITY_DLL_API ViewInfo public: ViewInfo(double start, double screenDuration, double pixelsPerSecond); + void UpdatePrefs(); + double GetBeforeScreenWidth() const { return h * zoom; @@ -167,6 +169,8 @@ public: bool bUpdateTrackIndicator; + bool bScrollBeyondZero; + void WriteXMLAttributes(XMLWriter &xmlFile); bool ReadXMLAttribute(const wxChar *attr, const wxChar *value); };