Fix #134662: Video Sequencer: reset transforms ignores auto keyframing
Just call the appropriate autokeyframe functions when this operator changes StripTransform properties. Pull Request: https://projects.blender.org/blender/blender/pulls/134667
This commit is contained in:
committed by
Philipp Oeser
parent
d5c662a305
commit
3dc9211b8f
@@ -3238,20 +3238,47 @@ static int sequencer_strip_transform_clear_exec(bContext *C, wmOperator *op)
|
||||
const Editing *ed = SEQ_editing_get(scene);
|
||||
const int property = RNA_enum_get(op->ptr, "property");
|
||||
|
||||
const bool use_autokeyframe = blender::animrig::is_autokey_on(scene);
|
||||
const bool only_when_keyed = blender::animrig::is_keying_flag(scene,
|
||||
AUTOKEY_FLAG_INSERTAVAILABLE);
|
||||
|
||||
LISTBASE_FOREACH (Strip *, strip, ed->seqbasep) {
|
||||
if (strip->flag & SELECT && strip->type != STRIP_TYPE_SOUND_RAM) {
|
||||
StripTransform *transform = strip->data->transform;
|
||||
PropertyRNA *prop;
|
||||
PointerRNA ptr = RNA_pointer_create_discrete(&scene->id, &RNA_StripTransform, transform);
|
||||
switch (property) {
|
||||
case STRIP_TRANSFORM_POSITION:
|
||||
transform->xofs = 0;
|
||||
transform->yofs = 0;
|
||||
if (use_autokeyframe) {
|
||||
prop = RNA_struct_find_property(&ptr, "offset_x");
|
||||
blender::animrig::autokeyframe_property(
|
||||
C, scene, &ptr, prop, -1, scene->r.cfra, only_when_keyed);
|
||||
prop = RNA_struct_find_property(&ptr, "offset_y");
|
||||
blender::animrig::autokeyframe_property(
|
||||
C, scene, &ptr, prop, -1, scene->r.cfra, only_when_keyed);
|
||||
}
|
||||
break;
|
||||
case STRIP_TRANSFORM_SCALE:
|
||||
transform->scale_x = 1.0f;
|
||||
transform->scale_y = 1.0f;
|
||||
if (use_autokeyframe) {
|
||||
prop = RNA_struct_find_property(&ptr, "scale_x");
|
||||
blender::animrig::autokeyframe_property(
|
||||
C, scene, &ptr, prop, -1, scene->r.cfra, only_when_keyed);
|
||||
prop = RNA_struct_find_property(&ptr, "scale_y");
|
||||
blender::animrig::autokeyframe_property(
|
||||
C, scene, &ptr, prop, -1, scene->r.cfra, only_when_keyed);
|
||||
}
|
||||
break;
|
||||
case STRIP_TRANSFORM_ROTATION:
|
||||
transform->rotation = 0.0f;
|
||||
if (use_autokeyframe) {
|
||||
prop = RNA_struct_find_property(&ptr, "rotation");
|
||||
blender::animrig::autokeyframe_property(
|
||||
C, scene, &ptr, prop, -1, scene->r.cfra, only_when_keyed);
|
||||
}
|
||||
break;
|
||||
case STRIP_TRANSFORM_ALL:
|
||||
transform->xofs = 0;
|
||||
@@ -3259,6 +3286,23 @@ static int sequencer_strip_transform_clear_exec(bContext *C, wmOperator *op)
|
||||
transform->scale_x = 1.0f;
|
||||
transform->scale_y = 1.0f;
|
||||
transform->rotation = 0.0f;
|
||||
if (use_autokeyframe) {
|
||||
prop = RNA_struct_find_property(&ptr, "offset_x");
|
||||
blender::animrig::autokeyframe_property(
|
||||
C, scene, &ptr, prop, -1, scene->r.cfra, only_when_keyed);
|
||||
prop = RNA_struct_find_property(&ptr, "offset_y");
|
||||
blender::animrig::autokeyframe_property(
|
||||
C, scene, &ptr, prop, -1, scene->r.cfra, only_when_keyed);
|
||||
prop = RNA_struct_find_property(&ptr, "scale_x");
|
||||
blender::animrig::autokeyframe_property(
|
||||
C, scene, &ptr, prop, -1, scene->r.cfra, only_when_keyed);
|
||||
prop = RNA_struct_find_property(&ptr, "scale_y");
|
||||
blender::animrig::autokeyframe_property(
|
||||
C, scene, &ptr, prop, -1, scene->r.cfra, only_when_keyed);
|
||||
prop = RNA_struct_find_property(&ptr, "rotation");
|
||||
blender::animrig::autokeyframe_property(
|
||||
C, scene, &ptr, prop, -1, scene->r.cfra, only_when_keyed);
|
||||
}
|
||||
break;
|
||||
}
|
||||
SEQ_relations_invalidate_cache_preprocessed(scene, strip);
|
||||
|
||||
Reference in New Issue
Block a user