[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [26302] trunk/blender/source/blender/ editors: Fix #19802: tweaking the values of e.g.

Brecht Van Lommel brecht at blender.org
Tue Jan 26 16:54:43 CET 2010


Revision: 26302
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=26302
Author:   blendix
Date:     2010-01-26 16:54:42 +0100 (Tue, 26 Jan 2010)

Log Message:
-----------
Fix #19802: tweaking the values of e.g. the add tube operator when
entering editmode on a second mesh would create a duplicate tube.

Cleaning the undo stack from the previous mesh would mess up the redo.
Also, OBJECT_OT_mode_set was causing enter/exit editmode undo push to
be done twice, now it leaves undo push to the operator it calls.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/object/object_edit.c
    trunk/blender/source/blender/editors/util/editmode_undo.c

Modified: trunk/blender/source/blender/editors/object/object_edit.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_edit.c	2010-01-26 15:44:27 UTC (rev 26301)
+++ trunk/blender/source/blender/editors/object/object_edit.c	2010-01-26 15:54:42 UTC (rev 26302)
@@ -2077,7 +2077,7 @@
 	ot->poll= ED_operator_object_active_editable;
 	
 	/* flags */
-	ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+	ot->flag= 0; /* no register/undo here, leave it to operators being called */
 	
 	prop= RNA_def_enum(ot->srna, "mode", object_mode_items, OB_MODE_OBJECT, "Mode", "");
 	RNA_def_enum_funcs(prop, object_mode_set_itemsf);

Modified: trunk/blender/source/blender/editors/util/editmode_undo.c
===================================================================
--- trunk/blender/source/blender/editors/util/editmode_undo.c	2010-01-26 15:44:27 UTC (rev 26301)
+++ trunk/blender/source/blender/editors/util/editmode_undo.c	2010-01-26 15:54:42 UTC (rev 26302)
@@ -203,7 +203,6 @@
 {
 	UndoElem *uel, *next;
 	Object *obedit= CTX_data_edit_object(C);
-	int mixed= 0;
 	
 	/* global undo changes pointers, so we also allow identical names */
 	/* side effect: when deleting/renaming object and start editing new one with same name */
@@ -226,7 +225,9 @@
 		if(isvalid) 
 			uel->ob= obedit;
 		else {
-			mixed= 1;
+			if(uel == curundo)
+				curundo= NULL;
+
 			uel->freedata(uel->undodata);
 			BLI_freelinkN(&undobase, uel);
 		}
@@ -234,7 +235,7 @@
 		uel= next;
 	}
 	
-	if(mixed) curundo= undobase.last;
+	if(curundo == NULL) curundo= undobase.last;
 }
 
 /* 1= an undo, -1 is a redo. we have to make sure 'curundo' remains at current situation */





More information about the Bf-blender-cvs mailing list