diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2016-05-16 16:44:49 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2016-05-31 15:30:42 -0400 |
commit | 3eae4b0974914c6cace5811856f8f8153908bbce (patch) | |
tree | eae8645ff90b0d814287555014eb53b907a4a2a1 /gtk2_ardour | |
parent | 1a8769ab0353b98ad106382be5fc34779ae8812a (diff) |
tweak Editor to use Stripable methods for control-surface-driven selection
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/editor.cc | 15 | ||||
-rw-r--r-- | gtk2_ardour/editor.h | 2 |
2 files changed, 14 insertions, 3 deletions
diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index 3dbdd8a992..416cb6debc 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -802,6 +802,12 @@ Editor::Editor () ControlProtocol::ToggleRouteSelection.connect (*this, invalidator (*this), boost::bind (&Editor::control_select, this, _1, Selection::Toggle), gui_context()); ControlProtocol::ClearRouteSelection.connect (*this, invalidator (*this), boost::bind (&Editor::control_unselect, this), gui_context()); + ControlProtocol::AddStripableToSelection.connect (*this, invalidator (*this), boost::bind (&Editor::control_select, this, _1, Selection::Add), gui_context()); + ControlProtocol::RemoveStripableFromSelection.connect (*this, invalidator (*this), boost::bind (&Editor::control_select, this, _1, Selection::Toggle), gui_context()); + ControlProtocol::SetStripableSelection.connect (*this, invalidator (*this), boost::bind (&Editor::control_select, this, _1, Selection::Set), gui_context()); + ControlProtocol::ToggleStripableSelection.connect (*this, invalidator (*this), boost::bind (&Editor::control_select, this, _1, Selection::Toggle), gui_context()); + ControlProtocol::ClearStripableSelection.connect (*this, invalidator (*this), boost::bind (&Editor::control_unselect, this), gui_context()); + BasicUI::AccessAction.connect (*this, invalidator (*this), boost::bind (&Editor::access_action, this, _1, _2), gui_context()); /* problematic: has to return a value and thus cannot be x-thread */ @@ -1000,7 +1006,7 @@ Editor::control_unselect () } void -Editor::control_select (uint16_t rid, Selection::Operation op) +Editor::control_select (PresentationInfo::global_order_t global_order, Selection::Operation op) { /* handles the (static) signal from the ControlProtocol class that * requests setting the selected track to a given RID @@ -1010,7 +1016,12 @@ Editor::control_select (uint16_t rid, Selection::Operation op) return; } - boost::shared_ptr<Route> r = _session->get_remote_nth_route (rid); + PresentationInfo pi (global_order, PresentationInfo::Flag (0)); + boost::shared_ptr<Stripable> s = _session->get_remote_nth_stripable (pi.group_order(), pi.flags()); + + /* selected object may not be a Route */ + + boost::shared_ptr<Route> r = boost::dynamic_pointer_cast<Route> (s); if (!r) { return; diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index 9f579a3d81..4151b10727 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -1088,7 +1088,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void control_step_tracks_down (); void control_view (uint32_t); void control_scroll (float); - void control_select (uint16_t rid, Selection::Operation); + void control_select (ARDOUR::PresentationInfo::global_order_t which, Selection::Operation); void control_unselect (); void access_action (std::string,std::string); bool deferred_control_scroll (framepos_t); |