more region selection tweaks

git-svn-id: svn://localhost/ardour2/trunk@1379 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Paul Davis 2007-01-24 17:22:34 +00:00
parent 14814f5469
commit d3187aa32a
2 changed files with 31 additions and 13 deletions

View File

@ -18,6 +18,8 @@
$Id: editor.cc 1353 2007-01-18 03:06:15Z paul $
*/
#include <pbd/stacktrace.h>
#include <ardour/diskstream.h>
#include <ardour/playlist.h>
#include <ardour/route_group.h>
@ -313,7 +315,7 @@ Editor::mapped_get_equivalent_regions (RouteTimeAxisView& tv, uint32_t ignored,
if ((pl = ds->playlist()) != 0) {
pl->get_equivalent_regions (basis->region(), results);
}
for (vector<boost::shared_ptr<Region> >::iterator ir = results.begin(); ir != results.end(); ++ir) {
if ((marv = tv.view()->find_view (*ir)) != 0) {
all_equivs->push_back (marv);
@ -343,17 +345,11 @@ Editor::set_selected_regionview_from_click (bool press, Selection::Operation op,
if (press) {
button_release_can_deselect = false;
}
}
if (op == Selection::Toggle || op == Selection::Set) {
if (selection->selected (clicked_audio_trackview)) {
get_equivalent_regions (clicked_regionview, all_equivalent_regions);
} else {
all_equivalent_regions.push_back (clicked_regionview);
}
switch (op) {
case Selection::Toggle:
@ -386,8 +382,17 @@ Editor::set_selected_regionview_from_click (bool press, Selection::Operation op,
} else {
if (press) {
if (selection->selected (clicked_audio_trackview)) {
get_equivalent_regions (clicked_regionview, all_equivalent_regions);
} else {
all_equivalent_regions.push_back (clicked_regionview);
}
/* add all the equivalent regions, but only on button press */
if (!all_equivalent_regions.empty()) {
commit = true;
}
@ -399,6 +404,13 @@ Editor::set_selected_regionview_from_click (bool press, Selection::Operation op,
case Selection::Set:
if (!clicked_regionview->get_selected()) {
if (selection->selected (clicked_audio_trackview)) {
get_equivalent_regions (clicked_regionview, all_equivalent_regions);
} else {
all_equivalent_regions.push_back (clicked_regionview);
}
selection->set (all_equivalent_regions);
commit = true;
} else {
@ -484,6 +496,8 @@ Editor::set_selected_regionview_from_click (bool press, Selection::Operation op,
set<AudioTimeAxisView*> relevant_tracks;
get_relevant_audio_tracks (relevant_tracks);
cerr << "finding selectables between " << first_frame << " and " << last_frame << endl;
for (set<AudioTimeAxisView*>::iterator t = relevant_tracks.begin(); t != relevant_tracks.end(); ++t) {
(*t)->get_selectables (first_frame, last_frame, -1.0, -1.0, results);

View File

@ -599,11 +599,15 @@ 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)
{
for (RegionList::iterator i = regions.begin(); i != regions.end(); ++i) {
if (Config->get_use_overlap_equivalency()) {
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 if ((*i)->equivalent (other)) {
}
}
} else {
for (RegionList::iterator i = regions.begin(); i != regions.end(); ++i) {
if ((*i)->equivalent (other)) {
results.push_back ((*i));
}
}