From 4f58268f0853dcd7aebb11fda6d18d087f807ad6 Mon Sep 17 00:00:00 2001 From: itsmattkc <34096995+itsmattkc@users.noreply.github.com> Date: Mon, 8 Aug 2022 11:27:26 -0700 Subject: [PATCH] timeline: add exception to never splicing gaps --- app/widget/timelinewidget/undo/timelineundopointer.cpp | 2 +- app/widget/timelinewidget/undo/timelineundoripple.cpp | 3 ++- app/widget/timelinewidget/undo/timelineundoripple.h | 6 ++++++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/app/widget/timelinewidget/undo/timelineundopointer.cpp b/app/widget/timelinewidget/undo/timelineundopointer.cpp index f8b51ca4c..f46f5a47e 100644 --- a/app/widget/timelinewidget/undo/timelineundopointer.cpp +++ b/app/widget/timelinewidget/undo/timelineundopointer.cpp @@ -340,7 +340,7 @@ void TrackPlaceBlockCommand::redo() // Place the Block at this point if (!ripple_remove_command_) { ripple_remove_command_ = new TrackRippleRemoveAreaCommand(track, TimeRange(in_, in_ + insert_->length())); - + ripple_remove_command_->SetAllowSplittingGaps(true); } ripple_remove_command_->redo_now(); diff --git a/app/widget/timelinewidget/undo/timelineundoripple.cpp b/app/widget/timelinewidget/undo/timelineundoripple.cpp index 71550f64c..42ff4449e 100644 --- a/app/widget/timelinewidget/undo/timelineundoripple.cpp +++ b/app/widget/timelinewidget/undo/timelineundoripple.cpp @@ -30,6 +30,7 @@ namespace olive { TrackRippleRemoveAreaCommand::TrackRippleRemoveAreaCommand(Track* track, const TimeRange& range) : track_(track), range_(range), + allow_splitting_gaps_(false), splice_split_command_(nullptr) { trim_out_.block = nullptr; @@ -63,7 +64,7 @@ void TrackRippleRemoveAreaCommand::prepare() // If it's getting trimmed, determine if it's actually getting spliced if (first_block_is_out_trimmed && first_block_is_in_trimmed) { - if (dynamic_cast(first_block)) { + if (!allow_splitting_gaps_ && dynamic_cast(first_block)) { // As a rule, we don't split gaps, so we just treat it as a trim of the range requested trim_out_ = {first_block, first_block->length(), diff --git a/app/widget/timelinewidget/undo/timelineundoripple.h b/app/widget/timelinewidget/undo/timelineundoripple.h index 11e211575..bd17648cf 100644 --- a/app/widget/timelinewidget/undo/timelineundoripple.h +++ b/app/widget/timelinewidget/undo/timelineundoripple.h @@ -67,6 +67,11 @@ public: return nullptr; } + void SetAllowSplittingGaps(bool e) + { + allow_splitting_gaps_ = e; + } + protected: virtual void prepare() override; @@ -93,6 +98,7 @@ private: QVector removals_; TrimOperation trim_in_; Block* insert_previous_; + bool allow_splitting_gaps_; BlockSplitCommand* splice_split_command_; QVector remove_block_commands_;