From cf46b447d00bef8e0a3b635ebb804a9209a6baa4 Mon Sep 17 00:00:00 2001 From: Jonathan Moore Liles Date: Sat, 28 Sep 2013 17:10:15 -0700 Subject: [PATCH] Mixer: Make slider value drag sensitivity the same regardless of range. --- FL/Fl_Value_SliderX.C | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/FL/Fl_Value_SliderX.C b/FL/Fl_Value_SliderX.C index b605599..0e8821f 100644 --- a/FL/Fl_Value_SliderX.C +++ b/FL/Fl_Value_SliderX.C @@ -151,6 +151,7 @@ int Fl_Value_SliderX::handle(int event) { goto DEFAULT; break; case FL_DRAG: + { if ( ! drag ) goto DEFAULT; @@ -165,19 +166,20 @@ int Fl_Value_SliderX::handle(int event) { else if (delta < -5) delta += 5; else delta = 0; + float S = fabs( maximum() - minimum() ); + switch (drag) { - case 3: v = increment(previous_value(), delta*100); break; - case 2: v = increment(previous_value(), delta*10); break; - default:v = increment(previous_value(), delta); break; + case 3: v = previous_value() + ( S * delta * 0.0100f); break; + case 2: v = previous_value() + ( S * delta * 0.0010f); break; + default:v = previous_value() + ( S * delta * 0.0005f); break; } - -// v = previous_value() + delta * ( fabs( maximum() - minimum() ) * 0.001 ); v = round(v); v = soft()?softclamp(v):clamp(v); handle_drag(v); value_damage(); return 1; + } case FL_RELEASE: if ( ! drag )