Fix internal select all.
authorDavid Robillard <d@drobilla.net>
Tue, 30 Dec 2014 02:04:23 +0000 (21:04 -0500)
committerDavid Robillard <d@drobilla.net>
Tue, 30 Dec 2014 02:04:23 +0000 (21:04 -0500)
gtk2_ardour/editor.h
gtk2_ardour/editor_selection.cc

index 98e8b151e4270a17dbdd2a554fb80fd506ef0d3f..4addfadb6045e8c1394f8e6936a745ff11d0ff6f 100644 (file)
@@ -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);
index 93dd7c15fbc35bbcd7f168a3a13d65334532d70e..002785e6dcf5a19f9d3ded2b8316a8b6191f10c4 100644 (file)
@@ -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<MidiRegionView*>(*i);
                if (mrv) {
                        mrv->select_all_notes ();
+                       selected = true;
                }
        }
+
+       MidiRegionView* mrv = dynamic_cast<MidiRegionView*>(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<RouteTimeAxisView*> (*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) {