Skip no-change re-ordering of tracks/busses
authorRobin Gareus <robin@gareus.org>
Tue, 31 Jan 2017 19:42:22 +0000 (20:42 +0100)
committerRobin Gareus <robin@gareus.org>
Tue, 31 Jan 2017 19:42:33 +0000 (20:42 +0100)
e.g. move top-most track up, bottom-most track down.

gtk2_ardour/editor_routes.cc

index cec0969863107a9ed36c3e8c481500a1e2a78f9e..2c391907582062aa68a7de9cbf3667ee2d4c9f96 100644 (file)
@@ -1738,7 +1738,12 @@ EditorRoutes::move_selected_tracks (bool up)
                };
        }
 
-       for (leading = view_stripables.begin(); leading != view_stripables.end(); ++leading) {
+       bool changed = false;
+       unsigned int i = 0;
+       for (leading = view_stripables.begin(); leading != view_stripables.end(); ++leading, ++i) {
+               if (leading->old_order != i) {
+                       changed = true;
+               }
                neworder.push_back (leading->old_order);
 #ifndef NDEBUG
                if (leading->old_order != neworder.size() - 1) {
@@ -1747,6 +1752,10 @@ EditorRoutes::move_selected_tracks (bool up)
 #endif
        }
 
+       if (!changed) {
+               return;
+       }
+
 #ifndef NDEBUG
        DEBUG_TRACE (DEBUG::OrderKeys, "New order after moving tracks:\n");
        for (vector<int>::iterator i = neworder.begin(); i != neworder.end(); ++i) {
@@ -1755,7 +1764,6 @@ EditorRoutes::move_selected_tracks (bool up)
        DEBUG_TRACE (DEBUG::OrderKeys, "-------\n");
 #endif
 
-
        _model->reorder (neworder);
 
        if (scroll_to) {