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/editor_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/editor_selection.cc')
-rw-r--r-- | gtk2_ardour/editor_selection.cc | 32 |
1 files changed, 5 insertions, 27 deletions
diff --git a/gtk2_ardour/editor_selection.cc b/gtk2_ardour/editor_selection.cc index 304c2aae82..910534690e 100644 --- a/gtk2_ardour/editor_selection.cc +++ b/gtk2_ardour/editor_selection.cc @@ -293,7 +293,7 @@ Editor::get_relevant_tracks (set<RouteTimeAxisView*>& relevant_tracks) */ void -Editor::mapover_tracks (slot<void, RouteTimeAxisView&, uint32_t> sl, TimeAxisView* basis) +Editor::mapover_tracks (slot<void, RouteTimeAxisView&, uint32_t> sl, TimeAxisView* basis) const { RouteTimeAxisView* route_basis = dynamic_cast<RouteTimeAxisView*> (basis); if (route_basis == 0) { @@ -312,7 +312,7 @@ Editor::mapover_tracks (slot<void, RouteTimeAxisView&, uint32_t> sl, TimeAxisVie if (group && group->is_active()) { /* the basis is a member of an active edit group; find other members */ - for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) { + for (TrackViewList::const_iterator i = track_views.begin(); i != track_views.end(); ++i) { RouteTimeAxisView* v = dynamic_cast<RouteTimeAxisView*> (*i); if (v && v->route()->edit_group() == group) { tracks.insert (v); @@ -328,7 +328,7 @@ Editor::mapover_tracks (slot<void, RouteTimeAxisView&, uint32_t> sl, TimeAxisVie } void -Editor::mapped_get_equivalent_regions (RouteTimeAxisView& tv, uint32_t ignored, RegionView* basis, vector<RegionView*>* all_equivs) +Editor::mapped_get_equivalent_regions (RouteTimeAxisView& tv, uint32_t ignored, RegionView* basis, vector<RegionView*>* all_equivs) const { boost::shared_ptr<Playlist> pl; vector<boost::shared_ptr<Region> > results; @@ -357,7 +357,7 @@ Editor::mapped_get_equivalent_regions (RouteTimeAxisView& tv, uint32_t ignored, } void -Editor::get_equivalent_regions (RegionView* basis, vector<RegionView*>& equivalent_regions) +Editor::get_equivalent_regions (RegionView* basis, vector<RegionView*>& equivalent_regions) const { mapover_tracks (bind (mem_fun (*this, &Editor::mapped_get_equivalent_regions), basis, &equivalent_regions), &basis->get_trackview()); @@ -437,9 +437,7 @@ Editor::set_selected_regionview_from_click (bool press, Selection::Operation op, case Selection::Set: if (!clicked_regionview->get_selected()) { - - get_equivalent_regions (clicked_regionview, all_equivalent_regions); - selection->set (all_equivalent_regions); + selection->set (clicked_regionview); commit = true; } else { /* no commit necessary: clicked on an already selected region */ @@ -782,26 +780,6 @@ Editor::select_all_within (nframes_t start, nframes_t end, double top, double bo return false; } - /* `touched' may contain some regions; if so, we need to add equivalent - regions from any edit groups */ - - list<Selectable*> to_add; - - for (list<Selectable*>::iterator i = touched.begin(); i != touched.end(); ++i) { - RegionView* r = dynamic_cast<RegionView*> (*i); - if (r) { - vector<RegionView*> e; - get_equivalent_regions (r, e); - for (vector<RegionView*>::iterator j = e.begin(); j != e.end(); ++j) { - to_add.push_back (*j); - } - } - } - - for (list<Selectable*>::iterator i = to_add.begin(); i != to_add.end(); ++i) { - touched.push_back (*i); - } - if (!touched_tracks.empty()) { switch (op) { |