From 031e02d9e7b59e26bd752b747a79e514187498f0 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sun, 6 Aug 2017 23:22:27 +0200 Subject: [PATCH] Use StripableTAV to inform Ctrl surfaces about selection. --- gtk2_ardour/editor_mixer.cc | 29 ++++++++++------------------- 1 file changed, 10 insertions(+), 19 deletions(-) diff --git a/gtk2_ardour/editor_mixer.cc b/gtk2_ardour/editor_mixer.cc index 0063536735..28f8f60fa7 100644 --- a/gtk2_ardour/editor_mixer.cc +++ b/gtk2_ardour/editor_mixer.cc @@ -203,36 +203,26 @@ Editor::set_selected_mixer_strip (TimeAxisView& view) // if this is an automation track, then we shold the mixer strip should // show the parent - boost::shared_ptr route; + boost::shared_ptr stripable; AutomationTimeAxisView* atv; if ((atv = dynamic_cast(&view)) != 0) { - AudioTimeAxisView *parent = dynamic_cast(view.get_parent()); - if (parent) { - route = parent->route (); + stripable = parent->stripable (); } - } else { - - AudioTimeAxisView* at = dynamic_cast (&view); - - if (at) { - route = at->route(); - } else { - MidiTimeAxisView* mt = dynamic_cast (&view); - if (mt) { - route = mt->route(); - } + StripableTimeAxisView* stav = dynamic_cast (&view); + if (stav) { + stripable = stav->stripable(); } } /* Typically this is set by changing the TAV selection but if for any - reason we decide to show a different strip for some reason, make - sure that control surfaces can find it. - */ - ARDOUR::ControlProtocol::set_first_selected_stripable (route); + * reason we decide to show a different strip for some reason, make + * sure that control surfaces can find it. + */ + ARDOUR::ControlProtocol::set_first_selected_stripable (stripable); Glib::RefPtr act = ActionManager::get_action (X_("Editor"), X_("show-editor-mixer")); @@ -248,6 +238,7 @@ Editor::set_selected_mixer_strip (TimeAxisView& view) create_editor_mixer (); } + boost::shared_ptr route = boost::dynamic_pointer_cast (stripable); if (current_mixer_strip->route() == route) { return; }