diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h index 8f814714dd..91db46bd95 100644 --- a/gtk2_ardour/ardour_ui.h +++ b/gtk2_ardour/ardour_ui.h @@ -399,8 +399,6 @@ public: void gui_idle_handler (); - bool maybe_use_select_as_group (ARDOUR::Route const&) const; - protected: friend class PublicEditor; diff --git a/gtk2_ardour/ardour_ui3.cc b/gtk2_ardour/ardour_ui3.cc index 3b2181ce33..08dc4145d8 100644 --- a/gtk2_ardour/ardour_ui3.cc +++ b/gtk2_ardour/ardour_ui3.cc @@ -212,28 +212,3 @@ ARDOUR_UI::record_state_changed () } } -bool -ARDOUR_UI::maybe_use_select_as_group (Route const & route) const -{ - if (!UIConfiguration::instance().get_allow_selection_as_group()) { - return false; - } - - if (!route.is_selected()) { - /* Not selected, can't possibly use selection */ - return false; - } - - if (editor->get_selection().tracks.size() < 2) { - /* only this track selected */ - return false; - } - - if (route.route_group() && route.route_group()->is_active() && !route.route_group()->is_select()) { - /* active route group that does not share selection status */ - return false; - } - - return true; -} - diff --git a/gtk2_ardour/gain_meter.cc b/gtk2_ardour/gain_meter.cc index 11f04f5740..f665f04c01 100644 --- a/gtk2_ardour/gain_meter.cc +++ b/gtk2_ardour/gain_meter.cc @@ -37,6 +37,7 @@ #include "ardour/control_group.h" #include "ardour/logmeter.h" #include "ardour/route_group.h" +#include "ardour/selection.h" #include "ardour/session_route.h" #include "ardour/dB.h" #include "ardour/utils.h" @@ -756,10 +757,14 @@ GainMeterBase::meter_point_clicked (MeterPoint mp) void GainMeterBase::amp_start_touch (int state) { - if (_route && ARDOUR_UI::instance()->maybe_use_select_as_group (*_route)) { + if (_route) { + StripableList sl; + + _session->selection ().get_stripables_for_op (sl, _route, &RouteGroup::is_gain); + _touch_control_group.reset (new GainControlGroup ()); _touch_control_group->set_mode (ControlGroup::Relative); - _touch_control_group->fill_from_selection_or_group (_route, _control->session().selection(), _control->parameter(), &RouteGroup::is_gain); + _touch_control_group->fill_from_stripable_list (sl, _control->parameter()); } _control->start_touch (timepos_t (_control->session().transport_sample())); diff --git a/gtk2_ardour/mixer_strip.cc b/gtk2_ardour/mixer_strip.cc index 3bca67b572..056ca0c480 100644 --- a/gtk2_ardour/mixer_strip.cc +++ b/gtk2_ardour/mixer_strip.cc @@ -59,6 +59,7 @@ #include "ardour/route.h" #include "ardour/route_group.h" #include "ardour/send.h" +#include "ardour/selection.h" #include "ardour/session.h" #include "ardour/types.h" #include "ardour/user_bundle.h" @@ -505,18 +506,20 @@ MixerStrip::trim_start_touch (int) { assert (_route && _session); - if (route()->trim() && route()->trim()->active() && route()->n_inputs().n_audio() > 0) { - - std::shared_ptr control (route()->trim()->gain_control()); - - if (ARDOUR_UI::instance()->maybe_use_select_as_group (*_route)) { - _touch_control_group.reset (new GainControlGroup (TrimAutomation)); - _touch_control_group->set_mode (ControlGroup::Relative); - _touch_control_group->fill_from_selection_or_group (_route, control->session().selection(), control->parameter(), &RouteGroup::is_gain); - } - - control->start_touch (timepos_t (_session->transport_sample())); + if (!route()->trim() || !route()->trim()->active() || route()->n_inputs().n_audio() <= 0) { + return; } + + std::shared_ptr control (route()->trim()->gain_control()); + + StripableList sl; + _session->selection ().get_stripables_for_op (sl, _route, &RouteGroup::is_gain); + + _touch_control_group.reset (new GainControlGroup (TrimAutomation)); + _touch_control_group->set_mode (ControlGroup::Relative); + _touch_control_group->fill_from_stripable_list (sl, control->parameter()); + + control->start_touch (timepos_t (_session->transport_sample())); } void