Revision: 35354
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=35354
Author:   ton
Date:     2011-03-04 16:02:42 +0000 (Fri, 04 Mar 2011)
Log Message:
-----------
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 :)

Modified Paths:
--------------
    trunk/blender/source/blender/editors/include/ED_anim_api.h
    trunk/blender/source/blender/editors/space_api/spacetypes.c
    trunk/blender/source/blender/editors/space_graph/graph_edit.c
    trunk/blender/source/blender/editors/space_graph/graph_ops.c

Modified: trunk/blender/source/blender/editors/include/ED_anim_api.h
===================================================================
--- trunk/blender/source/blender/editors/include/ED_anim_api.h  2011-03-04 
14:16:43 UTC (rev 35353)
+++ trunk/blender/source/blender/editors/include/ED_anim_api.h  2011-03-04 
16:02:42 UTC (rev 35354)
@@ -585,7 +585,11 @@
        /* generic time editing */
 void ED_operatortypes_anim(void);
 void ED_keymap_anim(struct wmKeyConfig *keyconf);
+       
+       /* space_graph */
+void ED_operatormacros_graph(void);
 
+
 /* ************************************************ */
 
 #endif /* ED_ANIM_API_H */

Modified: trunk/blender/source/blender/editors/space_api/spacetypes.c
===================================================================
--- trunk/blender/source/blender/editors/space_api/spacetypes.c 2011-03-04 
14:16:43 UTC (rev 35353)
+++ trunk/blender/source/blender/editors/space_api/spacetypes.c 2011-03-04 
16:02:42 UTC (rev 35354)
@@ -127,7 +127,8 @@
        ED_operatormacros_node();
        ED_operatormacros_object();
        ED_operatormacros_file();
-
+       ED_operatormacros_graph();
+       
        /* register dropboxes (can use macros) */
        spacetypes = BKE_spacetypes_list();
        for(type=spacetypes->first; type; type=type->next) {

Modified: trunk/blender/source/blender/editors/space_graph/graph_edit.c
===================================================================
--- trunk/blender/source/blender/editors/space_graph/graph_edit.c       
2011-03-04 14:16:43 UTC (rev 35353)
+++ trunk/blender/source/blender/editors/space_graph/graph_edit.c       
2011-03-04 16:02:42 UTC (rev 35354)
@@ -781,9 +781,6 @@
 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;
 }

Modified: trunk/blender/source/blender/editors/space_graph/graph_ops.c
===================================================================
--- trunk/blender/source/blender/editors/space_graph/graph_ops.c        
2011-03-04 14:16:43 UTC (rev 35353)
+++ trunk/blender/source/blender/editors/space_graph/graph_ops.c        
2011-03-04 16:02:42 UTC (rev 35354)
@@ -269,6 +269,19 @@
        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 @@
        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);

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

Reply via email to