From 2674d284e2703f33dc4370eb65efd2f79421e09d Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Sat, 6 Apr 2019 16:36:40 +1100 Subject: [PATCH] fixed ripple deleting empty space --- panels/timeline.cpp | 11 +++++++---- timeline/sequence.cpp | 10 +++++++--- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/panels/timeline.cpp b/panels/timeline.cpp index 23109ebff..fab6aac7f 100644 --- a/panels/timeline.cpp +++ b/panels/timeline.cpp @@ -638,23 +638,26 @@ void Timeline::ripple_delete() { ComboAction* ca = new ComboAction(); sequence_->DeleteAreas(ca, selections, true, true); olive::undo_stack.push(ca); + repaint_timeline(); } else if (olive::config.hover_focus && get_focused_panel() == this) { - ComboAction* ca = new ComboAction(); - sequence_->RippleDeleteEmptySpace(ca, cursor_track, cursor_frame); - olive::undo_stack.push(ca); + ripple_delete_empty_space(); } } - repaint_timeline(); + } void Timeline::ripple_delete_empty_space() { if (sequence_ != nullptr) { + ComboAction* ca = new ComboAction(); + sequence_->RippleDeleteEmptySpace(ca, cursor_track, cursor_frame); + olive::undo_stack.push(ca); + repaint_timeline(); } } diff --git a/timeline/sequence.cpp b/timeline/sequence.cpp index c47e2fb6b..5ac286673 100644 --- a/timeline/sequence.cpp +++ b/timeline/sequence.cpp @@ -801,11 +801,11 @@ void Sequence::RippleDeleteEmptySpace(ComboAction* ca, Track* track, long point) return; } - if (c->timeline_out() < point) { + if (c->timeline_out() <= point) { ripple_start = qMin(c->timeline_out(), ripple_start); - } else if (c->timeline_in() > point) { + } else if (c->timeline_in() >= point) { ripple_end = qMin(c->timeline_in(), ripple_end); @@ -815,7 +815,11 @@ void Sequence::RippleDeleteEmptySpace(ComboAction* ca, Track* track, long point) // We now know the maximum ripple we could do to clear this empty space, but we need to ensure it won't cause // overlaps of clips in other tracks - RippleDeleteArea(ca, point, ripple_end - ripple_start); + if (ripple_start == ripple_end) { + return; + } + + RippleDeleteArea(ca, point, ripple_start - ripple_end); } void Sequence::RippleDeleteArea(ComboAction* ca, long ripple_point, long ripple_length) {