[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [42637] trunk/blender/source/blender/ editors: Fix #29577: repeat curve duplication not working in 2.60( as well as 2.61rc1)

Sergey Sharybin sergey.vfx at gmail.com
Thu Dec 15 08:54:25 CET 2011


Revision: 42637
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=42637
Author:   nazgul
Date:     2011-12-15 07:54:13 +0000 (Thu, 15 Dec 2011)
Log Message:
-----------
Fix #29577: repeat curve duplication not working in 2.60(as well as 2.61rc1)

Issue was caused by direct call of transforn operator from extrude and duplicate,
made them macro of duplicate/exturde and transform, so now repeating works nicely.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/curve/curve_ops.c
    trunk/blender/source/blender/editors/curve/editcurve.c
    trunk/blender/source/blender/editors/include/ED_curve.h
    trunk/blender/source/blender/editors/space_api/spacetypes.c

Modified: trunk/blender/source/blender/editors/curve/curve_ops.c
===================================================================
--- trunk/blender/source/blender/editors/curve/curve_ops.c	2011-12-15 00:10:51 UTC (rev 42636)
+++ trunk/blender/source/blender/editors/curve/curve_ops.c	2011-12-15 07:54:13 UTC (rev 42637)
@@ -137,6 +137,27 @@
 	WM_operatortype_append(CURVE_OT_cyclic_toggle);
 }
 
+void ED_operatormacros_curve(void)
+{
+	wmOperatorType *ot;
+	wmOperatorTypeMacro *otmacro;
+
+	ot= WM_operatortype_append_macro("CURVE_OT_duplicate_move", "Add Duplicate", OPTYPE_UNDO|OPTYPE_REGISTER);
+	ot->description = "Duplicate curve and move";
+	WM_operatortype_macro_define(ot, "CURVE_OT_duplicate");
+	otmacro= WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate");
+	RNA_enum_set(otmacro->ptr, "proportional", 0);
+	RNA_boolean_set(otmacro->ptr, "mirror", 0);
+
+	ot= WM_operatortype_append_macro("CURVE_OT_extrude_move", "Extrude Curve and Move", OPTYPE_UNDO|OPTYPE_REGISTER);
+	ot->description = "Extrude curve and move result";
+	otmacro= WM_operatortype_macro_define(ot, "CURVE_OT_extrude");
+	RNA_enum_set(otmacro->ptr, "type", 1);
+	otmacro= WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate");
+	RNA_enum_set(otmacro->ptr, "proportional", 0);
+	RNA_boolean_set(otmacro->ptr, "mirror", 0);
+}
+
 void ED_keymap_curve(wmKeyConfig *keyconf)
 {
 	wmKeyMap *keymap;
@@ -214,8 +235,8 @@
 	RNA_boolean_set(WM_keymap_add_item(keymap, "CURVE_OT_select_linked_pick", LKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "deselect", 1);
 
 	WM_keymap_add_item(keymap, "CURVE_OT_separate", PKEY, KM_PRESS, 0, 0);
-	WM_keymap_add_item(keymap, "CURVE_OT_extrude", EKEY, KM_PRESS, 0, 0);
-	WM_keymap_add_item(keymap, "CURVE_OT_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0);
+	WM_keymap_add_item(keymap, "CURVE_OT_extrude_move", EKEY, KM_PRESS, 0, 0);
+	WM_keymap_add_item(keymap, "CURVE_OT_duplicate_move", DKEY, KM_PRESS, KM_SHIFT, 0);
 	WM_keymap_add_item(keymap, "CURVE_OT_make_segment", FKEY, KM_PRESS, 0, 0);
 	WM_keymap_add_item(keymap, "CURVE_OT_cyclic_toggle", CKEY, KM_PRESS, KM_ALT, 0);
 	WM_keymap_add_item(keymap, "CURVE_OT_delete", XKEY, KM_PRESS, 0, 0);

Modified: trunk/blender/source/blender/editors/curve/editcurve.c
===================================================================
--- trunk/blender/source/blender/editors/curve/editcurve.c	2011-12-15 00:10:51 UTC (rev 42636)
+++ trunk/blender/source/blender/editors/curve/editcurve.c	2011-12-15 07:54:13 UTC (rev 42637)
@@ -4716,18 +4716,6 @@
 	return OPERATOR_FINISHED;
 }
 
-static int extrude_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(event))
-{
-	if(extrude_exec(C, op) == OPERATOR_FINISHED) {
-		RNA_enum_set(op->ptr, "mode", TFM_TRANSLATION);
-		WM_operator_name_call(C, "TRANSFORM_OT_transform", WM_OP_INVOKE_REGION_WIN, op->ptr);
-
-		return OPERATOR_FINISHED;
-	}
-
-	return OPERATOR_CANCELLED;
-}
-
 void CURVE_OT_extrude(wmOperatorType *ot)
 {
 	/* identifiers */
@@ -4737,7 +4725,6 @@
 	
 	/* api callbacks */
 	ot->exec= extrude_exec;
-	ot->invoke= extrude_invoke;
 	ot->poll= ED_operator_editsurfcurve;
 
 	/* flags */
@@ -5599,16 +5586,6 @@
 	return OPERATOR_FINISHED;
 }
 
-static int duplicate_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(event))
-{
-	duplicate_exec(C, op);
-
-	RNA_enum_set(op->ptr, "mode", TFM_TRANSLATION);
-	WM_operator_name_call(C, "TRANSFORM_OT_transform", WM_OP_INVOKE_REGION_WIN, op->ptr);
-
-	return OPERATOR_FINISHED;
-}
-
 void CURVE_OT_duplicate(wmOperatorType *ot)
 {
 	/* identifiers */
@@ -5618,14 +5595,10 @@
 	
 	/* api callbacks */
 	ot->exec= duplicate_exec;
-	ot->invoke= duplicate_invoke;
 	ot->poll= ED_operator_editsurfcurve;
 	
 	/* flags */
 	ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
-
-	/* to give to transform */
-	RNA_def_enum(ot->srna, "mode", transform_mode_types, TFM_TRANSLATION, "Mode", "");
 }
 
 /********************** delete operator *********************/

Modified: trunk/blender/source/blender/editors/include/ED_curve.h
===================================================================
--- trunk/blender/source/blender/editors/include/ED_curve.h	2011-12-15 00:10:51 UTC (rev 42636)
+++ trunk/blender/source/blender/editors/include/ED_curve.h	2011-12-15 07:54:13 UTC (rev 42637)
@@ -47,6 +47,7 @@
 
 /* curve_ops.c */
 void	ED_operatortypes_curve(void);
+void	ED_operatormacros_curve(void);
 void	ED_keymap_curve	(struct wmKeyConfig *keyconf);
 
 /* editcurve.c */

Modified: trunk/blender/source/blender/editors/space_api/spacetypes.c
===================================================================
--- trunk/blender/source/blender/editors/space_api/spacetypes.c	2011-12-15 00:10:51 UTC (rev 42636)
+++ trunk/blender/source/blender/editors/space_api/spacetypes.c	2011-12-15 07:54:13 UTC (rev 42637)
@@ -132,6 +132,7 @@
 	ED_operatormacros_graph();
 	ED_operatormacros_action();
 	ED_operatormacros_clip();
+	ED_operatormacros_curve();
 	
 	/* register dropboxes (can use macros) */
 	spacetypes = BKE_spacetypes_list();




More information about the Bf-blender-cvs mailing list