From ec723466ba5129a336503f5100ecf900491c2d4a Mon Sep 17 00:00:00 2001 From: Paul Licameli Date: Wed, 22 Jan 2020 13:30:25 -0500 Subject: [PATCH] Invalidate Ruler, whenever anything the Updater uses is reassigned --- src/widgets/Ruler.cpp | 31 +++++++++++++++++++++++-------- src/widgets/Ruler.h | 2 +- 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/src/widgets/Ruler.cpp b/src/widgets/Ruler.cpp index db9146184..0b751280b 100644 --- a/src/widgets/Ruler.cpp +++ b/src/widgets/Ruler.cpp @@ -172,6 +172,15 @@ void Ruler::SetUnits(const TranslatableString &units) } } +void Ruler::SetDbMirrorValue( const double d ) +{ + if (mDbMirrorValue != d) { + mDbMirrorValue = d; + + Invalidate(); + } +} + void Ruler::SetOrientation(int orient) { // wxHORIZONTAL || wxVERTICAL @@ -303,14 +312,18 @@ void Ruler::SetNumberScale(const NumberScale *pScale) void Ruler::OfflimitsPixels(int start, int end) { - if ( mUserBits.empty() ) { - if (mOrientation == wxHORIZONTAL) - mLength = mRight-mLeft; - else - mLength = mBottom-mTop; - if( mLength < 0 ) - return; - mUserBits.resize( static_cast( mLength + 1 ), false ); + int length = mLength; + if (mOrientation == wxHORIZONTAL) + length = mRight - mLeft; + else + length = mBottom - mTop; + if( length < 0 ) + return; + + auto size = static_cast( length + 1 ); + if ( mUserBits.size() < size ) { + mLength = length; + mUserBits.resize( size, false ); } if (end < start) @@ -323,6 +336,8 @@ void Ruler::OfflimitsPixels(int start, int end) for(int i = start; i <= end; i++) mUserBits[i] = true; + + Invalidate(); } void Ruler::SetBounds(int left, int top, int right, int bottom) diff --git a/src/widgets/Ruler.h b/src/widgets/Ruler.h index 3a0d17fb0..356465856 100644 --- a/src/widgets/Ruler.h +++ b/src/widgets/Ruler.h @@ -76,7 +76,7 @@ class AUDACITY_DLL_API Ruler { // Specify the name of the units (like "dB") if you // want numbers like "1.6" formatted as "1.6 dB". void SetUnits(const TranslatableString &units); - void SetDbMirrorValue( const double d ){ mDbMirrorValue = d ; }; + void SetDbMirrorValue( const double d ); // Logarithmic void SetLog(bool log);