diff --git a/src/TrackArtist.cpp b/src/TrackArtist.cpp index 952e1bdd0..355466b27 100644 --- a/src/TrackArtist.cpp +++ b/src/TrackArtist.cpp @@ -703,10 +703,11 @@ void TrackArtist::UpdateVRuler(Track *t, wxRect & rect) float min, max; wt->GetDisplayBounds(&min, &max); - if (wt->GetLastScaleType() != scaleType) + if (wt->GetLastScaleType() != scaleType && + wt->GetLastScaleType() != -1) { // do a translation into the linear space - wt->SetLastScaleType(scaleType); + wt->SetLastScaleType(); float sign = (min >= 0 ? 1 : -1); if (min != 0.) { min = DB_TO_LINEAR(fabs(min) * dBRange - dBRange); @@ -742,10 +743,11 @@ void TrackArtist::UpdateVRuler(Track *t, wxRect & rect) float min, max; wt->GetDisplayBounds(&min, &max); - if (wt->GetLastScaleType() != scaleType) + if (wt->GetLastScaleType() != scaleType && + wt->GetLastScaleType() != -1) { // do a translation into the dB space - wt->SetLastScaleType(scaleType); + wt->SetLastScaleType(); float sign = (min >= 0 ? 1 : -1); if (min != 0.) { min = (LINEAR_TO_DB(fabs(min)) + dBRange) / dBRange; diff --git a/src/TrackPanel.cpp b/src/TrackPanel.cpp index 9d83e18bf..c9cf4f8f6 100644 --- a/src/TrackPanel.cpp +++ b/src/TrackPanel.cpp @@ -9375,6 +9375,7 @@ void TrackPanel::OnSetDisplay(wxCommandEvent & event) (id == WaveTrack::Waveform && wt->GetWaveformSettings().isLinear() != linear); if (wrongType || wrongScale) { + wt->SetLastScaleType(); wt->SetDisplay(WaveTrack::WaveTrackDisplay(id)); if (wrongScale) wt->GetIndependentWaveformSettings().scaleType = linear @@ -9383,6 +9384,7 @@ void TrackPanel::OnSetDisplay(wxCommandEvent & event) WaveTrack *l = static_cast(wt->GetLink()); if (l) { + l->SetLastScaleType(); l->SetDisplay(WaveTrack::WaveTrackDisplay(id)); if (wrongScale) l->GetIndependentWaveformSettings().scaleType = linear diff --git a/src/WaveTrack.cpp b/src/WaveTrack.cpp index 07da0ebe8..9daee4877 100644 --- a/src/WaveTrack.cpp +++ b/src/WaveTrack.cpp @@ -283,6 +283,11 @@ WaveTrack::ValidateWaveTrackDisplay(WaveTrackDisplay display) } } +void WaveTrack::SetLastScaleType() +{ + mLastScaleType = GetWaveformSettings().scaleType; +} + void WaveTrack::GetDisplayBounds(float *min, float *max) { *min = mDisplayMin; diff --git a/src/WaveTrack.h b/src/WaveTrack.h index 68d259a87..c21d7399e 100644 --- a/src/WaveTrack.h +++ b/src/WaveTrack.h @@ -433,11 +433,7 @@ class AUDACITY_DLL_API WaveTrack : public Track { static WaveTrackDisplay ValidateWaveTrackDisplay(WaveTrackDisplay display); int GetLastScaleType() { return mLastScaleType; } - void SetLastScaleType(int scaleType) - { - // remember last display mode for wave and wavedb so vertical ruler can remap - mLastScaleType = scaleType; - } + void SetLastScaleType(); WaveTrackDisplay GetDisplay() const { return mDisplay; } void SetDisplay(WaveTrackDisplay display) { mDisplay = display; }