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:
parent
a0f00d7d22
commit
adbb47fae7
|
@ -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:
|
||||
|
|
Loading…
Reference in New Issue
Block a user