summaryrefslogtreecommitdiff
path: root/gtk2_ardour/processor_box.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2014-12-01 00:33:11 +0100
committerRobin Gareus <robin@gareus.org>2014-12-01 00:33:11 +0100
commit52d97c8cfb7f55424e05dcb05ffa2c2f9b32a37a (patch)
tree28bfc1f6050c42ab1a76f0416c5049a696fc3e08 /gtk2_ardour/processor_box.cc
parent272c93db12b195c0f24a460171d39babda9b737f (diff)
update interface for processor-box faders step/page
see also 4d4c20b8c
Diffstat (limited to 'gtk2_ardour/processor_box.cc')
-rw-r--r--gtk2_ardour/processor_box.cc28
1 files changed, 22 insertions, 6 deletions
diff --git a/gtk2_ardour/processor_box.cc b/gtk2_ardour/processor_box.cc
index 6c6f62ed58..361945d5e0 100644
--- a/gtk2_ardour/processor_box.cc
+++ b/gtk2_ardour/processor_box.cc
@@ -521,14 +521,30 @@ ProcessorEntry::Control::Control (boost::shared_ptr<AutomationControl> c, string
box.add (_slider);
_slider.show ();
- double const lo = c->internal_to_interface(c->lower ());
- double const up = c->internal_to_interface(c->upper ());
-
+ const ARDOUR::ParameterDescriptor& desc = c->desc();
+ double const lo = c->internal_to_interface(desc.lower);
+ double const up = c->internal_to_interface(desc.upper);
+ double const normal = c->internal_to_interface(desc.normal);
+ double smallstep = desc.smallstep;
+ double largestep = desc.largestep;
+
+ if (smallstep == 0.0) {
+ smallstep = up / 1000.;
+ } else {
+ smallstep = c->internal_to_interface(desc.lower + smallstep);
+ }
+
+ if (largestep == 0.0) {
+ largestep = up / 40.;
+ } else {
+ largestep = c->internal_to_interface(desc.lower + largestep);
+ }
+
_adjustment.set_lower (lo);
_adjustment.set_upper (up);
- _adjustment.set_step_increment ((up - lo) / 100);
- _adjustment.set_page_increment ((up - lo) / 10);
- _slider.set_default_value (c->internal_to_interface(c->normal ()));
+ _adjustment.set_step_increment (smallstep);
+ _adjustment.set_page_increment (largestep);
+ _slider.set_default_value (normal);
_adjustment.signal_value_changed().connect (sigc::mem_fun (*this, &Control::slider_adjusted));
c->Changed.connect (_connection, MISSING_INVALIDATOR, boost::bind (&Control::control_changed, this), gui_context ());