X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fautomation_controller.cc;h=6acf37f953c63485490a46a82c6819bb5f7039d0;hb=5fef65538040fbac1b9edd1847a269aa925a49c9;hp=a7922d2f00302413e6691b4c93d4743aadfd941d;hpb=4d4c20b8ccbe9638e9288abdadf66a6f7840b391;p=ardour.git diff --git a/gtk2_ardour/automation_controller.cc b/gtk2_ardour/automation_controller.cc index a7922d2f00..6acf37f953 100644 --- a/gtk2_ardour/automation_controller.cc +++ b/gtk2_ardour/automation_controller.cc @@ -126,19 +126,8 @@ AutomationController::create(boost::shared_ptr printer, 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); - double smallstep = desc.smallstep; - double largestep = desc.largestep; - if (smallstep == 0.0) { - smallstep = up / 1000.; - } else { - smallstep = ac->internal_to_interface(desc.lower + smallstep); - } - - if (largestep == 0.0) { - largestep = up / 40.; - } else { - largestep = ac->internal_to_interface(desc.lower + largestep); - } + const double smallstep = ac->internal_to_interface(desc.lower + desc.smallstep); + const double largestep = ac->internal_to_interface(desc.lower + desc.largestep); Gtk::Adjustment* adjustment = manage ( new Gtk::Adjustment (normal, lo, up, smallstep, largestep)); @@ -208,16 +197,22 @@ AutomationController::toggled () { ArdourButton* but = dynamic_cast(_widget); if (but) { - start_touch(); + if (_controllable->session().transport_rolling()) { + if (_controllable->automation_state() == Touch) { + _controllable->set_automation_state(Write); + } + if (_controllable->list()) { + _controllable->list()->set_in_write_pass(true, false, _controllable->session().audible_frame()); + } + } const bool was_active = _controllable->get_value() >= 0.5; - if (was_active) { + if (was_active && but->get_active()) { _adjustment->set_value(0.0); but->set_active(false); - } else { + } else if (!was_active && !but->get_active()) { _adjustment->set_value(1.0); but->set_active(true); } - end_touch(); } }