diff options
author | nick_m <mainsbridge@gmail.com> | 2013-10-24 01:27:13 +1100 |
---|---|---|
committer | nick_m <mainsbridge@gmail.com> | 2013-10-24 01:27:13 +1100 |
commit | be69bf15dd2fbc414b35aa84167b863caf6d7677 (patch) | |
tree | 809ff4484f8d70960494bd664b293aad4a54f266 /gtk2_ardour/mixer_ui.cc | |
parent | 75271a17d8d4ed0003c4627e80a28feb68f5d9c9 (diff) |
New routes are placed after highest selected route.
Diffstat (limited to 'gtk2_ardour/mixer_ui.cc')
-rw-r--r-- | gtk2_ardour/mixer_ui.cc | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/gtk2_ardour/mixer_ui.cc b/gtk2_ardour/mixer_ui.cc index 8126a81e85..12cf87d793 100644 --- a/gtk2_ardour/mixer_ui.cc +++ b/gtk2_ardour/mixer_ui.cc @@ -313,6 +313,22 @@ Mixer_UI::hide_window (GdkEventAny *ev) void Mixer_UI::add_strips (RouteList& routes) { + bool from_scratch = track_model->children().size() == 0; + Gtk::TreeModel::Children::iterator insert_iter = track_model->children().end(); + + for (Gtk::TreeModel::Children::iterator it = track_model->children().begin(); it != track_model->children().end(); ++it) { + boost::shared_ptr<Route> r = (*it)[track_columns.route]; + + if (r->order_key() == (routes.front()->order_key() + routes.size())) { + insert_iter = it; + break; + } + } + + if(!from_scratch) { + _selection.clear_routes (); + } + MixerStrip* strip; try { @@ -359,11 +375,15 @@ Mixer_UI::add_strips (RouteList& routes) show_strip (strip); - TreeModel::Row row = *(track_model->append()); + TreeModel::Row row = *(track_model->insert(insert_iter)); row[track_columns.text] = route->name(); row[track_columns.visible] = strip->route()->is_master() ? true : strip->marked_for_display(); row[track_columns.route] = route; row[track_columns.strip] = strip; + + if (!from_scratch) { + _selection.add (strip); + } route->PropertyChanged.connect (*this, invalidator (*this), boost::bind (&Mixer_UI::strip_property_changed, this, _1, strip), gui_context()); |