summaryrefslogtreecommitdiff
path: root/gtk2_ardour/editor_route_list.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2008-10-03 13:38:21 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2008-10-03 13:38:21 +0000
commitd5b13692582e014c02dff75bf85ae6765d762dc4 (patch)
tree38f8fb2e368e3c22404338d6ccffdbe3805ba59c /gtk2_ardour/editor_route_list.cc
parentc1f85106cc8dc8e9234b3774e2457c0adcfbeabd (diff)
probable fix for track sync-ordering, part II to come in a minute
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@3850 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/editor_route_list.cc')
-rw-r--r--gtk2_ardour/editor_route_list.cc29
1 files changed, 16 insertions, 13 deletions
diff --git a/gtk2_ardour/editor_route_list.cc b/gtk2_ardour/editor_route_list.cc
index 63cef256a0..78a7754e5a 100644
--- a/gtk2_ardour/editor_route_list.cc
+++ b/gtk2_ardour/editor_route_list.cc
@@ -51,7 +51,6 @@ Editor::handle_new_route (Session::RouteList& routes)
TreeModel::Row row;
ignore_route_list_reorder = true;
- ignore_route_order_sync = true;
no_route_list_redisplay = true;
for (Session::RouteList::iterator x = routes.begin(); x != routes.end(); ++x) {
@@ -86,7 +85,6 @@ Editor::handle_new_route (Session::RouteList& routes)
}
ignore_route_list_reorder = false;
- ignore_route_order_sync = false;
no_route_list_redisplay = false;
redisplay_route_list ();
@@ -226,13 +224,13 @@ Editor::show_track_in_display (TimeAxisView& tv)
}
void
-Editor::sync_order_keys ()
+Editor::sync_order_keys (void *src)
{
vector<int> neworder;
TreeModel::Children rows = route_display_model->children();
TreeModel::Children::iterator ri;
- if (ignore_route_order_sync || !session || (session->state_of_the_state() & Session::Loading) || rows.empty()) {
+ if (src == this || !session || (session->state_of_the_state() & Session::Loading) || rows.empty()) {
return;
}
@@ -240,15 +238,24 @@ Editor::sync_order_keys ()
neworder.push_back (0);
}
+ bool changed = false;
+
for (ri = rows.begin(); ri != rows.end(); ++ri) {
TimeAxisView* tv = (*ri)[route_display_columns.tv];
boost::shared_ptr<Route> route = (*ri)[route_display_columns.route];
- neworder[route->order_key (X_("editor"))] = tv->old_order_key ();
+ int old_key = tv->old_order_key();
+ int new_key = route->order_key (X_("editor"));
+
+ neworder[new_key] = old_key;
+
+ if (new_key != old_key) {
+ changed = true;
+ }
}
- ignore_route_list_reorder = true;
- route_display_model->reorder (neworder);
- ignore_route_list_reorder = false;
+ if (changed) {
+ route_display_model->reorder (neworder);
+ }
}
void
@@ -314,9 +321,7 @@ Editor::redisplay_route_list ()
}
if (Config->get_sync_all_route_ordering() && !ignore_route_list_reorder) {
- ignore_route_order_sync = true;
- Route::SyncOrderKeys (); // EMIT SIGNAL
- ignore_route_order_sync = false;
+ Route::SyncOrderKeys (this); // EMIT SIGNAL
}
}
@@ -571,9 +576,7 @@ void
Editor::route_list_delete (const Gtk::TreeModel::Path& path)
{
session->set_remote_control_ids();
- ignore_route_list_reorder = true;
redisplay_route_list ();
- ignore_route_list_reorder = false;
}
void