switch (op) {
case Delete:
if (playlist->cut (time) != 0) {
+ if (Config->get_edit_mode() == Ripple)
+ playlist->ripple(time.start(), -time.length(), NULL);
+ // no need to exclude any regions from rippling here
+
vector<Command*> cmds;
playlist->rdiff (cmds);
_session->add_commands (cmds);
case Cut:
if ((what_we_got = playlist->cut (time)) != 0) {
_editor.get_cut_buffer().add (what_we_got);
+ if (Config->get_edit_mode() == Ripple)
+ playlist->ripple(time.start(), -time.length(), NULL);
+ // no need to exclude any regions from rippling here
+
vector<Command*> cmds;
playlist->rdiff (cmds);
_session->add_commands (cmds);
case Clear:
if ((what_we_got = playlist->cut (time)) != 0) {
+ if (Config->get_edit_mode() == Ripple)
+ playlist->ripple(time.start(), -time.length(), NULL);
+ // no need to exclude any regions from rippling here
vector<Command*> cmds;
playlist->rdiff (cmds);
DEBUG_TRACE (DEBUG::CutNPaste, string_compose ("modified paste to %1\n", pos));
}
- pl->clear_changes ();
+ pl->clear_changes ();
+ if (Config->get_edit_mode() == Ripple) {
+ std::pair<framepos_t, framepos_t> extent = (*p)->get_extent();
+ framecnt_t amount = extent.second - extent.first;
+ pl->ripple(pos, amount * times, boost::shared_ptr<Region>());
+ }
pl->paste (*p, pos, times);
+
+ vector<Command*> cmds;
+ pl->rdiff (cmds);
+ _session->add_commands (cmds);
+
_session->add_command (new StatefulDiffCommand (pl));
return true;