- const Track::EndpointSeq &epl=(*i)->get_endpoints();
- for(Track::EndpointSeq::const_iterator j=epl.begin(); j!=epl.end(); ++j)
- if(j->link && tracks.insert(j->link).second)
- changed=true;
+ const vector<Track *> &links = (*i)->get_links();
+ for(vector<Track *>::const_iterator j=links.begin(); j!=links.end(); ++j)
+ if(*j && tracks.insert(*j).second)
+ changed = true;
+ }
+
+ if(changed)
+ signal_changed.emit();
+}
+
+void Selection::select_blocks()
+{
+ bool changed = false;
+ for(set<Track *>::iterator i=tracks.begin(); i!=tracks.end(); ++i)
+ {
+ const set<Track *> &btracks = (*i)->get_block().get_tracks();
+ for(set<Track *>::iterator j=btracks.begin(); j!=btracks.end(); ++j)
+ if(!tracks.count(*j))
+ {
+ tracks.insert(*j);
+ changed = true;
+ }