use identical logic for gain/trim controls as others when it comes to group/select stuff
This commit is contained in:
parent
a5477feb27
commit
200194b134
@ -399,8 +399,6 @@ public:
|
|||||||
|
|
||||||
void gui_idle_handler ();
|
void gui_idle_handler ();
|
||||||
|
|
||||||
bool maybe_use_select_as_group (ARDOUR::Route const&) const;
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
friend class PublicEditor;
|
friend class PublicEditor;
|
||||||
|
|
||||||
|
@ -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;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
@ -37,6 +37,7 @@
|
|||||||
#include "ardour/control_group.h"
|
#include "ardour/control_group.h"
|
||||||
#include "ardour/logmeter.h"
|
#include "ardour/logmeter.h"
|
||||||
#include "ardour/route_group.h"
|
#include "ardour/route_group.h"
|
||||||
|
#include "ardour/selection.h"
|
||||||
#include "ardour/session_route.h"
|
#include "ardour/session_route.h"
|
||||||
#include "ardour/dB.h"
|
#include "ardour/dB.h"
|
||||||
#include "ardour/utils.h"
|
#include "ardour/utils.h"
|
||||||
@ -756,10 +757,14 @@ GainMeterBase::meter_point_clicked (MeterPoint mp)
|
|||||||
void
|
void
|
||||||
GainMeterBase::amp_start_touch (int state)
|
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.reset (new GainControlGroup ());
|
||||||
_touch_control_group->set_mode (ControlGroup::Relative);
|
_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()));
|
_control->start_touch (timepos_t (_control->session().transport_sample()));
|
||||||
|
@ -59,6 +59,7 @@
|
|||||||
#include "ardour/route.h"
|
#include "ardour/route.h"
|
||||||
#include "ardour/route_group.h"
|
#include "ardour/route_group.h"
|
||||||
#include "ardour/send.h"
|
#include "ardour/send.h"
|
||||||
|
#include "ardour/selection.h"
|
||||||
#include "ardour/session.h"
|
#include "ardour/session.h"
|
||||||
#include "ardour/types.h"
|
#include "ardour/types.h"
|
||||||
#include "ardour/user_bundle.h"
|
#include "ardour/user_bundle.h"
|
||||||
@ -505,18 +506,20 @@ MixerStrip::trim_start_touch (int)
|
|||||||
{
|
{
|
||||||
assert (_route && _session);
|
assert (_route && _session);
|
||||||
|
|
||||||
if (route()->trim() && route()->trim()->active() && route()->n_inputs().n_audio() > 0) {
|
if (!route()->trim() || !route()->trim()->active() || route()->n_inputs().n_audio() <= 0) {
|
||||||
|
return;
|
||||||
std::shared_ptr<AutomationControl> 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()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::shared_ptr<AutomationControl> 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
|
void
|
||||||
|
Loading…
Reference in New Issue
Block a user