From ee8dbdb0096901796da466402d29e1f7439c014f Mon Sep 17 00:00:00 2001 From: David Robillard Date: Mon, 29 Dec 2014 21:04:23 -0500 Subject: [PATCH] Fix internal select all. --- gtk2_ardour/editor.h | 2 +- gtk2_ardour/editor_selection.cc | 36 +++++++++++++-------------------- 2 files changed, 15 insertions(+), 23 deletions(-) diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index 98e8b151e4..4addfadb60 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -703,7 +703,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void set_selected_track (TimeAxisView&, Selection::Operation op = Selection::Set, bool no_remove=false); void select_all_tracks (); - void select_all_internal_edit (Selection::Operation); + bool select_all_internal_edit (Selection::Operation); bool set_selected_control_point_from_click (bool press, Selection::Operation op = Selection::Set); void set_selected_track_from_click (bool press, Selection::Operation op = Selection::Set, bool no_remove=false); diff --git a/gtk2_ardour/editor_selection.cc b/gtk2_ardour/editor_selection.cc index 93dd7c15fb..002785e6dc 100644 --- a/gtk2_ardour/editor_selection.cc +++ b/gtk2_ardour/editor_selection.cc @@ -1366,15 +1366,26 @@ Editor::select_all_in_track (Selection::Operation op) } } -void +bool Editor::select_all_internal_edit (Selection::Operation) { + bool selected = false; + for (RegionSelection::iterator i = selection->regions.begin(); i != selection->regions.end(); ++i) { MidiRegionView* mrv = dynamic_cast(*i); if (mrv) { mrv->select_all_notes (); + selected = true; } } + + MidiRegionView* mrv = dynamic_cast(entered_regionview); + if (mrv) { + mrv->select_all_notes (); + selected = true; + } + + return selected; } void @@ -1384,27 +1395,8 @@ Editor::select_all_objects (Selection::Operation op) TrackViewList ts = track_views; - 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 (*iter); - - if (rtav && rtav->is_midi_track()) { - midi_selected = true; - break; - } - } - - if (midi_selected) { - select_all_internal_edit (op); - return; - } + if (internal_editing() && select_all_internal_edit(op)) { + return; // Selected notes } for (TrackViewList::iterator iter = ts.begin(); iter != ts.end(); ++iter) { -- 2.30.2