mirror of
https://github.com/Ardour/ardour.git
synced 2026-01-03 20:29:35 +01:00
[Summary] When range sellection covers multiple regions all of them will be processed by range drag
This commit is contained in:
parent
a1d4529776
commit
048d03ecd8
5 changed files with 84 additions and 136 deletions
|
|
@ -1434,8 +1434,10 @@ RouteTimeAxisView::fade_range (TimeSelection& selection)
|
|||
}
|
||||
|
||||
void
|
||||
RouteTimeAxisView::cut_range (ARDOUR::AudioRange& range)
|
||||
RouteTimeAxisView::cut_copy_range (Selection& selection, bool copy, Selection& new_items)
|
||||
{
|
||||
new_items.clear();
|
||||
|
||||
boost::shared_ptr<Playlist> what_we_got;
|
||||
boost::shared_ptr<Track> tr = track ();
|
||||
boost::shared_ptr<Playlist> playlist;
|
||||
|
|
@ -1447,28 +1449,32 @@ RouteTimeAxisView::cut_range (ARDOUR::AudioRange& range)
|
|||
|
||||
playlist = tr->playlist();
|
||||
|
||||
float const speed = tr->speed();
|
||||
if (speed != 1.0f) {
|
||||
range.start = session_frame_to_track_frame(range.start, speed);
|
||||
range.end = session_frame_to_track_frame(range.end, speed);
|
||||
}
|
||||
TimeSelection time (selection.time);
|
||||
float const speed = tr->speed();
|
||||
if (speed != 1.0f) {
|
||||
for (TimeSelection::iterator i = time.begin(); i != time.end(); ++i) {
|
||||
(*i).start = session_frame_to_track_frame((*i).start, speed);
|
||||
(*i).end = session_frame_to_track_frame((*i).end, speed);
|
||||
}
|
||||
}
|
||||
|
||||
playlist->clear_changes ();
|
||||
playlist->clear_owned_changes ();
|
||||
|
||||
std::list<AudioRange> audio_ranges;
|
||||
audio_ranges.push_back(range);
|
||||
if ((what_we_got = playlist->cut (audio_ranges)) != 0) {
|
||||
_editor.get_cut_buffer().set (what_we_got);
|
||||
if (Config->get_edit_mode() == Ripple)
|
||||
playlist->ripple(range.start, -range.length(), NULL);
|
||||
// no need to exclude any regions from rippling here
|
||||
if (copy) {
|
||||
|
||||
vector<Command*> cmds;
|
||||
playlist->rdiff (cmds);
|
||||
_session->add_commands (cmds);
|
||||
if ((what_we_got = playlist->copy (time)) != 0) {
|
||||
new_items.set (what_we_got);
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
if ((what_we_got = playlist->cut (time)) != 0) {
|
||||
new_items.set (what_we_got);
|
||||
if (Config->get_edit_mode() == Ripple)
|
||||
playlist->ripple(time.start(), -time.length(), NULL);
|
||||
}
|
||||
|
||||
_session->add_command (new StatefulDiffCommand (playlist));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue