Merge branch 'blender-v2.92-release'
This commit is contained in:
commit
4f3fba2aa7
|
@ -173,6 +173,7 @@ void ED_object_parent_clear(struct Object *ob, const int type);
|
|||
|
||||
void ED_object_base_select(struct Base *base, eObjectSelect_Mode mode);
|
||||
void ED_object_base_activate(struct bContext *C, struct Base *base);
|
||||
void ED_object_base_activate_with_mode_exit_if_needed(struct bContext *C, struct Base *base);
|
||||
void ED_object_base_active_refresh(struct Main *bmain,
|
||||
struct Scene *scene,
|
||||
struct ViewLayer *view_layer);
|
||||
|
|
|
@ -143,6 +143,21 @@ void ED_object_base_activate(bContext *C, Base *base)
|
|||
ED_object_base_active_refresh(CTX_data_main(C), scene, view_layer);
|
||||
}
|
||||
|
||||
void ED_object_base_activate_with_mode_exit_if_needed(bContext *C, Base *base)
|
||||
{
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
|
||||
/* Currently we only need to be concerned with edit-mode. */
|
||||
Object *obedit = OBEDIT_FROM_VIEW_LAYER(view_layer);
|
||||
if (obedit) {
|
||||
Object *ob = base->object;
|
||||
if (((ob->mode & OB_MODE_EDIT) == 0) || (obedit->type != ob->type)) {
|
||||
ED_object_editmode_exit(C, EM_FREEDATA);
|
||||
}
|
||||
}
|
||||
ED_object_base_activate(C, base);
|
||||
}
|
||||
|
||||
bool ED_object_base_deselect_all_ex(ViewLayer *view_layer,
|
||||
View3D *v3d,
|
||||
int action,
|
||||
|
|
|
@ -398,14 +398,10 @@ static eOLDrawState tree_element_set_active_object(bContext *C,
|
|||
}
|
||||
|
||||
if (set != OL_SETSEL_NONE) {
|
||||
ED_object_base_activate(C, base); /* adds notifier */
|
||||
ED_object_base_activate_with_mode_exit_if_needed(C, base); /* adds notifier */
|
||||
DEG_id_tag_update(&scene->id, ID_RECALC_SELECT);
|
||||
WM_event_add_notifier(C, NC_SCENE | ND_OB_SELECT, scene);
|
||||
}
|
||||
|
||||
if (ob != OBEDIT_FROM_VIEW_LAYER(view_layer)) {
|
||||
ED_object_editmode_exit(C, EM_FREEDATA);
|
||||
}
|
||||
}
|
||||
return OL_DRAWSEL_NORMAL;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue