From: Paul Davis Date: Thu, 3 Jul 2014 23:43:28 +0000 (-0400) Subject: add new regions created by split to selection after operation is complete X-Git-Tag: 4.0-rc1~1601^2~641 X-Git-Url: https://main.carlh.net/gitweb/?a=commitdiff_plain;h=ba8898bd5f67b24d4b2be97288def7914c26be76;p=ardour.git add new regions created by split to selection after operation is complete --- diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index 7489199504..052fad0f6b 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -133,7 +133,8 @@ Editor::split_regions_at (framepos_t where, RegionSelection& regions) { bool frozen = false; - list > used_playlists; + list > used_playlists; + list used_trackviews; if (regions.empty()) { return; @@ -188,9 +189,16 @@ Editor::split_regions_at (framepos_t where, RegionSelection& regions) /* remember used playlists so we can thaw them later */ used_playlists.push_back(pl); + + TimeAxisView& tv = (*a)->get_time_axis_view(); + RouteTimeAxisView* rtv = dynamic_cast (&tv); + if (rtv) { + used_trackviews.push_back (rtv); + } pl->freeze(); } + if (pl) { pl->clear_changes (); pl->split_region ((*a)->region(), where); @@ -200,17 +208,34 @@ Editor::split_regions_at (framepos_t where, RegionSelection& regions) a = tmp; } + vector region_added_connections; + + for (list::iterator i = used_trackviews.begin(); i != used_trackviews.end(); ++i) { + region_added_connections.push_back ((*i)->view()->RegionViewAdded.connect (sigc::mem_fun(*this, &Editor::collect_new_region_view))); + } + + latest_regionviews.clear (); + while (used_playlists.size() > 0) { list >::iterator i = used_playlists.begin(); (*i)->thaw(); used_playlists.pop_front(); } + for (vector::iterator c = region_added_connections.begin(); c != region_added_connections.end(); ++c) { + (*c).disconnect (); + } + commit_reversible_command (); if (frozen){ EditorThaw(); /* Emit Signal */ } + + if (!latest_regionviews.empty()) { + selection->add (latest_regionviews); + } + } /** Move one extreme of the current range selection. If more than one range is selected,