summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2017-04-01 17:14:06 +0200
committerPaul Davis <paul@linuxaudiosystems.com>2017-04-03 00:33:44 +0200
commit54bab5153f1cb105ed9c31f42d032587750a782e (patch)
tree9f8cb15fbe2a5b707130698f46d7d595e6704493
parentf201726286ab7f0aa5c65d9a63cc1c8f38d5ca18 (diff)
don't set region selection on loading a session 1 by 1, but just once after they should all exist
-rw-r--r--gtk2_ardour/editor.cc19
1 files changed, 11 insertions, 8 deletions
diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc
index 458667ce64..16be22768f 100644
--- a/gtk2_ardour/editor.cc
+++ b/gtk2_ardour/editor.cc
@@ -5152,6 +5152,17 @@ Editor::first_idle ()
(*t)->first_idle();
}
+ /* now that all regionviews should exist, setup region selection */
+
+ RegionSelection rs;
+
+ for (list<PBD::ID>::iterator pr = selection->regions.pending.begin (); pr != selection->regions.pending.end (); ++pr) {
+ /* this is cumulative: rs is NOT cleared each time */
+ get_regionviews_by_id (*pr, rs);
+ }
+
+ selection->set (rs);
+
// first idle adds route children (automation tracks), so we need to redisplay here
_routes->redisplay ();
@@ -5253,14 +5264,6 @@ Editor::located ()
void
Editor::region_view_added (RegionView * rv)
{
- for (list<PBD::ID>::iterator pr = selection->regions.pending.begin (); pr != selection->regions.pending.end (); ++pr) {
- if (rv->region ()->id () == (*pr)) {
- selection->add (rv);
- selection->regions.pending.erase (pr);
- break;
- }
- }
-
MidiRegionView* mrv = dynamic_cast<MidiRegionView*> (rv);
if (mrv) {
list<pair<PBD::ID const, list<Evoral::event_id_t> > >::iterator rnote;