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:
Diffstat (limited to 'source/blender/editors/object/object_select.c')
-rw-r--r--source/blender/editors/object/object_select.c57
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;
}