mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-31 10:57:43 +01:00
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
This commit is contained in:
parent
c1f85106cc
commit
d5b1369258
4 changed files with 23 additions and 23 deletions
|
|
@ -1710,7 +1710,7 @@ public:
|
|||
|
||||
void update_route_visibility ();
|
||||
|
||||
void sync_order_keys ();
|
||||
void sync_order_keys (void*);
|
||||
bool ignore_route_order_sync;
|
||||
|
||||
bool route_list_display_button_press (GdkEventButton*);
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -71,7 +71,6 @@ Mixer_UI::Mixer_UI ()
|
|||
in_group_row_change = false;
|
||||
_visible = false;
|
||||
ignore_route_reorder = false;
|
||||
ignore_sync = false;
|
||||
|
||||
Route::SyncOrderKeys.connect (mem_fun (*this, &Mixer_UI::sync_order_keys));
|
||||
|
||||
|
|
@ -355,13 +354,13 @@ Mixer_UI::get_order_key()
|
|||
|
||||
|
||||
void
|
||||
Mixer_UI::sync_order_keys ()
|
||||
Mixer_UI::sync_order_keys (void *src)
|
||||
{
|
||||
vector<int> neworder;
|
||||
TreeModel::Children rows = track_model->children();
|
||||
TreeModel::Children::iterator ri;
|
||||
|
||||
if (ignore_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;
|
||||
}
|
||||
|
||||
|
|
@ -712,15 +711,14 @@ Mixer_UI::redisplay_track_list ()
|
|||
}
|
||||
|
||||
if (Config->get_sync_all_route_ordering() && !ignore_route_reorder) {
|
||||
ignore_sync = true;
|
||||
Route::SyncOrderKeys (); // EMIT SIGNAL
|
||||
ignore_sync = false;
|
||||
Route::SyncOrderKeys (this); // EMIT SIGNAL
|
||||
}
|
||||
|
||||
// Rebind all of the midi controls automatically
|
||||
|
||||
if (auto_rebinding)
|
||||
if (auto_rebinding) {
|
||||
auto_rebind_midi_controls ();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -242,9 +242,8 @@ class Mixer_UI : public Gtk::Window
|
|||
|
||||
Width _strip_width;
|
||||
|
||||
void sync_order_keys ();
|
||||
void sync_order_keys (void *src);
|
||||
bool ignore_route_reorder;
|
||||
bool ignore_sync;
|
||||
|
||||
static const int32_t default_width = 478;
|
||||
static const int32_t default_height = 765;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue