summaryrefslogtreecommitdiff
path: root/gtk2_ardour/mixer_ui.cc
diff options
context:
space:
mode:
authornick_m <mainsbridge@gmail.com>2013-10-24 01:27:13 +1100
committernick_m <mainsbridge@gmail.com>2013-10-24 01:27:13 +1100
commitbe69bf15dd2fbc414b35aa84167b863caf6d7677 (patch)
tree809ff4484f8d70960494bd664b293aad4a54f266 /gtk2_ardour/mixer_ui.cc
parent75271a17d8d4ed0003c4627e80a28feb68f5d9c9 (diff)
New routes are placed after highest selected route.
Diffstat (limited to 'gtk2_ardour/mixer_ui.cc')
-rw-r--r--gtk2_ardour/mixer_ui.cc22
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());