diff --git a/gtk2_ardour/mixer_strip.cc b/gtk2_ardour/mixer_strip.cc index 254d3dd963..c4344278bb 100644 --- a/gtk2_ardour/mixer_strip.cc +++ b/gtk2_ardour/mixer_strip.cc @@ -503,8 +503,18 @@ void MixerStrip::trim_start_touch (int) { assert (_route && _session); + if (route()->trim() && route()->trim()->active() && route()->n_inputs().n_audio() > 0) { - route()->trim()->gain_control ()->start_touch (timepos_t (_session->transport_sample())); + + std::shared_ptr control (route()->trim()->gain_control()); + + if (maybe_use_select_as_group ()) { + _touch_control_group.reset (new GainControlGroup (TrimAutomation)); + _touch_control_group->set_mode (ControlGroup::Relative); + _touch_control_group->fill_from_selection (control->session().selection(), control->parameter()); + } + + control->start_touch (timepos_t (_session->transport_sample())); } } @@ -512,8 +522,17 @@ void MixerStrip::trim_end_touch (int) { assert (_route && _session); + if (route()->trim() && route()->trim()->active() && route()->n_inputs().n_audio() > 0) { - route()->trim()->gain_control ()->stop_touch (timepos_t (_session->transport_sample())); + + std::shared_ptr control (route()->trim()->gain_control()); + + control->stop_touch (timepos_t (_session->transport_sample())); + + if (_touch_control_group) { + _touch_control_group->pop_all (); + _touch_control_group.reset (); + } } } diff --git a/gtk2_ardour/mixer_strip.h b/gtk2_ardour/mixer_strip.h index 946deeb6cc..14c0a85af4 100644 --- a/gtk2_ardour/mixer_strip.h +++ b/gtk2_ardour/mixer_strip.h @@ -243,6 +243,8 @@ private: void trim_start_touch (int); void trim_end_touch (int); + std::shared_ptr _touch_control_group; + void setup_comment_button (); void loudess_analysis_button_clicked ();