From 0eadbc9396c1f4505ef0daf34f274c57daf63092 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Mon, 22 Jun 2009 22:17:48 +0000 Subject: Make tabs correctly follow reordering of mixer strips. git-svn-id: svn://localhost/ardour2/branches/3.0@5249 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/mixer_group_tabs.cc | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) (limited to 'gtk2_ardour/mixer_group_tabs.cc') diff --git a/gtk2_ardour/mixer_group_tabs.cc b/gtk2_ardour/mixer_group_tabs.cc index 08dab5a589..621f57c838 100644 --- a/gtk2_ardour/mixer_group_tabs.cc +++ b/gtk2_ardour/mixer_group_tabs.cc @@ -48,28 +48,31 @@ MixerGroupTabs::compute_tabs () const tab.group = 0; int32_t x = 0; - for (list::iterator i = _mixer->strips.begin(); i != _mixer->strips.end(); ++i) { + TreeModel::Children rows = _mixer->track_model->children (); + for (TreeModel::Children::iterator i = rows.begin(); i != rows.end(); ++i) { - if ((*i)->route()->is_master() || (*i)->route()->is_control() || !(*i)->marked_for_display()) { + MixerStrip* s = (*i)[_mixer->track_columns.strip]; + + if (s->route()->is_master() || s->route()->is_control() || !s->marked_for_display()) { continue; } - RouteGroup* g = (*i)->route_group (); + RouteGroup* g = s->route_group (); if (g != tab.group) { if (tab.group) { tab.to = x; - tab.last_ui_size = (*i)->get_width (); + tab.last_ui_size = s->get_width (); tabs.push_back (tab); } tab.from = x; tab.group = g; - tab.colour = (*i)->color (); - tab.first_ui_size = (*i)->get_width (); + tab.colour = s->color (); + tab.first_ui_size = s->get_width (); } - x += (*i)->get_width (); + x += s->get_width (); } if (tab.group) { @@ -121,16 +124,19 @@ MixerGroupTabs::reflect_tabs (list const & tabs) list::const_iterator j = tabs.begin (); int32_t x = 0; - for (list::iterator i = _mixer->strips.begin(); i != _mixer->strips.end(); ++i) { + TreeModel::Children rows = _mixer->track_model->children (); + for (TreeModel::Children::iterator i = rows.begin(); i != rows.end(); ++i) { - if ((*i)->route()->is_master() || (*i)->route()->is_control() || !(*i)->marked_for_display()) { + MixerStrip* s = (*i)[_mixer->track_columns.strip]; + + if (s->route()->is_master() || s->route()->is_control() || !s->marked_for_display()) { continue; } if (j == tabs.end()) { /* already run out of tabs, so no edit group */ - (*i)->route()->set_route_group (0, this); + s->route()->set_route_group (0, this); } else { @@ -139,17 +145,17 @@ MixerGroupTabs::reflect_tabs (list const & tabs) ++j; } - double const h = x + (*i)->get_width() / 2; + double const h = x + s->get_width() / 2; if (j->from < h && j->to > h) { - (*i)->route()->set_route_group (j->group, this); + s->route()->set_route_group (j->group, this); } else { - (*i)->route()->set_route_group (0, this); + s->route()->set_route_group (0, this); } } - x += (*i)->get_width (); + x += s->get_width (); } } -- cgit v1.2.3