diff options
Diffstat (limited to 'source/blender/editors/object/object_select.c')
-rw-r--r-- | source/blender/editors/object/object_select.c | 57 |
1 files changed, 6 insertions, 51 deletions
diff --git a/source/blender/editors/object/object_select.c b/source/blender/editors/object/object_select.c index 2feca9184f8..cd1300dd52e 100644 --- a/source/blender/editors/object/object_select.c +++ b/source/blender/editors/object/object_select.c @@ -123,51 +123,7 @@ void ED_object_base_select(Base *base, eObjectSelect_Mode mode) void ED_object_base_activate(bContext *C, Base *base) { ViewLayer *view_layer = CTX_data_view_layer(C); - - wmWindowManager *wm = CTX_wm_manager(C); - wmWindow *win = CTX_wm_window(C); - WorkSpace *workspace = CTX_wm_workspace(C); - - eObjectMode object_mode = workspace->object_mode; - eObjectMode object_mode_set = OB_MODE_OBJECT; - - if (base && ED_workspace_object_mode_in_other_window( - wm, win, base->object, - &object_mode_set)) - { - /* Sync existing object mode with workspace. */ - workspace->object_mode = object_mode_set; - view_layer->basact = base; - } - else { - /* Apply the workspaces mode to the object (when possible). */ - Scene *scene = CTX_data_scene(C); - Object *obact = base ? base->object : NULL; - /* We don't know the previous active object in update. - * - * Not correct because it's possible other work-spaces use these. - * although that's a corner case. */ - if (workspace->object_mode & OB_MODE_ALL_MODE_DATA) { - EvaluationContext eval_ctx; - CTX_data_eval_ctx(C, &eval_ctx); - FOREACH_OBJECT_BEGIN(view_layer, ob) { - if (ob != obact) { - if (ED_object_mode_generic_has_data(&eval_ctx, ob) && - ED_workspace_object_mode_in_other_window(wm, win, ob, NULL) == false) - { - ED_object_mode_generic_exit(&eval_ctx, workspace, scene, ob); - } - } - } - FOREACH_OBJECT_END; - } - - workspace->object_mode = OB_MODE_OBJECT; - - view_layer->basact = base; - - ED_object_mode_generic_enter(C, object_mode); - } + view_layer->basact = base; if (base) { WM_event_add_notifier(C, NC_SCENE | ND_OB_ACTIVE, view_layer); @@ -183,14 +139,13 @@ static int objects_selectable_poll(bContext *C) { /* we don't check for linked scenes here, selection is * still allowed then for inspection of scene */ - if (CTX_data_edit_object(C)) { - return 0; - } + Object *obact = CTX_data_active_object(C); - const WorkSpace *workspace = CTX_wm_workspace(C); - if (workspace->object_mode != OB_MODE_OBJECT) { + if (CTX_data_edit_object(C)) return 0; - } + if (obact && obact->mode) + return 0; + return 1; } |