diff options
author | Martin Poirier <theeth@yahoo.com> | 2009-03-28 19:45:22 +0300 |
---|---|---|
committer | Martin Poirier <theeth@yahoo.com> | 2009-03-28 19:45:22 +0300 |
commit | a5f32714f77ed2ba7b42163fb55a3dfed6bd29af (patch) | |
tree | 26cc5b510b3342967da47ded238fa88856244e80 /source/blender/editors | |
parent | ce6c77b5696eeee241b452bc9496c4edecee1deb (diff) |
Remove exception for sequencer in after_trans by rewriting the update code. Please don't start adding exceptions like that in transform without asking first.
Diffstat (limited to 'source/blender/editors')
-rw-r--r-- | source/blender/editors/transform/transform_conversions.c | 33 | ||||
-rw-r--r-- | source/blender/editors/transform/transform_generics.c | 2 |
2 files changed, 11 insertions, 24 deletions
diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c index 376ce2af7a0..244ba5bf434 100644 --- a/source/blender/editors/transform/transform_conversions.c +++ b/source/blender/editors/transform/transform_conversions.c @@ -4384,34 +4384,21 @@ void special_aftertrans_update(TransInfo *t) Editing *ed= seq_give_editing(t->scene, FALSE); if (ed && !cancelled) { ListBase *seqbasep= ed->seqbasep; - int a; - TransData *td= t->data; - TransDataSeq *tdsq= NULL; + int machine, max_machine = 0; Sequence *seq; + /* update in order so we always move bottom strips first */ + for(seq= seqbasep->first; seq; seq= seq->next) { + max_machine = MAX2(max_machine, seq->machine); + } - - /* prevent updating the same seq twice - * if the transdata order is changed this will mess up - * but so will TransDataSeq */ - Sequence *seq_prev= NULL; - - /* flush to 2d vector from internally used 3d vector */ - for(a=0; a<t->total; a++, td++) { - - tdsq= (TransDataSeq *)td->extra; - seq= tdsq->seq; - - if (seq != seq_prev) { - if(seq->depth==0) { - if (seq->flag & SEQ_OVERLAP) { - shuffle_seq(seqbasep, seq); - } + for (machine = 0; machine <= max_machine; machine++) + { + for(seq= seqbasep->first; seq; seq= seq->next) { + if (seq->machine == machine && seq->depth==0 && seq->flag & SEQ_OVERLAP) { + shuffle_seq(seqbasep, seq); } } - - /* as last: */ - seq_prev= seq; } for(seq= seqbasep->first; seq; seq= seq->next) { diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c index 574a045bc86..2bc177c4330 100644 --- a/source/blender/editors/transform/transform_generics.c +++ b/source/blender/editors/transform/transform_generics.c @@ -841,7 +841,7 @@ void postTrans (TransInfo *t) } /* postTrans can be called when nothing is selected, so data is NULL already */ - if (t->data && (t->spacetype != SPACE_SEQ)) { // XXX SEQ Exception is needed because of special_aftertrans_update using t->data + if (t->data) { int a; /* since ipokeys are optional on objects, we mallocced them per trans-data */ |