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-03-03 08:39:57 +0300
committerCampbell Barton <ideasman42@gmail.com>2018-03-03 08:39:57 +0300
commit8d575899a17f12681beb9bdb3f7d3005d6d12103 (patch)
treecfe94562589ae081d939623196373e296a270199 /source/blender/editors/scene
parentb8f7538348e6ff37d960cd933562d1f5ff15241c (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')
-rw-r--r--source/blender/editors/scene/scene_edit.c9
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);