diff options
author | Ton Roosendaal <ton@blender.org> | 2011-03-04 19:02:42 +0300 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2011-03-04 19:02:42 +0300 |
commit | 7006038b02c797a5e485518b8137ea2738290528 (patch) | |
tree | 3c06460706d2ea546d0c13233adbb7c29d43e8f5 /source/blender/editors/space_graph | |
parent | 9834aea0318089f5cbf526c3b7997b795dcdd920 (diff) |
Bugfix #26317
Shift+D in graph editor was an operator calling internally an operator.
Better is to make it a Macro, then Undos and Esc work nicely.
Note for API users: the operator "graph.duplicate" will now just
copy the selection and not run transform. Nicer too :)
Diffstat (limited to 'source/blender/editors/space_graph')
-rw-r--r-- | source/blender/editors/space_graph/graph_edit.c | 3 | ||||
-rw-r--r-- | source/blender/editors/space_graph/graph_ops.c | 15 |
2 files changed, 14 insertions, 4 deletions
diff --git a/source/blender/editors/space_graph/graph_edit.c b/source/blender/editors/space_graph/graph_edit.c index c3a6ac7ce12..d3e53a11c10 100644 --- a/source/blender/editors/space_graph/graph_edit.c +++ b/source/blender/editors/space_graph/graph_edit.c @@ -781,9 +781,6 @@ static int graphkeys_duplicate_exec(bContext *C, wmOperator *UNUSED(op)) static int graphkeys_duplicate_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(event)) { graphkeys_duplicate_exec(C, op); - - RNA_int_set(op->ptr, "mode", TFM_TIME_DUPLICATE); - WM_operator_name_call(C, "TRANSFORM_OT_transform", WM_OP_INVOKE_REGION_WIN, op->ptr); return OPERATOR_FINISHED; } diff --git a/source/blender/editors/space_graph/graph_ops.c b/source/blender/editors/space_graph/graph_ops.c index 0c0cfbf2cf3..b1dae57b574 100644 --- a/source/blender/editors/space_graph/graph_ops.c +++ b/source/blender/editors/space_graph/graph_ops.c @@ -269,6 +269,19 @@ void graphedit_operatortypes(void) WM_operatortype_append(GRAPH_OT_fmodifier_paste); } +void ED_operatormacros_graph(void) +{ + wmOperatorType *ot; + wmOperatorTypeMacro *otmacro; + + ot= WM_operatortype_append_macro("GRAPH_OT_duplicate_move", "Duplicate", OPTYPE_UNDO|OPTYPE_REGISTER); + WM_operatortype_macro_define(ot, "GRAPH_OT_duplicate"); + otmacro= WM_operatortype_macro_define(ot, "TRANSFORM_OT_transform"); + RNA_int_set(otmacro->ptr, "mode", TFM_TIME_DUPLICATE); + +} + + /* ************************** registration - keymaps **********************************/ static void graphedit_keymap_keyframes (wmKeyConfig *keyconf, wmKeyMap *keymap) @@ -361,7 +374,7 @@ static void graphedit_keymap_keyframes (wmKeyConfig *keyconf, wmKeyMap *keymap) WM_keymap_add_item(keymap, "GRAPH_OT_delete", XKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "GRAPH_OT_delete", DELKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "GRAPH_OT_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0); + WM_keymap_add_item(keymap, "GRAPH_OT_duplicate_move", DKEY, KM_PRESS, KM_SHIFT, 0); /* insertkey */ WM_keymap_add_item(keymap, "GRAPH_OT_keyframe_insert", IKEY, KM_PRESS, 0, 0); |