[Bf-blender-cvs] [c056c28e55e] temp-workspace-object-mode-removal: Fix for mode switching objects
Campbell Barton
noreply at git.blender.org
Wed Feb 7 13:01:16 CET 2018
Commit: c056c28e55e21095bf670716f94531ec3f13a01b
Author: Campbell Barton
Date: Wed Feb 7 22:59:51 2018 +1100
Branches: temp-workspace-object-mode-removal
https://developer.blender.org/rBc056c28e55e21095bf670716f94531ec3f13a01b
Fix for mode switching objects
===================================================================
M source/blender/editors/object/object_select.c
===================================================================
diff --git a/source/blender/editors/object/object_select.c b/source/blender/editors/object/object_select.c
index 2551cc65362..8c9281e3e61 100644
--- a/source/blender/editors/object/object_select.c
+++ b/source/blender/editors/object/object_select.c
@@ -121,8 +121,34 @@ 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);
+
+ WorkSpace *workspace = CTX_wm_workspace(C);
+
+ bool reset = true;
+ if (base) {
+ Object *ob_prev = OBACT(view_layer);
+ Object *ob_curr = base->object;
+ if (ob_prev != NULL) {
+ if (ob_prev->type == ob_curr->type) {
+ reset = false;
+ }
+ }
+ }
+
+ eObjectMode object_mode = workspace->object_mode;
+ workspace->object_mode = OB_MODE_OBJECT;
+
view_layer->basact = base;
+ if (reset == false) {
+ wmOperatorType *ot = WM_operatortype_find("OBJECT_OT_mode_set", false);
+ PointerRNA ptr;
+ WM_operator_properties_create_ptr(&ptr, ot);
+ RNA_enum_set(&ptr, "mode", object_mode);
+ WM_operator_name_call_ptr(C, ot, WM_OP_INVOKE_DEFAULT, &ptr);
+ WM_operator_properties_free(&ptr);
+ }
+
if (base) {
WM_event_add_notifier(C, NC_SCENE | ND_OB_ACTIVE, view_layer);
}
More information about the Bf-blender-cvs
mailing list