From 840fc0f212649579a67d1d749e64688092e30dd6 Mon Sep 17 00:00:00 2001 From: itsmattkc <34096995+itsmattkc@users.noreply.github.com> Date: Mon, 24 Oct 2022 10:45:48 -0700 Subject: [PATCH] timeline: when deleting all gaps, switch to a ripple delete --- app/widget/timelinewidget/timelinewidget.cpp | 21 ++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/app/widget/timelinewidget/timelinewidget.cpp b/app/widget/timelinewidget/timelinewidget.cpp index 1bfea94a2..cf94883c1 100644 --- a/app/widget/timelinewidget/timelinewidget.cpp +++ b/app/widget/timelinewidget/timelinewidget.cpp @@ -452,21 +452,22 @@ void TimelineWidget::DeleteSelected(bool ripple) } QVector selected_list = GetSelectedBlocks(); - QVector blocks_to_delete; - - foreach (Block* b, selected_list) { - blocks_to_delete.append(b); - } // No-op if nothing is selected - if (blocks_to_delete.isEmpty()) { + if (selected_list.isEmpty()) { return; } QVector clips_to_delete; QVector transitions_to_delete; - foreach (Block* b, blocks_to_delete) { + bool all_gaps = true; + + foreach (Block* b, selected_list) { + if (!dynamic_cast(b)) { + all_gaps = false; + } + if (dynamic_cast(b)) { clips_to_delete.append(b); } else if (dynamic_cast(b)) { @@ -474,6 +475,10 @@ void TimelineWidget::DeleteSelected(bool ripple) } } + if (all_gaps) { + ripple = true; + } + MultiUndoCommand* command = new MultiUndoCommand(); // Remove all selections @@ -498,7 +503,7 @@ void TimelineWidget::DeleteSelected(bool ripple) if (ripple) { TimelineRippleDeleteGapsAtRegionsCommand::RangeList range_list; - foreach (Block* b, blocks_to_delete) { + foreach (Block* b, selected_list) { range_list.append({b->track(), b->range()}); new_playhead = qMin(new_playhead, b->in()); }