Revision: 41934
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=41934
Author:   mont29
Date:     2011-11-16 20:03:54 +0000 (Wed, 16 Nov 2011)
Log Message:
-----------
Fix [#29190] VSE bugs.

Only real bug was, that effect strips' start frame and length were editable. 
Made all four frame properties readonly on RNA level for those kind of strips 
(those for which get_sequence_effect_num_inputs returns a non-null value).

Also fixed the tooltip of frame_final_duration.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/sequencer.c
    trunk/blender/source/blender/makesrna/intern/rna_sequencer.c

Modified: trunk/blender/source/blender/blenkernel/intern/sequencer.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/sequencer.c  2011-11-16 
19:57:20 UTC (rev 41933)
+++ trunk/blender/source/blender/blenkernel/intern/sequencer.c  2011-11-16 
20:03:54 UTC (rev 41934)
@@ -594,6 +594,9 @@
                // seq->enddisp= MIN2(seq->seq1->enddisp, seq->seq2->enddisp);
 
                if (seq->seq1) {
+                       /* XXX These resets should not be necessary, but users 
used to be able to
+                        *     edit effect's length, leading to strange 
results. See #29190. */
+                       seq->startofs = seq->endofs = seq->startstill = 
seq->endstill = 0;
                        seq->start= seq->startdisp= MAX3(seq->seq1->startdisp, 
seq->seq2->startdisp, seq->seq3->startdisp);
                        seq->enddisp= MIN3(seq->seq1->enddisp, 
seq->seq2->enddisp, seq->seq3->enddisp);
                        /* we cant help if strips don't overlap, it wont give 
useful results.

Modified: trunk/blender/source/blender/makesrna/intern/rna_sequencer.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_sequencer.c        
2011-11-16 19:57:20 UTC (rev 41933)
+++ trunk/blender/source/blender/makesrna/intern/rna_sequencer.c        
2011-11-16 20:03:54 UTC (rev 41934)
@@ -191,6 +191,13 @@
        return seq_tx_get_final_right(seq, 0)-seq_tx_get_final_left(seq, 0);
 }
 
+static int rna_Sequence_frame_editable(PointerRNA *ptr)
+{
+       Sequence *seq = (Sequence*)ptr->data;
+       /* Effect sequences' start frame and length must be readonly! */
+       return (get_sequence_effect_num_inputs(seq->type))? 0: PROP_EDITABLE;
+}
+
 static void rna_Sequence_channel_set(PointerRNA *ptr, int value)
 {
        Sequence *seq= (Sequence*)ptr->data;
@@ -1025,8 +1032,9 @@
        prop= RNA_def_property(srna, "frame_final_duration", PROP_INT, 
PROP_TIME);
        RNA_def_property_range(prop, 1, MAXFRAME);
        RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
-       RNA_def_property_ui_text(prop, "Length", "The length of the contents of 
this strip before the handles are applied");
+       RNA_def_property_ui_text(prop, "Length", "The length of the contents of 
this strip after the handles are applied");
        RNA_def_property_int_funcs(prop, "rna_Sequence_frame_length_get", 
"rna_Sequence_frame_length_set",NULL);
+       RNA_def_property_editable_func(prop, "rna_Sequence_frame_editable");
        RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, 
"rna_Sequence_update");
 
        prop= RNA_def_property(srna, "frame_duration", PROP_INT, PROP_TIME);
@@ -1040,6 +1048,7 @@
        RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
        RNA_def_property_ui_text(prop, "Start Frame", "");
        RNA_def_property_int_funcs(prop, NULL, 
"rna_Sequence_start_frame_set",NULL); // overlap tests and calc_seq_disp
+       RNA_def_property_editable_func(prop, "rna_Sequence_frame_editable");
        RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, 
"rna_Sequence_update");
        
        prop= RNA_def_property(srna, "frame_final_start", PROP_INT, PROP_TIME);
@@ -1047,6 +1056,7 @@
        RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
        RNA_def_property_ui_text(prop, "Start Frame", "Start frame displayed in 
the sequence editor after offsets are applied, setting this is equivalent to 
moving the handle, not the actual start frame");
        RNA_def_property_int_funcs(prop, NULL, 
"rna_Sequence_start_frame_final_set", NULL); // overlap tests and calc_seq_disp
+       RNA_def_property_editable_func(prop, "rna_Sequence_frame_editable");
        RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, 
"rna_Sequence_update");
 
        prop= RNA_def_property(srna, "frame_final_end", PROP_INT, PROP_TIME);
@@ -1054,6 +1064,7 @@
        RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
        RNA_def_property_ui_text(prop, "End Frame", "End frame displayed in the 
sequence editor after offsets are applied");
        RNA_def_property_int_funcs(prop, NULL, 
"rna_Sequence_end_frame_final_set", NULL); // overlap tests and calc_seq_disp
+       RNA_def_property_editable_func(prop, "rna_Sequence_frame_editable");
        RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, 
"rna_Sequence_update");
 
        prop= RNA_def_property(srna, "frame_offset_start", PROP_INT, PROP_TIME);

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

Reply via email to