diff options
author | Richard Antalik <richardantalik@gmail.com> | 2021-05-19 00:28:00 +0300 |
---|---|---|
committer | Richard Antalik <richardantalik@gmail.com> | 2021-05-19 00:41:47 +0300 |
commit | f7a14c116c4de9a0ac2a07d7c6fa3097a018a668 (patch) | |
tree | 4ed17d176c10700f3b8e87276731ffa1fed80b38 /source/blender/editors/space_sequencer | |
parent | 748b5f025d74803e14364e4edb68f1c2c7ee5c99 (diff) |
VSE: Move whole strip chain to meta
Python API function Sequence.move_to_meta() did delete effect chain
when strip with effects was moved.
Use iterator API to query effect strips and move whole chain to meta.
Reviewed By: sergey
Differential Revision: https://developer.blender.org/D11206
Diffstat (limited to 'source/blender/editors/space_sequencer')
-rw-r--r-- | source/blender/editors/space_sequencer/sequencer_select.c | 33 |
1 files changed, 1 insertions, 32 deletions
diff --git a/source/blender/editors/space_sequencer/sequencer_select.c b/source/blender/editors/space_sequencer/sequencer_select.c index e08af8f0977..3128ec06b68 100644 --- a/source/blender/editors/space_sequencer/sequencer_select.c +++ b/source/blender/editors/space_sequencer/sequencer_select.c @@ -1621,37 +1621,6 @@ static bool select_grouped_time_overlap(Editing *ed, Sequence *actseq) return changed; } -/* Query all effect strips that are directly or indirectly connected to seq_reference. */ -static void query_strip_effect_chain(Sequence *seq_reference, - ListBase *seqbase, - SeqCollection *collection) -{ - if (!SEQ_collection_append_strip(seq_reference, collection)) { - return; /* Strip is already in set, so all effects connected to it are as well. */ - } - - /* Find all strips that seq_reference is connected to. */ - if (seq_reference->type & SEQ_TYPE_EFFECT) { - if (seq_reference->seq1) { - query_strip_effect_chain(seq_reference->seq1, seqbase, collection); - } - if (seq_reference->seq2) { - query_strip_effect_chain(seq_reference->seq2, seqbase, collection); - } - if (seq_reference->seq3) { - query_strip_effect_chain(seq_reference->seq3, seqbase, collection); - } - } - - /* Find all strips connected to seq_reference. */ - LISTBASE_FOREACH (Sequence *, seq_test, seqbase) { - if (seq_test->seq1 == seq_reference || seq_test->seq2 == seq_reference || - seq_test->seq3 == seq_reference) { - query_strip_effect_chain(seq_test, seqbase, collection); - } - } -} - /* Query strips that are in lower channel and intersect in time with seq_reference. */ static void query_lower_channel_strips(Sequence *seq_reference, ListBase *seqbase, @@ -1681,7 +1650,7 @@ static bool select_grouped_effect_link(Editing *ed, SeqCollection *collection = SEQ_query_selected_strips(seqbase); const int selected_strip_count = BLI_gset_len(collection->set); SEQ_collection_expand(seqbase, collection, query_lower_channel_strips); - SEQ_collection_expand(seqbase, collection, query_strip_effect_chain); + SEQ_collection_expand(seqbase, collection, SEQ_query_strip_effect_chain); /* Check if other strips will be affected. */ const bool changed = BLI_gset_len(collection->set) > selected_strip_count; |