From fe7c36c04b805252a9ac057244b05d84469f7ba7 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 27 Jul 2023 13:30:50 -0600 Subject: [PATCH] allow selection-as-group control of trim controls --- gtk2_ardour/mixer_strip.cc | 23 +++++++++++++++++++++-- gtk2_ardour/mixer_strip.h | 2 ++ 2 files changed, 23 insertions(+), 2 deletions(-) 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 ();