fix for duplicating metastrips, unique names and animation data.
This commit is contained in:
@@ -3881,7 +3881,6 @@ void seq_offset_animdata(Scene *scene, Sequence *seq, int ofs)
|
||||
void seq_dupe_animdata(Scene *scene, char *name_from, char *name_to)
|
||||
{
|
||||
char str_from[32];
|
||||
char str_to[32];
|
||||
FCurve *fcu;
|
||||
FCurve *fcu_last;
|
||||
FCurve *fcu_cpy;
|
||||
@@ -3891,7 +3890,6 @@ void seq_dupe_animdata(Scene *scene, char *name_from, char *name_to)
|
||||
return;
|
||||
|
||||
sprintf(str_from, "[\"%s\"]", name_from);
|
||||
sprintf(str_to, "[\"%s\"]", name_to);
|
||||
|
||||
fcu_last= scene->adt->action->curves.last;
|
||||
|
||||
@@ -4265,10 +4263,8 @@ static Sequence *seq_dupli(struct Scene *scene, Sequence *seq, int dupe_flag)
|
||||
" now...\n");
|
||||
}
|
||||
|
||||
if(dupe_flag & SEQ_DUPE_UNIQUE_NAME) {
|
||||
if(dupe_flag & SEQ_DUPE_UNIQUE_NAME)
|
||||
seqbase_unique_name_recursive(&scene->ed->seqbase, seqn);
|
||||
printf("%s %s\n", seqn->name+2, seq->name+2);
|
||||
}
|
||||
|
||||
if(dupe_flag & SEQ_DUPE_ANIM)
|
||||
seq_dupe_animdata(scene, seq->name+2, seqn->name+2);
|
||||
|
||||
@@ -1588,6 +1588,18 @@ void SEQUENCER_OT_cut(struct wmOperatorType *ot)
|
||||
}
|
||||
|
||||
/* duplicate operator */
|
||||
static int apply_unique_name_cb(Sequence *seq, void *arg_pt)
|
||||
{
|
||||
Scene *scene= (Scene *)arg_pt;
|
||||
char name[sizeof(seq->name)-2];
|
||||
|
||||
strcpy(name, seq->name+2);
|
||||
seqbase_unique_name_recursive(&scene->ed->seqbase, seq);
|
||||
seq_dupe_animdata(scene, name, seq->name+2);
|
||||
return 1;
|
||||
|
||||
}
|
||||
|
||||
static int sequencer_add_duplicate_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
Scene *scene= CTX_data_scene(C);
|
||||
@@ -1605,12 +1617,8 @@ static int sequencer_add_duplicate_exec(bContext *C, wmOperator *op)
|
||||
/* rely on the nseqbase list being added at the end */
|
||||
addlisttolist(ed->seqbasep, &nseqbase);
|
||||
|
||||
for( ; seq; seq= seq->next) {
|
||||
char name[sizeof(seq->name)-2];
|
||||
strcpy(name, seq->name+2);
|
||||
seqbase_unique_name_recursive(&ed->seqbase, seq);
|
||||
seq_dupe_animdata(scene, name, seq->name+2);
|
||||
}
|
||||
for( ; seq; seq= seq->next)
|
||||
seq_recursive_apply(seq, apply_unique_name_cb, scene);
|
||||
|
||||
WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene);
|
||||
return OPERATOR_FINISHED;
|
||||
|
||||
Reference in New Issue
Block a user