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; }