summaryrefslogtreecommitdiff
path: root/gtk2_ardour/editor_routes.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2012-06-28 22:27:37 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2012-06-28 22:27:37 +0000
commit7db500301d1f02e9cb98eb5c744ae68456fac75b (patch)
tree93690e7d6b6a82e057cc276caba4db1dbca70904 /gtk2_ardour/editor_routes.cc
parent81de53da1d82244ec589d6d65a5739b3022828c7 (diff)
further efforts at cleaning up the design of the interaction/relationship between route sort order keys and remote control IDs
git-svn-id: svn://localhost/ardour2/branches/3.0@12962 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/editor_routes.cc')
-rw-r--r--gtk2_ardour/editor_routes.cc42
1 files changed, 22 insertions, 20 deletions
diff --git a/gtk2_ardour/editor_routes.cc b/gtk2_ardour/editor_routes.cc
index eaf0c2500a..39e31f59d4 100644
--- a/gtk2_ardour/editor_routes.cc
+++ b/gtk2_ardour/editor_routes.cc
@@ -817,25 +817,14 @@ EditorRoutes::sync_order_keys_from_model ()
bool changed = false;
uint32_t order = 0;
- for (ri = rows.begin(); ri != rows.end(); ++ri) {
+ for (ri = rows.begin(); ri != rows.end(); ++ri, ++order) {
boost::shared_ptr<Route> route = (*ri)[_columns.route];
- bool visible = (*ri)[_columns.visible];
-
uint32_t old_key = route->order_key (EditorSort);
- uint32_t new_key;
-
- if (!visible) {
- new_key = UINT_MAX;
- } else {
- new_key = order;
- }
- if (old_key != new_key) {
- route->set_order_key (EditorSort, new_key);
+ if (order != old_key) {
+ route->set_order_key (EditorSort, order);
changed = true;
}
-
- order++;
}
if (changed) {
@@ -847,6 +836,10 @@ EditorRoutes::sync_order_keys_from_model ()
void
EditorRoutes::sync_model_from_order_keys (RouteSortOrderKey src)
{
+ /* Some route order key(s) for `src' has been changed, make sure that
+ we update out tree/list model and GUI to reflect the change.
+ */
+
if (!_session || _session->deletion_in_progress()) {
return;
}
@@ -880,7 +873,8 @@ EditorRoutes::sync_model_from_order_keys (RouteSortOrderKey src)
vector<int> neworder;
TreeModel::Children rows = _model->children();
- uint32_t n = 0;
+ uint32_t old_order = 0;
+ bool changed = false;
if (rows.empty()) {
return;
@@ -888,14 +882,22 @@ EditorRoutes::sync_model_from_order_keys (RouteSortOrderKey src)
neworder.assign (rows.size(), 0);
- for (TreeModel::Children::iterator ri = rows.begin(); ri != rows.end(); ++ri, ++n) {
+ for (TreeModel::Children::iterator ri = rows.begin(); ri != rows.end(); ++ri, ++old_order) {
boost::shared_ptr<Route> route = (*ri)[_columns.route];
- neworder[route->order_key (EditorSort)] = n;
- DEBUG_TRACE (DEBUG::OrderKeys, string_compose ("editor change order for %1 to %2\n",
- route->name(), route->order_key (MixerSort)));
+ uint32_t new_order = route->order_key (EditorSort);
+
+ DEBUG_TRACE (DEBUG::OrderKeys, string_compose ("editor change order for %1 from %2 to %3\n",
+ route->name(), old_order, new_order));
+
+ neworder[new_order] = old_order;
+
+ if (old_order != new_order) {
+ changed = true;
+ }
+
}
- {
+ if (changed) {
Unwinder<bool> uw (_ignore_reorder, true);
_model->reorder (neworder);
}