move logic for use-selection-as-group into ARDOUR_UI and use it everywhere
This commit is contained in:
parent
639c206432
commit
16e1188a2f
|
@ -399,6 +399,8 @@ public:
|
|||
|
||||
void gui_idle_handler ();
|
||||
|
||||
bool maybe_use_select_as_group (ARDOUR::Route const&) const;
|
||||
|
||||
protected:
|
||||
friend class PublicEditor;
|
||||
|
||||
|
|
|
@ -211,3 +211,29 @@ ARDOUR_UI::record_state_changed ()
|
|||
big_clock->set_active (false);
|
||||
}
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
|
|
@ -48,6 +48,7 @@
|
|||
|
||||
#include "pbd/fastlog.h"
|
||||
|
||||
#include "ardour_ui.h"
|
||||
#include "gain_meter.h"
|
||||
#include "gui_thread.h"
|
||||
#include "keyboard.h"
|
||||
|
@ -757,12 +758,10 @@ GainMeterBase::amp_start_touch (int state)
|
|||
{
|
||||
assert (_route);
|
||||
|
||||
if (UIConfiguration::instance().get_allow_selection_as_group()) {
|
||||
if (_route->is_selected() && (!_route->route_group() || !_route->route_group()->is_gain())) {
|
||||
_touch_control_group.reset (new GainControlGroup ());
|
||||
_touch_control_group->set_mode (ControlGroup::Relative);
|
||||
_touch_control_group->fill_from_selection (_control->session().selection(), _control->parameter());
|
||||
}
|
||||
if (ARDOUR_UI::instance()->maybe_use_select_as_group (*_route)) {
|
||||
_touch_control_group.reset (new GainControlGroup ());
|
||||
_touch_control_group->set_mode (ControlGroup::Relative);
|
||||
_touch_control_group->fill_from_selection (_control->session().selection(), _control->parameter());
|
||||
}
|
||||
|
||||
_control->start_touch (timepos_t (_control->session().transport_sample()));
|
||||
|
|
|
@ -73,6 +73,7 @@
|
|||
|
||||
#include "widgets/tooltips.h"
|
||||
|
||||
#include "ardour_ui.h"
|
||||
#include "ardour_window.h"
|
||||
#include "automation_controller.h"
|
||||
#include "context_menu_helper.h"
|
||||
|
@ -508,7 +509,7 @@ MixerStrip::trim_start_touch (int)
|
|||
|
||||
std::shared_ptr<AutomationControl> control (route()->trim()->gain_control());
|
||||
|
||||
if (maybe_use_select_as_group ()) {
|
||||
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 (control->session().selection(), control->parameter());
|
||||
|
|
|
@ -566,7 +566,7 @@ RouteUI::mute_press (GdkEventButton* ev)
|
|||
Controllable::GroupControlDisposition gcd;
|
||||
std::shared_ptr<RouteList> rl (new RouteList);
|
||||
|
||||
if (maybe_use_select_as_group ()) {
|
||||
if (ARDOUR_UI::instance()->maybe_use_select_as_group (*_route)) {
|
||||
gather_selected_routes (rl);
|
||||
gcd = Controllable::NoGroup;
|
||||
} else {
|
||||
|
@ -745,7 +745,7 @@ RouteUI::solo_press(GdkEventButton* ev)
|
|||
std::shared_ptr<RouteList> rl (new RouteList);
|
||||
Controllable::GroupControlDisposition gcd;
|
||||
|
||||
if (maybe_use_select_as_group ()) {
|
||||
if (ARDOUR_UI::instance()->maybe_use_select_as_group (*_route)) {
|
||||
gather_selected_routes (rl);
|
||||
gcd = Controllable::NoGroup;
|
||||
} else {
|
||||
|
@ -842,7 +842,7 @@ RouteUI::rec_enable_press(GdkEventButton* ev)
|
|||
Controllable::GroupControlDisposition gcd;
|
||||
rl.reset (new RouteList);
|
||||
|
||||
if (maybe_use_select_as_group ()) {
|
||||
if (ARDOUR_UI::instance()->maybe_use_select_as_group (*_route)) {
|
||||
gather_selected_routes (rl);
|
||||
gcd = Controllable::NoGroup;
|
||||
} else {
|
||||
|
@ -2883,36 +2883,6 @@ RouteUI::rename_current_playlist ()
|
|||
}
|
||||
}
|
||||
|
||||
bool
|
||||
RouteUI::maybe_use_select_as_group () const
|
||||
{
|
||||
if (!UIConfiguration::instance().get_allow_selection_as_group()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!route()) {
|
||||
/* Shouldn't happen but protects conditionals below */
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!route()->is_selected()) {
|
||||
/* Not selected, can't possibly use selection */
|
||||
return false;
|
||||
}
|
||||
|
||||
if (ARDOUR_UI::instance()->the_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;
|
||||
}
|
||||
|
||||
void
|
||||
RouteUI::gather_selected_routes (std::shared_ptr<RouteList>& rl) const
|
||||
{
|
||||
|
|
|
@ -263,7 +263,6 @@ protected:
|
|||
ARDOUR::SoloMuteRelease* _solo_release;
|
||||
ARDOUR::SoloMuteRelease* _mute_release;
|
||||
|
||||
bool maybe_use_select_as_group () const;
|
||||
void gather_selected_routes (std::shared_ptr<ARDOUR::RouteList>& rl) const;
|
||||
|
||||
private:
|
||||
|
|
Loading…
Reference in New Issue