diff options
author | Campbell Barton <ideasman42@gmail.com> | 2018-03-03 08:39:57 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2018-03-03 08:39:57 +0300 |
commit | 8d575899a17f12681beb9bdb3f7d3005d6d12103 (patch) | |
tree | cfe94562589ae081d939623196373e296a270199 /source/blender/editors/scene/scene_edit.c | |
parent | b8f7538348e6ff37d960cd933562d1f5ff15241c (diff) |
WorkSpace: use existing mode data w/ scene-switch
Check if mode data exists before attempting to change the modes.
Diffstat (limited to 'source/blender/editors/scene/scene_edit.c')
-rw-r--r-- | source/blender/editors/scene/scene_edit.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/source/blender/editors/scene/scene_edit.c b/source/blender/editors/scene/scene_edit.c index ba7ad1505c3..da720272f67 100644 --- a/source/blender/editors/scene/scene_edit.c +++ b/source/blender/editors/scene/scene_edit.c @@ -135,6 +135,8 @@ void ED_scene_change_update( eObjectMode object_mode_old = workspace->object_mode; ViewLayer *layer_old = BKE_view_layer_from_workspace_get(scene_old, workspace); Object *obact_old = OBACT(layer_old); + bool obact_new_mode_exists = ED_object_mode_generic_exists(bmain->wm.first, obact_new, workspace->object_mode); + win->scene = scene_new; CTX_data_scene_set(C, scene_new); @@ -148,7 +150,12 @@ void ED_scene_change_update( } else { ED_object_mode_generic_exit_or_other_window(&eval_ctx_old, bmain->wm.first, workspace, scene_old, obact_old); - ED_object_mode_generic_enter_or_other_window(C, object_mode_old); + if (obact_new_mode_exists) { + workspace->object_mode = object_mode_old; + } + else { + ED_object_mode_generic_enter_or_other_window(C, win, object_mode_old); + } } ED_screen_update_after_scene_change(screen, scene_new, layer_new); |