summaryrefslogtreecommitdiff
path: root/gtk2_ardour/mixer_ui.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/mixer_ui.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/mixer_ui.cc')
-rw-r--r--gtk2_ardour/mixer_ui.cc31
1 files changed, 15 insertions, 16 deletions
diff --git a/gtk2_ardour/mixer_ui.cc b/gtk2_ardour/mixer_ui.cc
index 17d37fa5fb..e301bbcc79 100644
--- a/gtk2_ardour/mixer_ui.cc
+++ b/gtk2_ardour/mixer_ui.cc
@@ -413,25 +413,14 @@ Mixer_UI::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)[track_columns.route];
- bool visible = (*ri)[track_columns.visible];
-
uint32_t old_key = route->order_key (MixerSort);
- uint32_t new_key;
-
- if (!visible) {
- new_key = UINT_MAX;
- } else {
- new_key = order;
- }
- if (old_key != new_key) {
- route->set_order_key (MixerSort, new_key);
+ if (old_key != order) {
+ route->set_order_key (MixerSort, order);
changed = true;
}
-
- order++;
}
if (changed) {
@@ -477,6 +466,7 @@ Mixer_UI::sync_model_from_order_keys (RouteSortOrderKey src)
vector<int> neworder;
TreeModel::Children rows = track_model->children();
uint32_t n = 0;
+ bool changed = false;
if (rows.empty()) {
return;
@@ -486,12 +476,19 @@ Mixer_UI::sync_model_from_order_keys (RouteSortOrderKey src)
for (TreeModel::Children::iterator ri = rows.begin(); ri != rows.end(); ++ri, ++n) {
boost::shared_ptr<Route> route = (*ri)[track_columns.route];
- neworder[route->order_key (MixerSort)] = n;
+ uint32_t o = route->order_key (MixerSort);
+
+ neworder[o] = n;
+
+ if (o != n) {
+ changed = true;
+ }
+
DEBUG_TRACE (DEBUG::OrderKeys, string_compose ("mixer change order for %1 to %2\n",
route->name(), route->order_key (MixerSort)));
}
- {
+ if (changed) {
Unwinder<bool> uw (ignore_reorder, true);
track_model->reorder (neworder);
}
@@ -985,6 +982,8 @@ Mixer_UI::initial_track_display ()
track_model->clear ();
add_strips (copy);
}
+
+ _session->sync_order_keys (MixerSort);
redisplay_track_list ();
}