use new CoreSelection methods in editor and mixer
This commit is contained in:
parent
2d0416a016
commit
932eefad9f
@ -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));
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user