[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