Fix #35182: VSE - speed control Trim duration (soft) end reset to 0
authorSergey Sharybin <sergey.vfx@gmail.com>
Thu, 2 May 2013 08:25:22 +0000 (08:25 +0000)
committerSergey Sharybin <sergey.vfx@gmail.com>
Thu, 2 May 2013 08:25:22 +0000 (08:25 +0000)
Was a regression in rev53509, whic hallowed manual edit of properties
which weren't supposed to be editing manually.

Added the same effects length update as in trnaslation code, so now
updating strip frames from py/interface will keep things consistent.

source/blender/makesrna/intern/rna_sequencer.c

index e522b73039bbef599e71faa159e8c96c04710b87..64b8ef17e89f1fa469bb31e4d0ac15fd1aa4009d 100644 (file)
@@ -161,8 +161,20 @@ static void do_sequence_frame_change_update(Scene *scene, Sequence *seq)
 {
        Editing *ed = BKE_sequencer_editing_get(scene, FALSE);
        ListBase *seqbase = BKE_sequence_seqbase(&ed->seqbase, seq);
+       Sequence *tseq;
        BKE_sequence_calc_disp(scene, seq);
 
+       /* ensure effects are always fit in length to their input */
+
+       /* TODO(sergey): probably could be optimized.
+        *               in terms skipping update of non-changing strips
+        */
+       for (tseq = seqbase->first; tseq; tseq = tseq->next) {
+               if (tseq->seq1 || tseq->seq2 || tseq->seq3) {
+                       BKE_sequence_calc(scene, tseq);
+               }
+       }
+
        if (BKE_sequence_test_overlap(seqbase, seq)) {
                BKE_sequence_base_shuffle(seqbase, seq, scene); /* XXX - BROKEN!, uses context seqbasep */
        }
@@ -1460,14 +1472,14 @@ static void rna_def_sequence(BlenderRNA *brna)
 //     RNA_def_property_clear_flag(prop, PROP_EDITABLE); /* overlap tests */
        RNA_def_property_range(prop, 0, MAXFRAME);
        RNA_def_property_ui_text(prop, "Start Still", "");
-       RNA_def_property_update(prop, NC_SCENE | ND_SEQUENCER, "rna_Sequence_update");
+       RNA_def_property_update(prop, NC_SCENE | ND_SEQUENCER, "rna_Sequence_frame_change_update");
        
        prop = RNA_def_property(srna, "frame_still_end", PROP_INT, PROP_TIME);
        RNA_def_property_int_sdna(prop, NULL, "endstill");
 //     RNA_def_property_clear_flag(prop, PROP_EDITABLE); /* overlap tests */
        RNA_def_property_range(prop, 0, MAXFRAME);
        RNA_def_property_ui_text(prop, "End Still", "");
-       RNA_def_property_update(prop, NC_SCENE | ND_SEQUENCER, "rna_Sequence_update");
+       RNA_def_property_update(prop, NC_SCENE | ND_SEQUENCER, "rna_Sequence_frame_change_update");
        
        prop = RNA_def_property(srna, "channel", PROP_INT, PROP_UNSIGNED);
        RNA_def_property_int_sdna(prop, NULL, "machine");