diff --git a/gtk2_ardour/automation_controller.cc b/gtk2_ardour/automation_controller.cc index fb7a75f4b6..c151b72d14 100644 --- a/gtk2_ardour/automation_controller.cc +++ b/gtk2_ardour/automation_controller.cc @@ -98,6 +98,8 @@ AutomationController::AutomationController(boost::shared_ptr knob->set_controllable (ac); knob->set_name("processor control knob"); _widget = knob; + knob->StartGesture.connect(sigc::mem_fun(*this, &AutomationController::start_touch)); + knob->StopGesture.connect(sigc::mem_fun(*this, &AutomationController::end_touch)); } else { AutomationBarController* bar = manage(new AutomationBarController(ac, adj)); diff --git a/gtk2_ardour/processor_box.cc b/gtk2_ardour/processor_box.cc index fa1b300e7b..8b353c040e 100644 --- a/gtk2_ardour/processor_box.cc +++ b/gtk2_ardour/processor_box.cc @@ -851,6 +851,9 @@ ProcessorEntry::Control::Control (boost::shared_ptr c, string _adjustment.set_page_increment (largestep); _slider.set_default_value (normal); + _slider.StartGesture.connect(sigc::mem_fun(*this, &Control::start_touch)); + _slider.StopGesture.connect(sigc::mem_fun(*this, &Control::end_touch)); + _adjustment.signal_value_changed().connect (sigc::mem_fun (*this, &Control::slider_adjusted)); c->Changed.connect (_connections, invalidator (*this), boost::bind (&Control::control_changed, this), gui_context ()); if (c->alist ()) { @@ -901,6 +904,26 @@ ProcessorEntry::Control::slider_adjusted () set_tooltip (); } +void +ProcessorEntry::Control::start_touch () +{ + boost::shared_ptr c = _control.lock (); + if (!c) { + return; + } + c->start_touch (c->session().transport_frame()); +} + +void +ProcessorEntry::Control::end_touch () +{ + boost::shared_ptr c = _control.lock (); + if (!c) { + return; + } + c->stop_touch (true, c->session().transport_frame()); +} + void ProcessorEntry::Control::button_clicked () { diff --git a/gtk2_ardour/processor_box.h b/gtk2_ardour/processor_box.h index 66585c88ec..8bb7b55f9b 100644 --- a/gtk2_ardour/processor_box.h +++ b/gtk2_ardour/processor_box.h @@ -223,6 +223,9 @@ private: std::string state_id () const; void set_tooltip (); + void start_touch (); + void end_touch (); + boost::weak_ptr _control; /* things for a slider */ Gtk::Adjustment _adjustment;