From e1aa654c4a110768941c3628fd9b1878d50b0055 Mon Sep 17 00:00:00 2001 From: Falk David Date: Fri, 18 Aug 2023 15:38:23 +0200 Subject: [PATCH 1/2] Cleanup: Anim: Replace use of `T_AUTOMERGE` In the animation transform code, `T_AUTOMERGE` was used to indicate that the duplicated keys need to be merged. In perparation of #111051, this no longer makes much sense because in grease pencil we cannot have two keys in the same channel at the same frame. This PR replaces the `T_AUTOMERGE` flag in the animation code to `T_DUPLICATED_KEYS` to indicate that the transform is being called with duplicated keyframes. --- source/blender/editors/space_action/action_ops.cc | 2 +- source/blender/editors/space_graph/graph_ops.cc | 2 +- source/blender/editors/transform/transform.hh | 3 +++ .../blender/editors/transform/transform_convert_action.cc | 2 +- .../blender/editors/transform/transform_convert_graph.cc | 2 +- source/blender/editors/transform/transform_generics.cc | 8 ++++++++ source/blender/editors/transform/transform_ops.cc | 3 +++ 7 files changed, 18 insertions(+), 4 deletions(-) diff --git a/source/blender/editors/space_action/action_ops.cc b/source/blender/editors/space_action/action_ops.cc index c9915c939e1..e1d5651f6f6 100644 --- a/source/blender/editors/space_action/action_ops.cc +++ b/source/blender/editors/space_action/action_ops.cc @@ -85,7 +85,7 @@ void ED_operatormacros_action() WM_operatortype_macro_define(ot, "ACTION_OT_duplicate"); otmacro = WM_operatortype_macro_define(ot, "TRANSFORM_OT_transform"); RNA_enum_set(otmacro->ptr, "mode", TFM_TIME_TRANSLATE); - RNA_boolean_set(otmacro->ptr, "use_automerge_and_split", true); + RNA_boolean_set(otmacro->ptr, "use_duplicated_keys", true); RNA_boolean_set(otmacro->ptr, "use_proportional_edit", false); } diff --git a/source/blender/editors/space_graph/graph_ops.cc b/source/blender/editors/space_graph/graph_ops.cc index cf26830294e..9ceb0ddaaa5 100644 --- a/source/blender/editors/space_graph/graph_ops.cc +++ b/source/blender/editors/space_graph/graph_ops.cc @@ -509,7 +509,7 @@ void ED_operatormacros_graph() OPTYPE_UNDO | OPTYPE_REGISTER); WM_operatortype_macro_define(ot, "GRAPH_OT_duplicate"); otmacro = WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate"); - RNA_boolean_set(otmacro->ptr, "use_automerge_and_split", true); + RNA_boolean_set(otmacro->ptr, "use_duplicated_keys", true); RNA_boolean_set(otmacro->ptr, "use_proportional_edit", false); } diff --git a/source/blender/editors/transform/transform.hh b/source/blender/editors/transform/transform.hh index 197ecdb27d7..f7863ed76ef 100644 --- a/source/blender/editors/transform/transform.hh +++ b/source/blender/editors/transform/transform.hh @@ -147,6 +147,9 @@ enum eTFlag { T_NO_GIZMO = 1 << 24, T_DRAW_SNAP_SOURCE = 1 << 25, + + /** Special flag for when the transform code is called after keys have been duplicated. */ + T_DUPLICATED_KEYS = 1 << 26, }; ENUM_OPERATORS(eTFlag, T_NO_GIZMO); diff --git a/source/blender/editors/transform/transform_convert_action.cc b/source/blender/editors/transform/transform_convert_action.cc index 1a2d721fed7..a0214c013a7 100644 --- a/source/blender/editors/transform/transform_convert_action.cc +++ b/source/blender/editors/transform/transform_convert_action.cc @@ -1065,7 +1065,7 @@ static void special_aftertrans_update__actedit(bContext *C, TransInfo *t) bAnimContext ac; const bool canceled = (t->state == TRANS_CANCEL); - const bool duplicate = (t->flag & T_AUTOMERGE) != 0; + const bool duplicate = (t->flag & T_DUPLICATED_KEYS) != 0; /* initialize relevant anim-context 'context' data */ if (ANIM_animdata_get_context(C, &ac) == 0) { diff --git a/source/blender/editors/transform/transform_convert_graph.cc b/source/blender/editors/transform/transform_convert_graph.cc index feaa0a97305..8b2dc6513ff 100644 --- a/source/blender/editors/transform/transform_convert_graph.cc +++ b/source/blender/editors/transform/transform_convert_graph.cc @@ -1005,7 +1005,7 @@ static void special_aftertrans_update__graph(bContext *C, TransInfo *t) const bool use_handle = (sipo->flag & SIPO_NOHANDLES) == 0; const bool canceled = (t->state == TRANS_CANCEL); - const bool duplicate = (t->flag & T_AUTOMERGE) != 0; + const bool duplicate = (t->flag & T_DUPLICATED_KEYS) != 0; /* initialize relevant anim-context 'context' data */ if (ANIM_animdata_get_context(C, &ac) == 0) { diff --git a/source/blender/editors/transform/transform_generics.cc b/source/blender/editors/transform/transform_generics.cc index a0533ec0da1..99b7657a123 100644 --- a/source/blender/editors/transform/transform_generics.cc +++ b/source/blender/editors/transform/transform_generics.cc @@ -649,6 +649,14 @@ void initTransInfo(bContext *C, TransInfo *t, wmOperator *op, const wmEvent *eve } } + if (op && (prop = RNA_struct_find_property(op->ptr, "use_duplicated_keys")) && + RNA_property_is_set(op->ptr, prop)) + { + if (RNA_property_boolean_get(op->ptr, prop)) { + t->flag |= T_DUPLICATED_KEYS; + } + } + /* Mirror is not supported with proportional editing, turn it off. */ #if 0 if (t->flag & T_PROP_EDIT) { diff --git a/source/blender/editors/transform/transform_ops.cc b/source/blender/editors/transform/transform_ops.cc index 4aba381d77a..4c0204df1c1 100644 --- a/source/blender/editors/transform/transform_ops.cc +++ b/source/blender/editors/transform/transform_ops.cc @@ -767,6 +767,9 @@ void Transform_Properties(wmOperatorType *ot, int flags) prop = RNA_def_boolean( ot->srna, "remove_on_cancel", false, "Remove on Cancel", "Remove elements on cancel"); RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); + prop = RNA_def_boolean( + ot->srna, "use_duplicated_keys", false, "Duplicated Keys", "Transform duplicated keys"); + RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); } if (flags & P_CORRECT_UV) { -- 2.30.2 From 07a6a1015aa2bc405df97fa2e5c96d8e127f5bec Mon Sep 17 00:00:00 2001 From: Falk David Date: Mon, 11 Sep 2023 14:43:05 +0200 Subject: [PATCH 2/2] Rename explicitly to "keyframes" --- source/blender/editors/space_action/action_ops.cc | 2 +- source/blender/editors/space_graph/graph_ops.cc | 2 +- source/blender/editors/transform/transform.hh | 4 ++-- source/blender/editors/transform/transform_convert_action.cc | 2 +- source/blender/editors/transform/transform_convert_graph.cc | 2 +- source/blender/editors/transform/transform_generics.cc | 4 ++-- source/blender/editors/transform/transform_ops.cc | 2 +- 7 files changed, 9 insertions(+), 9 deletions(-) diff --git a/source/blender/editors/space_action/action_ops.cc b/source/blender/editors/space_action/action_ops.cc index e1d5651f6f6..73f21647ca1 100644 --- a/source/blender/editors/space_action/action_ops.cc +++ b/source/blender/editors/space_action/action_ops.cc @@ -85,7 +85,7 @@ void ED_operatormacros_action() WM_operatortype_macro_define(ot, "ACTION_OT_duplicate"); otmacro = WM_operatortype_macro_define(ot, "TRANSFORM_OT_transform"); RNA_enum_set(otmacro->ptr, "mode", TFM_TIME_TRANSLATE); - RNA_boolean_set(otmacro->ptr, "use_duplicated_keys", true); + RNA_boolean_set(otmacro->ptr, "use_duplicated_keyframes", true); RNA_boolean_set(otmacro->ptr, "use_proportional_edit", false); } diff --git a/source/blender/editors/space_graph/graph_ops.cc b/source/blender/editors/space_graph/graph_ops.cc index 9ceb0ddaaa5..02cc813237a 100644 --- a/source/blender/editors/space_graph/graph_ops.cc +++ b/source/blender/editors/space_graph/graph_ops.cc @@ -509,7 +509,7 @@ void ED_operatormacros_graph() OPTYPE_UNDO | OPTYPE_REGISTER); WM_operatortype_macro_define(ot, "GRAPH_OT_duplicate"); otmacro = WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate"); - RNA_boolean_set(otmacro->ptr, "use_duplicated_keys", true); + RNA_boolean_set(otmacro->ptr, "use_duplicated_keyframes", true); RNA_boolean_set(otmacro->ptr, "use_proportional_edit", false); } diff --git a/source/blender/editors/transform/transform.hh b/source/blender/editors/transform/transform.hh index f7863ed76ef..2680eceac97 100644 --- a/source/blender/editors/transform/transform.hh +++ b/source/blender/editors/transform/transform.hh @@ -149,9 +149,9 @@ enum eTFlag { T_DRAW_SNAP_SOURCE = 1 << 25, /** Special flag for when the transform code is called after keys have been duplicated. */ - T_DUPLICATED_KEYS = 1 << 26, + T_DUPLICATED_KEYFRAMES = 1 << 26, }; -ENUM_OPERATORS(eTFlag, T_NO_GIZMO); +ENUM_OPERATORS(eTFlag, T_DUPLICATED_KEYFRAMES); #define T_ALL_RESTRICTIONS (T_NO_CONSTRAINT | T_NULL_ONE) #define T_PROP_EDIT_ALL (T_PROP_EDIT | T_PROP_CONNECTED | T_PROP_PROJECTED) diff --git a/source/blender/editors/transform/transform_convert_action.cc b/source/blender/editors/transform/transform_convert_action.cc index a0214c013a7..922de50f509 100644 --- a/source/blender/editors/transform/transform_convert_action.cc +++ b/source/blender/editors/transform/transform_convert_action.cc @@ -1065,7 +1065,7 @@ static void special_aftertrans_update__actedit(bContext *C, TransInfo *t) bAnimContext ac; const bool canceled = (t->state == TRANS_CANCEL); - const bool duplicate = (t->flag & T_DUPLICATED_KEYS) != 0; + const bool duplicate = (t->flag & T_DUPLICATED_KEYFRAMES) != 0; /* initialize relevant anim-context 'context' data */ if (ANIM_animdata_get_context(C, &ac) == 0) { diff --git a/source/blender/editors/transform/transform_convert_graph.cc b/source/blender/editors/transform/transform_convert_graph.cc index 8b2dc6513ff..127b49c50ab 100644 --- a/source/blender/editors/transform/transform_convert_graph.cc +++ b/source/blender/editors/transform/transform_convert_graph.cc @@ -1005,7 +1005,7 @@ static void special_aftertrans_update__graph(bContext *C, TransInfo *t) const bool use_handle = (sipo->flag & SIPO_NOHANDLES) == 0; const bool canceled = (t->state == TRANS_CANCEL); - const bool duplicate = (t->flag & T_DUPLICATED_KEYS) != 0; + const bool duplicate = (t->flag & T_DUPLICATED_KEYFRAMES) != 0; /* initialize relevant anim-context 'context' data */ if (ANIM_animdata_get_context(C, &ac) == 0) { diff --git a/source/blender/editors/transform/transform_generics.cc b/source/blender/editors/transform/transform_generics.cc index 99b7657a123..e41ece6b39e 100644 --- a/source/blender/editors/transform/transform_generics.cc +++ b/source/blender/editors/transform/transform_generics.cc @@ -649,11 +649,11 @@ void initTransInfo(bContext *C, TransInfo *t, wmOperator *op, const wmEvent *eve } } - if (op && (prop = RNA_struct_find_property(op->ptr, "use_duplicated_keys")) && + if (op && (prop = RNA_struct_find_property(op->ptr, "use_duplicated_keyframes")) && RNA_property_is_set(op->ptr, prop)) { if (RNA_property_boolean_get(op->ptr, prop)) { - t->flag |= T_DUPLICATED_KEYS; + t->flag |= T_DUPLICATED_KEYFRAMES; } } diff --git a/source/blender/editors/transform/transform_ops.cc b/source/blender/editors/transform/transform_ops.cc index 4c0204df1c1..56df44838e4 100644 --- a/source/blender/editors/transform/transform_ops.cc +++ b/source/blender/editors/transform/transform_ops.cc @@ -768,7 +768,7 @@ void Transform_Properties(wmOperatorType *ot, int flags) ot->srna, "remove_on_cancel", false, "Remove on Cancel", "Remove elements on cancel"); RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); prop = RNA_def_boolean( - ot->srna, "use_duplicated_keys", false, "Duplicated Keys", "Transform duplicated keys"); + ot->srna, "use_duplicated_keyframes", false, "Duplicated Keyframes", "Transform duplicated keyframes"); RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); } -- 2.30.2