From 003f1a4974fc0b923dfd162664dab2e432263eb8 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Wed, 16 Jun 2021 02:15:07 -0400 Subject: [PATCH] Add BasicUI::selection() Towards removing the direct use of Session by surfaces. --- libs/surfaces/control_protocol/basic_ui.cc | 6 ++++++ .../control_protocol/basic_ui.h | 5 +++++ libs/surfaces/push2/mix.cc | 20 +++++++++---------- 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/libs/surfaces/control_protocol/basic_ui.cc b/libs/surfaces/control_protocol/basic_ui.cc index 7ec5bf7b00..f6a11fe7ee 100644 --- a/libs/surfaces/control_protocol/basic_ui.cc +++ b/libs/surfaces/control_protocol/basic_ui.cc @@ -901,6 +901,12 @@ BasicUI::locations () return _session->locations (); } +CoreSelection& +BasicUI::selection () const +{ + return _session->selection (); +} + /* Signals */ PBD::Signal0& diff --git a/libs/surfaces/control_protocol/control_protocol/basic_ui.h b/libs/surfaces/control_protocol/control_protocol/basic_ui.h index 658ac0da7a..b49d169772 100644 --- a/libs/surfaces/control_protocol/control_protocol/basic_ui.h +++ b/libs/surfaces/control_protocol/control_protocol/basic_ui.h @@ -40,6 +40,7 @@ namespace ARDOUR { class Amp; +class CoreSelection; class Locations; class RouteGroup; class Session; @@ -220,6 +221,10 @@ public: const Locations* locations () const; Locations* locations (); + /* Selection */ + + CoreSelection& selection () const; + /* Signals */ PBD::Signal0& BundleAddedOrRemoved (); diff --git a/libs/surfaces/push2/mix.cc b/libs/surfaces/push2/mix.cc index 46be85394f..257de1d045 100644 --- a/libs/surfaces/push2/mix.cc +++ b/libs/surfaces/push2/mix.cc @@ -389,7 +389,7 @@ MixLayout::show_vpot_mode () void MixLayout::button_mute () { - boost::shared_ptr s = session.selection().first_selected_stripable(); + boost::shared_ptr s = p2.selection ().first_selected_stripable(); if (s) { boost::shared_ptr ac = s->mute_control(); if (ac) { @@ -401,7 +401,7 @@ MixLayout::button_mute () void MixLayout::button_solo () { - boost::shared_ptr s = session.selection().first_selected_stripable(); + boost::shared_ptr s = p2.selection ().first_selected_stripable(); if (s) { boost::shared_ptr ac = s->solo_control(); if (ac) { @@ -417,7 +417,7 @@ MixLayout::button_lower (uint32_t n) return; } - session.selection().set (stripable[n], boost::shared_ptr()); + p2.selection ().set (stripable[n], boost::shared_ptr()); } void @@ -689,7 +689,7 @@ MixLayout::button_select_release () /* no visible track selected, select first (if any) */ if (stripable[0]) { - session.selection().set (stripable[0], boost::shared_ptr()); + p2.selection ().set (stripable[0], boost::shared_ptr()); } } else { @@ -702,10 +702,10 @@ MixLayout::button_select_release () switch banks by one, and select leftmost */ if (bank_start != 0) { - session.selection().clear_stripables (); + p2.selection ().clear_stripables (); switch_bank (bank_start-1); if (stripable[0]) { - session.selection().set (stripable[0], boost::shared_ptr()); + p2.selection ().set (stripable[0], boost::shared_ptr()); } } } else { @@ -715,7 +715,7 @@ MixLayout::button_select_release () --n; } if (n >= 0) { - session.selection().set (stripable[n], boost::shared_ptr()); + p2.selection ().set (stripable[n], boost::shared_ptr()); } } @@ -727,10 +727,10 @@ MixLayout::button_select_release () /* current selected is rightmost ... cancel selection, switch banks by one, and select righmost */ - session.selection().toggle (stripable[selected], boost::shared_ptr()); + p2.selection ().toggle (stripable[selected], boost::shared_ptr()); switch_bank (bank_start+1); if (stripable[7]) { - session.selection().set (stripable[7], boost::shared_ptr()); + p2.selection ().set (stripable[7], boost::shared_ptr()); } } else { /* select next, if any */ @@ -740,7 +740,7 @@ MixLayout::button_select_release () } if (n != 8) { - session.selection().set (stripable[n], boost::shared_ptr()); + p2.selection ().set (stripable[n], boost::shared_ptr()); } } }