Cope with tracks having order keys higher than the number of tracks; although I'm not quite sure how this happens. Fixes #4037.
git-svn-id: svn://localhost/ardour2/branches/3.0@9492 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
29ee63707f
commit
5392447686
|
@ -701,7 +701,7 @@ EditorRoutes::reordered (TreeModel::Path const &, TreeModel::iterator const &, i
|
|||
void
|
||||
EditorRoutes::sync_order_keys (string const & src)
|
||||
{
|
||||
vector<int> neworder;
|
||||
map<int, int> new_order;
|
||||
TreeModel::Children rows = _model->children();
|
||||
TreeModel::Children::iterator ri;
|
||||
|
||||
|
@ -709,20 +709,16 @@ EditorRoutes::sync_order_keys (string const & src)
|
|||
return;
|
||||
}
|
||||
|
||||
for (ri = rows.begin(); ri != rows.end(); ++ri) {
|
||||
neworder.push_back (0);
|
||||
}
|
||||
|
||||
bool changed = false;
|
||||
int order;
|
||||
|
||||
for (order = 0, ri = rows.begin(); ri != rows.end(); ++ri, ++order) {
|
||||
boost::shared_ptr<Route> route = (*ri)[_columns.route];
|
||||
|
||||
int old_key = order;
|
||||
int new_key = route->order_key (N_ ("editor"));
|
||||
int const old_key = order;
|
||||
int const new_key = route->order_key (N_ ("editor"));
|
||||
|
||||
neworder[new_key] = old_key;
|
||||
new_order[new_key] = old_key;
|
||||
|
||||
if (new_key != old_key) {
|
||||
changed = true;
|
||||
|
@ -731,7 +727,14 @@ EditorRoutes::sync_order_keys (string const & src)
|
|||
|
||||
if (changed) {
|
||||
_redisplay_does_not_reset_order_keys = true;
|
||||
_model->reorder (neworder);
|
||||
|
||||
/* `compact' new_order into a vector */
|
||||
vector<int> co;
|
||||
for (map<int, int>::const_iterator i = new_order.begin(); i != new_order.end(); ++i) {
|
||||
co.push_back (i->second);
|
||||
}
|
||||
|
||||
_model->reorder (co);
|
||||
_redisplay_does_not_reset_order_keys = false;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user