+
+void
+Editor::track_mixer_selection ()
+{
+ Mixer_UI::instance()->selection().RoutesChanged.connect (sigc::mem_fun (*this, &Editor::follow_mixer_selection));
+}
+
+void
+Editor::follow_mixer_selection ()
+{
+ if (!ARDOUR::Config->get_link_editor_and_mixer_selection() || _following_mixer_selection) {
+ return;
+ }
+
+ _following_mixer_selection = true;
+ selection->block_tracks_changed (true);
+
+ RouteUISelection& s (Mixer_UI::instance()->selection().routes);
+
+ selection->clear_tracks ();
+
+ for (RouteUISelection::iterator i = s.begin(); i != s.end(); ++i) {
+ TimeAxisView* tav = get_route_view_by_route_id ((*i)->route()->id());
+ if (tav) {
+ selection->add (tav);
+ }
+ }
+
+ _following_mixer_selection = false;
+ selection->block_tracks_changed (false);
+ selection->TracksChanged (); /* EMIT SIGNAL */
+}