diff options
author | Robin Gareus <robin@gareus.org> | 2019-10-07 05:11:33 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2019-10-07 05:11:33 +0200 |
commit | 647103c8250d06b37adbd2d7a5256a229c50faea (patch) | |
tree | b8df674ae23c13fe2cab02fc2cd1cc3eae5c9033 /gtk2_ardour | |
parent | c663a2d8ef6669054eac817c86d70552580f2138 (diff) |
Special case horizontal faders (pan to right)
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/automation_controller.cc | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/gtk2_ardour/automation_controller.cc b/gtk2_ardour/automation_controller.cc index a073c1bad9..63c6973922 100644 --- a/gtk2_ardour/automation_controller.cc +++ b/gtk2_ardour/automation_controller.cc @@ -146,14 +146,17 @@ AutomationController::create(const Evoral::Parameter& param, boost::shared_ptr<AutomationControl> ac, bool use_knob) { - const double lo = ac->internal_to_interface(desc.lower); - const double up = ac->internal_to_interface(desc.upper); - const double normal = ac->internal_to_interface(desc.normal); - const double smallstep = ac->internal_to_interface(desc.lower + desc.smallstep) - lo; - const double largestep = ac->internal_to_interface(desc.lower + desc.largestep) - lo; + const double lo = ac->internal_to_interface(desc.lower, true); + const double up = ac->internal_to_interface(desc.upper, true); + const double normal = ac->internal_to_interface(desc.normal, true); + const double smallstep = fabs (ac->internal_to_interface(desc.lower + desc.smallstep, true) - lo); + const double largestep = fabs (ac->internal_to_interface(desc.lower + desc.largestep, true) - lo); + + assert (std::min(lo, up) == 0); + assert (std::max(lo, up) == 1.0); Gtk::Adjustment* adjustment = manage ( - new Gtk::Adjustment (normal, lo, up, smallstep, largestep)); + new Gtk::Adjustment (normal, std::min(lo, up), std::max(lo, up), smallstep, largestep)); assert (ac); assert(ac->parameter() == param); @@ -170,7 +173,7 @@ AutomationController::automation_state_changed () void AutomationController::display_effective_value () { - double const interface_value = _controllable->internal_to_interface(_controllable->get_value()); + double const interface_value = _controllable->internal_to_interface(_controllable->get_value(), true); if (_grabbed) { /* we cannot use _controllable->touching() here @@ -191,7 +194,7 @@ void AutomationController::value_adjusted () { if (!_ignore_change) { - const double new_val = _controllable->interface_to_internal(_adjustment->get_value()); + const double new_val = _controllable->interface_to_internal(_adjustment->get_value(), true); if (_controllable->user_double() != new_val) { _controllable->set_value (new_val, Controllable::NoGroup); } |