NO-OP; clean up script spacing and remove goto
[ardour.git] / gtk2_ardour / track_selection.cc
index 92efbd48633341a2dac34d602bc96d33550ff1a9..ac3d8b68e52b891e8833b86e9267a69915be891c 100644 (file)
 */
 
 #include <algorithm>
+
 #include "ardour/route_group.h"
+#include "control_protocol/control_protocol.h"
+
 #include "track_selection.h"
 #include "time_axis_view.h"
 #include "public_editor.h"
+#include "vca_time_axis.h"
 
 using namespace std;
 
@@ -38,23 +42,44 @@ TrackSelection::~TrackSelection ()
 TrackViewList
 TrackSelection::add (TrackViewList const & t)
 {
-       TrackViewList added = TrackViewList::add (t);
+       TrackViewList added;
 
        for (TrackSelection::const_iterator i = t.begin(); i != t.end(); ++i) {
+               if (dynamic_cast<VCATimeAxisView*> (*i)) {
+                       continue;
+               }
 
                /* select anything in the same select-enabled route group */
                ARDOUR::RouteGroup* rg = (*i)->route_group ();
+
                if (rg && rg->is_active() && rg->is_select ()) {
+
                        TrackViewList tr = _editor->axis_views_from_routes (rg->route_list ());
+
                        for (TrackViewList::iterator j = tr.begin(); j != tr.end(); ++j) {
-                               if (!contains (*j)) {
-                                       added.push_back (*j);
-                                       push_back (*j);
+
+                               /* Do not add the trackview passed in as an
+                                * argument, because we want that to be on the
+                                * end of the list.
+                                */
+
+                               if (*j != *i) {
+                                       if (!contains (*j)) {
+                                               added.push_back (*j);
+                                               push_back (*j);
+                                       }
                                }
                        }
                }
+
+               /* now add the the trackview's passed in as actual arguments */
+
+               if (!contains (*i)) {
+                       added.push_back (*i);
+                       push_back (*i);
+               }
        }
 
+
        return added;
 }
-