change semantics for select-all operation: if no track is selected, use the current entered track, or if there is no entered track, use all tracks; if in internal edit mode, check first to see if any MIDI tracks are among those to be operated on, and only do the internal edit version of select-all if there are

git-svn-id: svn://localhost/ardour2/branches/3.0@13508 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Paul Davis 2012-11-15 17:20:38 +00:00
parent a0f00d7d22
commit adbb47fae7

View File

@ -1354,17 +1354,48 @@ Editor::select_all (Selection::Operation op)
{
list<Selectable *> touched;
if (_internal_editing) {
select_all_internal_edit (op);
return;
TrackViewList ts;
if (selection->tracks.empty()) {
if (entered_track) {
ts.push_back (entered_track);
} else {
ts = track_views;
}
} else {
ts = selection->tracks;
}
for (TrackViewList::iterator iter = track_views.begin(); iter != track_views.end(); ++iter) {
if (_internal_editing) {
bool midi_selected = false;
for (TrackViewList::iterator iter = ts.begin(); iter != ts.end(); ++iter) {
if ((*iter)->hidden()) {
continue;
}
RouteTimeAxisView* rtav = dynamic_cast<RouteTimeAxisView*> (*iter);
if (rtav && rtav->is_midi_track()) {
midi_selected = true;
break;
}
}
if (midi_selected) {
select_all_internal_edit (op);
return;
}
}
for (TrackViewList::iterator iter = ts.begin(); iter != ts.end(); ++iter) {
if ((*iter)->hidden()) {
continue;
}
(*iter)->get_selectables (0, max_framepos, 0, DBL_MAX, touched);
}
begin_reversible_command (_("select all"));
switch (op) {
case Selection::Add: