use new CoreSelection methods in editor and mixer
authorPaul Davis <paul@linuxaudiosystems.com>
Fri, 24 Aug 2018 18:03:34 +0000 (14:03 -0400)
committerPaul Davis <paul@linuxaudiosystems.com>
Fri, 24 Aug 2018 18:04:18 +0000 (14:04 -0400)
gtk2_ardour/editor_ops.cc
gtk2_ardour/mixer_ui.cc

index 3e757297a93eefa1929905deec8b67dfa60de00e..23b3d239d78e4d7954ff8cd87395765daa893779 100644 (file)
@@ -58,6 +58,7 @@
 #include "ardour/legatize.h"
 #include "ardour/region_factory.h"
 #include "ardour/reverse.h"
+#include "ardour/selection.h"
 #include "ardour/session.h"
 #include "ardour/session_playlists.h"
 #include "ardour/strip_silence.h"
@@ -753,7 +754,7 @@ Editor::build_region_boundary_cache ()
        if (ARDOUR_UI::instance()->video_timeline) {
                region_boundary_cache.push_back (ARDOUR_UI::instance()->video_timeline->get_video_start_offset());
        }
-       
+
        std::pair<samplepos_t, samplepos_t> ext = session_gui_extents (false);
        samplepos_t session_end = ext.second;
 
@@ -6422,79 +6423,13 @@ Editor::split_region ()
 void
 Editor::select_next_stripable (bool routes_only)
 {
-       if (selection->tracks.empty()) {
-               selection->set (track_views.front());
-               return;
-       }
-
-       TimeAxisView* current = selection->tracks.front();
-
-       bool valid;
-       do {
-               for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) {
-
-                       if (*i == current) {
-                               ++i;
-                               if (i != track_views.end()) {
-                                       current = (*i);
-                               } else {
-                                       current = (*(track_views.begin()));
-                                       //selection->set (*(track_views.begin()));
-                               }
-                               break;
-                       }
-               }
-
-               if (routes_only) {
-                       RouteUI* rui = dynamic_cast<RouteUI *>(current);
-                       valid = rui && rui->route()->active();
-               } else {
-                       valid = 0 != current->stripable ().get();
-               }
-
-       } while (current->hidden() || !valid);
-
-       selection->set (current);
-
-       ensure_time_axis_view_is_visible (*current, false);
+       _session->selection().select_next_stripable (false, routes_only);
 }
 
 void
 Editor::select_prev_stripable (bool routes_only)
 {
-       if (selection->tracks.empty()) {
-               selection->set (track_views.front());
-               return;
-       }
-
-       TimeAxisView* current = selection->tracks.front();
-
-       bool valid;
-       do {
-               for (TrackViewList::reverse_iterator i = track_views.rbegin(); i != track_views.rend(); ++i) {
-
-                       if (*i == current) {
-                               ++i;
-                               if (i != track_views.rend()) {
-                                       current = (*i);
-                               } else {
-                                       current = *(track_views.rbegin());
-                               }
-                               break;
-                       }
-               }
-               if (routes_only) {
-                       RouteUI* rui = dynamic_cast<RouteUI *>(current);
-                       valid = rui && rui->route()->active();
-               } else {
-                       valid = 0 != current->stripable ().get();
-               }
-
-       } while (current->hidden() || !valid);
-
-       selection->set (current);
-
-       ensure_time_axis_view_is_visible (*current, false);
+       _session->selection().select_prev_stripable (false, routes_only);
 }
 
 void
@@ -7366,7 +7301,7 @@ Editor::playhead_forward_to_grid ()
                        _session->request_locate (0);
                }
        } else {
-               
+
                if (pos.sample < max_samplepos - 1) {
                        pos.sample += 2;
                        snap_to_internal (pos, RoundUpAlways, SnapToGrid_Scaled, true);
@@ -7374,7 +7309,7 @@ Editor::playhead_forward_to_grid ()
                }
        }
 
-       
+
        /* keep PH visible in window */
        if (pos.sample > (_leftmost_sample + current_page_samples() *0.9)) {
                reset_x_origin (pos.sample - (current_page_samples()*0.9));
@@ -7399,7 +7334,7 @@ Editor::playhead_backward_to_grid ()
                        _session->request_locate (0);
                }
        } else {
-               
+
                if (pos.sample > 2) {
                        pos.sample -= 2;
                        snap_to_internal (pos, RoundDownAlways, SnapToGrid_Scaled, true);
@@ -7415,7 +7350,7 @@ Editor::playhead_backward_to_grid ()
 
                _session->request_locate (pos.sample, _session->transport_rolling());
        }
-       
+
        /* keep PH visible in window */
        if (pos.sample < (_leftmost_sample + current_page_samples() *0.1)) {
                reset_x_origin (pos.sample - (current_page_samples()*0.1));
index 6f11e59900beeead23a65ccb3f4760125cc6db51..b9b9eccacab8b0c1d5a22fe2b0f5b6d230023efc 100644 (file)
@@ -656,60 +656,18 @@ Mixer_UI::select_none ()
        deselect_all_strip_processors();
 }
 
- void
+void
 Mixer_UI::select_next_strip ()
 {
        deselect_all_strip_processors();
-       strips.sort (MixerStripSorter());
-
-       if (_selection.empty()) {
-               _selection.set (strips.front());
-               return;
-       }
-
-       bool select_me = false;
-
-       for (list<MixerStrip*>::iterator i = strips.begin(); i != strips.end(); ++i) {
-
-               if (select_me) {
-                       _selection.set (*i);
-                       return;
-               }
-
-               if ((*i)->selected()) {
-                       select_me = true;
-               }
-       }
-
-       _selection.set (strips.front());
+       _session->selection().select_next_stripable (true, false);
 }
 
 void
 Mixer_UI::select_prev_strip ()
 {
        deselect_all_strip_processors();
-       strips.sort (MixerStripSorter());
-
-       if (_selection.empty()) {
-               _selection.set (strips.back());
-               return;
-       }
-
-       bool select_me = false;
-
-       for (list<MixerStrip*>::reverse_iterator i = strips.rbegin(); i != strips.rend(); ++i) {
-
-               if (select_me) {
-                       _selection.set (*i);
-                       return;
-               }
-
-               if ((*i)->selected()) {
-                       select_me = true;
-               }
-       }
-
-       _selection.set (strips.back());
+       _session->selection().select_prev_stripable (true, false);
 }
 
 void