diff options
author | Carl Hetherington <carl@carlh.net> | 2007-10-07 15:51:14 +0000 |
---|---|---|
committer | Carl Hetherington <carl@carlh.net> | 2007-10-07 15:51:14 +0000 |
commit | 3f38e6b7f56ad85891d3669e0f1c58e6124b07f6 (patch) | |
tree | 49040369362473ad830907cbd524667d39d1703c /gtk2_ardour/selection.cc | |
parent | 49763a55c9bcbff2cb7844f36df777bbfadab172 (diff) |
Re-work edit group selection in line with suggestions from Paul.
git-svn-id: svn://localhost/ardour2/trunk@2529 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/selection.cc')
-rw-r--r-- | gtk2_ardour/selection.cc | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/gtk2_ardour/selection.cc b/gtk2_ardour/selection.cc index b9c44bea13..f0037588a0 100644 --- a/gtk2_ardour/selection.cc +++ b/gtk2_ardour/selection.cc @@ -29,6 +29,7 @@ #include "selection_templates.h" #include "time_axis_view.h" #include "automation_time_axis.h" +#include "public_editor.h" #include "i18n.h" @@ -290,6 +291,7 @@ Selection::add (RegionView* r) { if (find (regions.begin(), regions.end(), r) == regions.end()) { regions.add (r); + select_edit_group_regions (); add (&r->get_trackview()); RegionsChanged (); } @@ -310,6 +312,7 @@ Selection::add (vector<RegionView*>& v) } if (changed) { + select_edit_group_regions (); RegionsChanged (); } } @@ -679,3 +682,21 @@ Selection::add (vector<AutomationSelectable*>& autos) PointsChanged (); } + +void +Selection::select_edit_group_regions () +{ + std::set<RegionView*> regions_to_add; + + for (RegionSelection::iterator i = regions.begin(); i != regions.end(); ++i) { + vector<RegionView*> e; + editor->get_equivalent_regions (*i, e); + for (vector<RegionView*>::iterator j = e.begin(); j != e.end(); ++j) { + regions_to_add.insert(*j); + } + } + + for (std::set<RegionView*>::iterator i = regions_to_add.begin(); i != regions_to_add.end(); ++i) { + add (*i); + } +} |