From 0c7dd8223991465b442ce276887cf86b00dde31e Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Mon, 1 Dec 2014 17:36:17 +0100 Subject: [PATCH] exclude fader-reserve from range --- libs/gtkmm2ext/pixfader.cc | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/libs/gtkmm2ext/pixfader.cc b/libs/gtkmm2ext/pixfader.cc index 6c4e18429e..d46f1226b0 100644 --- a/libs/gtkmm2ext/pixfader.cc +++ b/libs/gtkmm2ext/pixfader.cc @@ -540,7 +540,9 @@ PixFader::on_motion_notify_event (GdkEventMotion* ev) double const delta = ev_pos - _grab_loc; _grab_loc = ev_pos; - double fract = (delta / _span); + const double off = FADER_RESERVE + ((_orien == VERT) ? CORNER_OFFSET : 0); + const double span = _span - off; + double fract = (delta / span); fract = min (1.0, fract); fract = max (-1.0, fract); @@ -572,9 +574,13 @@ PixFader::display_span () float fract = (_adjustment.get_value () - _adjustment.get_lower()) / ((_adjustment.get_upper() - _adjustment.get_lower())); int ds; if (_orien == VERT) { - ds = (int)rint (_span * (1.0 - fract)); + const double off = FADER_RESERVE + CORNER_OFFSET; + const double span = _span - off; + ds = (int)rint (span * (1.0 - fract)); } else { - ds = (int)rint (_span * fract); + const double off = FADER_RESERVE; + const double span = _span - off; + ds = (int)rint (span * fract + off); } return ds; @@ -584,9 +590,11 @@ void PixFader::update_unity_position () { if (_orien == VERT) { - _unity_loc = (int) rint (_span * (1 - ((_default_value - _adjustment.get_lower()) / (_adjustment.get_upper() - _adjustment.get_lower())))) - 1; + const double span = _span - FADER_RESERVE - CORNER_OFFSET; + _unity_loc = (int) rint (span * (1 - ((_default_value - _adjustment.get_lower()) / (_adjustment.get_upper() - _adjustment.get_lower())))) - 1; } else { - _unity_loc = (int) rint ((_default_value - _adjustment.get_lower()) * _span / (_adjustment.get_upper() - _adjustment.get_lower())); + const double span = _span - FADER_RESERVE; + _unity_loc = (int) rint (FADER_RESERVE + (_default_value - _adjustment.get_lower()) * span / (_adjustment.get_upper() - _adjustment.get_lower())); } queue_draw (); @@ -619,7 +627,9 @@ PixFader::on_leave_notify_event (GdkEventCrossing*) void PixFader::set_adjustment_from_event (GdkEventButton* ev) { - double fract = (_orien == VERT) ? (1.0 - (ev->y / _span)) : (ev->x / _span); + const double off = FADER_RESERVE + ((_orien == VERT) ? CORNER_OFFSET : 0); + const double span = _span - off; + double fract = (_orien == VERT) ? (1.0 - ((ev->y - off) / span)) : ((ev->x - off) / span); fract = min (1.0, fract); fract = max (0.0, fract); -- 2.30.2