diff options
author | Campbell Barton <ideasman42@gmail.com> | 2015-02-11 22:18:02 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2015-02-11 22:20:36 +0300 |
commit | 27b2ab8cf4ae9140ff53d812c142e7d65cbeee11 (patch) | |
tree | 867c540862befafc239b6160245ae7cb71400286 /source/blender/makesrna/intern/rna_sequencer.c | |
parent | 26d7ac507763100efa5a544730813d13139a6f84 (diff) |
Fix VSE strip channel skip overlapping strips
D1096 by @mangostaniko (with some edits)
Diffstat (limited to 'source/blender/makesrna/intern/rna_sequencer.c')
-rw-r--r-- | source/blender/makesrna/intern/rna_sequencer.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/source/blender/makesrna/intern/rna_sequencer.c b/source/blender/makesrna/intern/rna_sequencer.c index 927e77960d7..8ad7d313c1e 100644 --- a/source/blender/makesrna/intern/rna_sequencer.c +++ b/source/blender/makesrna/intern/rna_sequencer.c @@ -290,11 +290,14 @@ static void rna_Sequence_channel_set(PointerRNA *ptr, int value) Scene *scene = (Scene *)ptr->id.data; Editing *ed = BKE_sequencer_editing_get(scene, false); ListBase *seqbase = BKE_sequence_seqbase(&ed->seqbase, seq); - - seq->machine = value; + /* check channel increment or decrement */ + const int channel_delta = (value >= seq->machine) ? 1 : -1; + seq->machine = value; + if (BKE_sequence_test_overlap(seqbase, seq)) { - BKE_sequence_base_shuffle(seqbase, seq, scene); /* XXX - BROKEN!, uses context seqbasep */ + /* XXX - BROKEN!, uses context seqbasep */ + BKE_sequence_base_shuffle_ex(seqbase, seq, scene, channel_delta); } BKE_sequencer_sort(scene); } |