Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2018-04-03 09:03:43 +0300
committerCampbell Barton <ideasman42@gmail.com>2018-04-03 09:05:18 +0300
commita7a25fed2b64562c5bc2d1436dccd143a9e5fbf8 (patch)
tree951c35ca5fa2d268b32b06802e96f8dabaa23d57 /source/blender/editors
parent751782c8df7e49b5612b01715d871775fc09818f (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.c41
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--;
}
/** \} */