Fix: VSE Slip Strips operator doesn't move effect strips inside of a meta strip. #113200

Merged
Richard Antalik merged 4 commits from ok_what/blender:vse-slip-effect-bug into main 2023-12-21 18:05:07 +01:00
2 changed files with 7 additions and 10 deletions
Showing only changes of commit 693dfa3495 - Show all commits

View File

@ -558,7 +558,7 @@ static int sequencer_slip_invoke(bContext *C, wmOperator *op, const wmEvent *eve
return OPERATOR_RUNNING_MODAL;
}
static void sequencer_slip_recursively(Scene *scene, SlipData *data, int delta)
static void sequencer_slip_strips(Scene *scene, SlipData *data, int delta)

I guess this function is not recursive anymore?

I guess this function is not recursive anymore?
{
for (int i = data->num_seq - 1; i >= 0; i--) {
Sequence *seq = data->seq_array[i];
@ -625,7 +625,7 @@ static int sequencer_slip_exec(bContext *C, wmOperator *op)
slip_add_sequences(ed->seqbasep, data->seq_array);
sequencer_slip_apply_limits(scene, data, &offset);
sequencer_slip_recursively(scene, data, offset);
sequencer_slip_strips(scene, data, offset);
MEM_freeN(data->seq_array);
MEM_freeN(data);
@ -672,7 +672,7 @@ static int sequencer_slip_modal(bContext *C, wmOperator *op, const wmEvent *even
RNA_int_set(op->ptr, "offset", offset);
sequencer_slip_recursively(scene, data, delta_offset);
sequencer_slip_strips(scene, data, delta_offset);
WM_event_add_notifier(C, NC_SCENE | ND_SEQUENCER, scene);
@ -705,7 +705,7 @@ static int sequencer_slip_modal(bContext *C, wmOperator *op, const wmEvent *even
RNA_int_set(op->ptr, "offset", offset);
sequencer_slip_recursively(scene, data, delta_offset);
sequencer_slip_strips(scene, data, delta_offset);
WM_event_add_notifier(C, NC_SCENE | ND_SEQUENCER, scene);
}
@ -729,7 +729,7 @@ static int sequencer_slip_modal(bContext *C, wmOperator *op, const wmEvent *even
case EVT_ESCKEY:
case RIGHTMOUSE: {
int offset = RNA_int_get(op->ptr, "offset");
sequencer_slip_recursively(scene, data, -offset);
sequencer_slip_strips(scene, data, -offset);
MEM_freeN(data->seq_array);
MEM_freeN(data);
@ -773,7 +773,7 @@ static int sequencer_slip_modal(bContext *C, wmOperator *op, const wmEvent *even
RNA_int_set(op->ptr, "offset", offset);
sequencer_slip_recursively(scene, data, delta_offset);
sequencer_slip_strips(scene, data, delta_offset);
WM_event_add_notifier(C, NC_SCENE | ND_SEQUENCER, scene);
}

View File

@ -601,10 +601,7 @@ static void seq_time_slip_strip_ex(const Scene *scene, Sequence *seq, int delta,
if (BLI_listbase_is_empty(&seq->seqbase)) {
return;
}
Sequence *seq_child;
for (seq_child = static_cast<Sequence *>(seq->seqbase.first); seq_child;
seq_child = seq_child->next)
{
LISTBASE_FOREACH (Sequence *, seq_child, &seq->seqbase) {
seq_time_slip_strip_ex(scene, seq_child, delta, true);
ok_what marked this conversation as resolved
Review

Please use LISTBASE_FOREACH macro

Please use `LISTBASE_FOREACH` macro
}
}