Revision: 23941
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=23941
Author:   campbellbarton
Date:     2009-10-19 12:37:50 +0200 (Mon, 19 Oct 2009)

Log Message:
-----------
fix for bug where moving strips that are next to eachother would detect invalid 
overlaps
first update strips, then check overlap in a second loop

Modified Paths:
--------------
    trunk/blender/source/blender/editors/transform/transform_conversions.c

Modified: trunk/blender/source/blender/editors/transform/transform_conversions.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform_conversions.c      
2009-10-19 10:10:05 UTC (rev 23940)
+++ trunk/blender/source/blender/editors/transform/transform_conversions.c      
2009-10-19 10:37:50 UTC (rev 23941)
@@ -2325,8 +2325,8 @@
 {
        ListBase *seqbasep= seq_give_editing(t->scene, FALSE)->seqbasep; /* 
Editing null check alredy done */
        int a, new_frame;
-       TransData *td= t->data;
-       TransData2D *td2d= t->data2d;
+       TransData *td= NULL;
+       TransData2D *td2d= NULL;
        TransDataSeq *tdsq= NULL;
        Sequence *seq;
 
@@ -2338,7 +2338,7 @@
        Sequence *seq_prev= NULL;
 
        /* flush to 2d vector from internally used 3d vector */
-       for(a=0; a<t->total; a++, td++, td2d++) {
+       for(a=0, td= t->data, td2d= t->data2d; a<t->total; a++, td++, td2d++) {
 
                tdsq= (TransDataSeq *)td->extra;
                seq= tdsq->seq;
@@ -2372,16 +2372,30 @@
                                 * children are ALWAYS transformed first
                                 * so we dont need to do this in another loop. 
*/
                                calc_sequence(seq);
+                       }
+                       else {
+                               calc_sequence_disp(seq);
+                       }
+               }
+               seq_prev= seq;
+       }
 
+       /* need to do the overlap check in a new loop otherwise adjacent strips
+        * will not be updated and we'll get false positives */
+       seq_prev= NULL;
+       for(a=0, td= t->data, td2d= t->data2d; a<t->total; a++, td++, td2d++) {
+
+               tdsq= (TransDataSeq *)td->extra;
+               seq= tdsq->seq;
+
+               if (seq != seq_prev) {
+                       if(seq->depth==0) {
                                /* test overlap, displayes red outline */
                                seq->flag &= ~SEQ_OVERLAP;
                                if( seq_test_overlap(seqbasep, seq) ) {
                                        seq->flag |= SEQ_OVERLAP;
                                }
                        }
-                       else {
-                               calc_sequence_disp(seq);
-                       }
                }
                seq_prev= seq;
        }


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to