diff options
Diffstat (limited to 'libs/ardour/playlist.cc')
-rw-r--r-- | libs/ardour/playlist.cc | 34 |
1 files changed, 22 insertions, 12 deletions
diff --git a/libs/ardour/playlist.cc b/libs/ardour/playlist.cc index c3b91f3f45..c992c10579 100644 --- a/libs/ardour/playlist.cc +++ b/libs/ardour/playlist.cc @@ -839,18 +839,28 @@ Playlist::remove_region_internal (boost::shared_ptr<Region> region) void Playlist::get_equivalent_regions (boost::shared_ptr<Region> other, vector<boost::shared_ptr<Region> >& results) { - if (Config->get_use_overlap_equivalency()) { - for (RegionList::iterator i = regions.begin(); i != regions.end(); ++i) { - if ((*i)->overlap_equivalent (other)) { - results.push_back (*i); - } - } - } else { - for (RegionList::iterator i = regions.begin(); i != regions.end(); ++i) { - if ((*i)->equivalent (other)) { - results.push_back (*i); - } - } + switch (Config->get_region_equivalence()) { + case Exact: + for (RegionList::iterator i = regions.begin(); i != regions.end(); ++i) { + if ((*i)->exact_equivalent (other)) { + results.push_back (*i); + } + } + break; + case Enclosed: + for (RegionList::iterator i = regions.begin(); i != regions.end(); ++i) { + if ((*i)->enclosed_equivalent (other)) { + results.push_back (*i); + } + } + break; + case Overlap: + for (RegionList::iterator i = regions.begin(); i != regions.end(); ++i) { + if ((*i)->overlap_equivalent (other)) { + results.push_back (*i); + } + } + break; } } |