[Bf-blender-cvs] [a7a25fed2b6] blender2.8: Fix mode switching error on undo

Campbell Barton noreply at git.blender.org
Tue Apr 3 08:05:24 CEST 2018


Commit: a7a25fed2b64562c5bc2d1436dccd143a9e5fbf8
Author: Campbell Barton
Date:   Tue Apr 3 08:03:43 2018 +0200
Branches: blender2.8
https://developer.blender.org/rBa7a25fed2b64562c5bc2d1436dccd143a9e5fbf8

Fix mode switching error on undo

For 2.8 there is already a utility function for this,
wrap it - avoiding an undo step.

===================================================================

M	source/blender/editors/object/object_modes.c

===================================================================

diff --git a/source/blender/editors/object/object_modes.c b/source/blender/editors/object/object_modes.c
index 25795e75fef..8bfd94d9e59 100644
--- a/source/blender/editors/object/object_modes.c
+++ b/source/blender/editors/object/object_modes.c
@@ -156,42 +156,11 @@ void ED_object_mode_toggle(bContext *C, eObjectMode mode)
 /* Wrapper for operator  */
 void ED_object_mode_set(bContext *C, eObjectMode mode)
 {
-#if 0
-	wmOperatorType *ot = WM_operatortype_find("OBJECT_OT_mode_set", false);
-	PointerRNA ptr;
-
-	WM_operator_properties_create_ptr(&ptr, ot);
-	RNA_enum_set(&ptr, "mode", mode);
-	RNA_boolean_set(&ptr, "toggle", false);
-	WM_operator_name_call_ptr(C, ot, WM_OP_EXEC_DEFAULT, &ptr);
-	WM_operator_properties_free(&ptr);
-#else
-	const WorkSpace *workspace = CTX_wm_workspace(C);
-	Object *ob = CTX_data_active_object(C);
-	if (ob == NULL) {
-		return;
-	}
-	if (workspace->object_mode == mode) {
-		/* pass */
-	}
-	else if (workspace->object_mode != OB_MODE_OBJECT) {
-		if (ob && (workspace->object_mode & mode) == 0) {
-			/* needed so we don't do undo pushes. */
-			wmWindowManager *wm = CTX_wm_manager(C);
-			wm->op_undo_depth++;
-			ED_object_mode_toggle(C, mode);
-			wm->op_undo_depth--;
-		}
-	}
-	else {
-		/* needed so we don't do undo pushes. */
-		wmWindowManager *wm = CTX_wm_manager(C);
-		wm->op_undo_depth++;
-		ED_object_mode_toggle(C, workspace->object_mode);
-		wm->op_undo_depth--;
-
-	}
-#endif
+	wmWindowManager *wm = CTX_wm_manager(C);
+	wm->op_undo_depth++;
+	/* needed so we don't do undo pushes. */
+	ED_object_mode_generic_enter(C, mode);
+	wm->op_undo_depth--;
 }
 
 /** \} */



More information about the Bf-blender-cvs mailing list