From 932eefad9fee118695adc1cf661c43b2067ceeea Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 24 Aug 2018 14:03:34 -0400 Subject: use new CoreSelection methods in editor and mixer --- gtk2_ardour/editor_ops.cc | 81 +++++------------------------------------------ gtk2_ardour/mixer_ui.cc | 48 ++-------------------------- 2 files changed, 11 insertions(+), 118 deletions(-) (limited to 'gtk2_ardour') diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index 3e757297a9..23b3d239d7 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -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 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(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(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)); diff --git a/gtk2_ardour/mixer_ui.cc b/gtk2_ardour/mixer_ui.cc index 6f11e59900..b9b9eccaca 100644 --- a/gtk2_ardour/mixer_ui.cc +++ b/gtk2_ardour/mixer_ui.cc @@ -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::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::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 -- cgit v1.2.3