diff options
author | Campbell Barton <ideasman42@gmail.com> | 2018-04-03 09:03:43 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2018-04-03 09:05:18 +0300 |
commit | a7a25fed2b64562c5bc2d1436dccd143a9e5fbf8 (patch) | |
tree | 951c35ca5fa2d268b32b06802e96f8dabaa23d57 /source/blender/editors | |
parent | 751782c8df7e49b5612b01715d871775fc09818f (diff) |
Fix mode switching error on undo
For 2.8 there is already a utility function for this,
wrap it - avoiding an undo step.
Diffstat (limited to 'source/blender/editors')
-rw-r--r-- | source/blender/editors/object/object_modes.c | 41 |
1 files changed, 5 insertions, 36 deletions
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--; } /** \} */ |