diff options
author | Campbell Barton <ideasman42@gmail.com> | 2018-02-22 10:15:34 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2018-02-22 10:18:44 +0300 |
commit | 4ab002bca36ace4d2b4b21efce622a682b99b844 (patch) | |
tree | 8127eca822cc9a80bb6951127bfa06eab5791655 /source/blender/editors/screen/screen_context.c | |
parent | 5b857102fa6d3e1f92530343448b142c9666e8d8 (diff) |
WorkSpace: object-mode switching support
When changing workspaces, existing object-mode data is freed
the new workspaces mode is entered (if possible).
Diffstat (limited to 'source/blender/editors/screen/screen_context.c')
-rw-r--r-- | source/blender/editors/screen/screen_context.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/source/blender/editors/screen/screen_context.c b/source/blender/editors/screen/screen_context.c index 2a48ae46b12..dc4dcdb4554 100644 --- a/source/blender/editors/screen/screen_context.c +++ b/source/blender/editors/screen/screen_context.c @@ -93,7 +93,6 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult WorkSpace *workspace = BKE_workspace_active_get(win->workspace_hook); ViewLayer *view_layer = BKE_view_layer_from_workspace_get(scene, workspace); Object *obact = (view_layer && view_layer->basact) ? view_layer->basact->object : NULL; - Object *obedit = BKE_workspace_edit_object(workspace, scene); if (CTX_data_dir(member)) { CTX_data_dir_set(result, screen_context_dir); @@ -204,6 +203,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult return 1; } else if (CTX_data_equals(member, "visible_bones") || CTX_data_equals(member, "editable_bones")) { + Object *obedit = BKE_workspace_edit_object(workspace, scene); bArmature *arm = (obedit && obedit->type == OB_ARMATURE) ? obedit->data : NULL; EditBone *ebone, *flipbone = NULL; const bool editable_bones = CTX_data_equals(member, "editable_bones"); @@ -246,6 +246,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult } } else if (CTX_data_equals(member, "selected_bones") || CTX_data_equals(member, "selected_editable_bones")) { + Object *obedit = BKE_workspace_edit_object(workspace, scene); bArmature *arm = (obedit && obedit->type == OB_ARMATURE) ? obedit->data : NULL; EditBone *ebone, *flipbone = NULL; const bool selected_editable_bones = CTX_data_equals(member, "selected_editable_bones"); @@ -367,6 +368,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult } else if (CTX_data_equals(member, "edit_object")) { /* convenience for now, 1 object per scene in editmode */ + Object *obedit = BKE_workspace_edit_object(workspace, scene); if (obedit) CTX_data_id_pointer_set(result, &obedit->id); |