diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2012-02-07 18:27:08 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2012-02-07 18:27:08 +0400 |
commit | 4cb9c2db865c94c2c76ab0a8f0189e7fb30c7e5f (patch) | |
tree | f982c08707fbe2767c65bab42078879cf5996f13 /source/blender/editors | |
parent | f282f39f538af7338671abf687a034702e1aea4f (diff) |
Fix #30052: VSE: metastrips don't move with Extend (E)
Issue was caused by transformation tools weren't taking metastrip clips into
account, so strip inside of merastrips are placedon different from metastrip side
of time cursor, extension happened in unexcpected way.
Diffstat (limited to 'source/blender/editors')
-rw-r--r-- | source/blender/editors/transform/transform_conversions.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c index 86b5ab9421b..fe244fbdafa 100644 --- a/source/blender/editors/transform/transform_conversions.c +++ b/source/blender/editors/transform/transform_conversions.c @@ -3805,8 +3805,8 @@ static void SeqTransInfo(TransInfo *t, Sequence *seq, int *recursive, int *count Scene * scene= t->scene; int cfra= CFRA; - int left= seq_tx_get_final_left(seq, 0); - int right= seq_tx_get_final_right(seq, 0); + int left= seq_tx_get_final_left(seq, 1); + int right= seq_tx_get_final_right(seq, 1); if (seq->depth == 0 && ((seq->flag & SELECT) == 0 || (seq->flag & SEQ_LOCK))) { *recursive= 0; @@ -3906,7 +3906,7 @@ static void SeqTransInfo(TransInfo *t, Sequence *seq, int *recursive, int *count -static int SeqTransCount(TransInfo *t, ListBase *seqbase, int depth) +static int SeqTransCount(TransInfo *t, Sequence *parent, ListBase *seqbase, int depth) { Sequence *seq; int tot= 0, recursive, count, flag; @@ -3914,11 +3914,15 @@ static int SeqTransCount(TransInfo *t, ListBase *seqbase, int depth) for (seq= seqbase->first; seq; seq= seq->next) { seq->depth= depth; + /* seq->tmp is used by seq_tx_get_final_{left,right} to check sequence's range and clamp to it if needed. + * it's first place where digging into sequences tree, so store link to parent here */ + seq->tmp = parent; + SeqTransInfo(t, seq, &recursive, &count, &flag); /* ignore the flag */ tot += count; if (recursive) { - tot += SeqTransCount(t, &seq->seqbase, depth+1); + tot += SeqTransCount(t, seq, &seq->seqbase, depth+1); } } @@ -4216,7 +4220,7 @@ static void createTransSeqData(bContext *C, TransInfo *t) } #endif - count = SeqTransCount(t, ed->seqbasep, 0); + count = SeqTransCount(t, NULL, ed->seqbasep, 0); /* allocate memory for data */ t->total= count; |