Commit: 1794f829769d02e4a3a48e47c4f0a0e37b37e020
Author: Julian Eisel
Date:   Thu Nov 30 16:46:47 2017 +0100
Branches: temp-workspace_active_object
https://developer.blender.org/rB1794f829769d02e4a3a48e47c4f0a0e37b37e020

Initial code for setting the active object via workspace

===================================================================

M       source/blender/blenkernel/BKE_workspace.h
M       source/blender/blenkernel/intern/workspace.c
M       source/blender/editors/object/object_hook.c
M       source/blender/editors/object/object_select.c

===================================================================

diff --git a/source/blender/blenkernel/BKE_workspace.h 
b/source/blender/blenkernel/BKE_workspace.h
index 2a35f0d2cae..9ee31947842 100644
--- a/source/blender/blenkernel/BKE_workspace.h
+++ b/source/blender/blenkernel/BKE_workspace.h
@@ -103,6 +103,7 @@ enum eObjectMode BKE_workspace_object_mode_get(const struct 
WorkSpace *workspace
 void            BKE_workspace_object_mode_set(struct WorkSpace *workspace, 
const enum eObjectMode mode) SETTER_ATTRS;
 #endif
 struct Base *BKE_workspace_active_base_get(const struct WorkSpace *workspace) 
GETTER_ATTRS;
+void BKE_workspace_active_base_set(struct WorkSpace *workspace, struct Base 
*base) SETTER_ATTRS;
 struct Object *BKE_workspace_active_object_get(const struct WorkSpace 
*workspace);
 struct ListBase *BKE_workspace_transform_orientations_get(struct WorkSpace 
*workspace) GETTER_ATTRS;
 struct ViewLayer *BKE_workspace_view_layer_get(const struct WorkSpace 
*workspace) GETTER_ATTRS;
diff --git a/source/blender/blenkernel/intern/workspace.c 
b/source/blender/blenkernel/intern/workspace.c
index 6a95d2a6b4d..f3db41f0669 100644
--- a/source/blender/blenkernel/intern/workspace.c
+++ b/source/blender/blenkernel/intern/workspace.c
@@ -404,6 +404,10 @@ Base *BKE_workspace_active_base_get(const WorkSpace 
*workspace)
 {
        return workspace->view_layer->basact;
 }
+void BKE_workspace_active_base_set(WorkSpace *workspace, Base *base)
+{
+       workspace->view_layer->basact = base;
+}
 
 Object *BKE_workspace_active_object_get(const WorkSpace *workspace)
 {
diff --git a/source/blender/editors/object/object_hook.c 
b/source/blender/editors/object/object_hook.c
index 93546b1bd5d..b86f773a4ff 100644
--- a/source/blender/editors/object/object_hook.c
+++ b/source/blender/editors/object/object_hook.c
@@ -56,6 +56,7 @@
 #include "BKE_scene.h"
 #include "BKE_deform.h"
 #include "BKE_editmesh.h"
+#include "BKE_workspace.h"
 
 #include "DEG_depsgraph.h"
 #include "DEG_depsgraph_build.h"
@@ -448,7 +449,9 @@ static int hook_op_edit_poll(bContext *C)
        return 0;
 }
 
-static Object *add_hook_object_new(Main *bmain, Scene *scene, ViewLayer 
*view_layer, Object *obedit)
+static Object *add_hook_object_new(
+        Main *bmain, Scene *scene, ViewLayer *view_layer,
+        WorkSpace *workspace, Object *obedit)
 {
        Base *base, *basedit;
        Object *ob;
@@ -462,7 +465,7 @@ static Object *add_hook_object_new(Main *bmain, Scene 
*scene, ViewLayer *view_la
        
        /* icky, BKE_object_add sets new base as active.
         * so set it back to the original edit object */
-       view_layer->basact = basedit;
+       BKE_workspace_active_base_set(workspace, basedit);
 
        return ob;
 }
diff --git a/source/blender/editors/object/object_select.c 
b/source/blender/editors/object/object_select.c
index 47e63cb43e5..006620d3be8 100644
--- a/source/blender/editors/object/object_select.c
+++ b/source/blender/editors/object/object_select.c
@@ -118,14 +118,13 @@ 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);
-       view_layer->basact = base;
+       WorkSpace *workspace = CTX_wm_workspace(C);
+
+       BKE_workspace_active_base_set(workspace, base);
 
        if (base) {
-#ifdef USE_WORKSPACE_MODE
-               WorkSpace *workspace = CTX_wm_workspace(C);
-               BKE_workspace_object_mode_set(workspace, base->object->mode);
-#endif
+               /* TODO */
+               ViewLayer *view_layer = CTX_data_view_layer(C);
                WM_event_add_notifier(C, NC_SCENE | ND_OB_ACTIVE, view_layer);
        }
        else {

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to