Commit: a75c50941acf9e5bbead14ee3d6eb33dd8f24ec4
Author: Julian Eisel
Date:   Sat Nov 25 04:34:46 2017 +0100
Branches: temp-workspace_active_object
https://developer.blender.org/rBa75c50941acf9e5bbead14ee3d6eb33dd8f24ec4

Get rid of first bunch of ViewLayer.basact accesses

Get the active base/object through workspace or context (which gets it
through workspace again) instead.

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

M       source/blender/blenkernel/BKE_workspace.h
M       source/blender/blenkernel/intern/paint.c
M       source/blender/blenkernel/intern/workspace.c
M       source/blender/editors/animation/anim_filter.c
M       source/blender/editors/curve/editfont.c
M       source/blender/editors/mesh/mesh_navmesh.c
M       source/blender/editors/object/object_add.c
M       source/blender/editors/object/object_edit.c
M       source/blender/editors/object/object_modifier.c
M       source/blender/editors/physics/particle_object.c
M       source/blender/editors/screen/screen_context.c
M       source/blender/editors/space_view3d/space_view3d.c
M       source/blender/editors/space_view3d/view3d_buttons.c
M       source/blender/editors/util/ed_util.c
M       source/blender/makesdna/DNA_workspace_types.h

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

diff --git a/source/blender/blenkernel/BKE_workspace.h 
b/source/blender/blenkernel/BKE_workspace.h
index f295af3150a..2a35f0d2cae 100644
--- a/source/blender/blenkernel/BKE_workspace.h
+++ b/source/blender/blenkernel/BKE_workspace.h
@@ -102,7 +102,8 @@ enum eObjectMode BKE_workspace_object_mode_get(const struct 
WorkSpace *workspace
 #ifdef USE_WORKSPACE_MODE
 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);
+struct Base *BKE_workspace_active_base_get(const struct WorkSpace *workspace) 
GETTER_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;
 void               BKE_workspace_view_layer_set(struct WorkSpace *workspace, 
struct ViewLayer *layer) SETTER_ATTRS;
diff --git a/source/blender/blenkernel/intern/paint.c 
b/source/blender/blenkernel/intern/paint.c
index c88642a8164..3eb63a2e6c2 100644
--- a/source/blender/blenkernel/intern/paint.c
+++ b/source/blender/blenkernel/intern/paint.c
@@ -189,15 +189,11 @@ Paint *BKE_paint_get_active(Scene *sce, ViewLayer 
*view_layer)
 Paint *BKE_paint_get_active_from_context(const bContext *C)
 {
        Scene *sce = CTX_data_scene(C);
-       ViewLayer *view_layer = CTX_data_view_layer(C);
        SpaceImage *sima;
 
-       if (sce && view_layer) {
+       if (sce) {
                ToolSettings *ts = sce->toolsettings;
-               Object *obact = NULL;
-
-               if (view_layer->basact && view_layer->basact->object)
-                       obact = view_layer->basact->object;
+               Object *obact = CTX_data_active_object(C);
 
                if ((sima = CTX_wm_space_image(C)) != NULL) {
                        if (obact && obact->mode == OB_MODE_EDIT) {
@@ -240,15 +236,11 @@ Paint *BKE_paint_get_active_from_context(const bContext 
*C)
 ePaintMode BKE_paintmode_get_active_from_context(const bContext *C)
 {
        Scene *sce = CTX_data_scene(C);
-       ViewLayer *view_layer = CTX_data_view_layer(C);
        SpaceImage *sima;
 
-       if (sce && view_layer) {
+       if (sce) {
                ToolSettings *ts = sce->toolsettings;
-               Object *obact = NULL;
-
-               if (view_layer->basact && view_layer->basact->object)
-                       obact = view_layer->basact->object;
+               Object *obact = CTX_data_active_object(C);
 
                if ((sima = CTX_wm_space_image(C)) != NULL) {
                        if (obact && obact->mode == OB_MODE_EDIT) {
diff --git a/source/blender/blenkernel/intern/workspace.c 
b/source/blender/blenkernel/intern/workspace.c
index 785fd71df69..6a95d2a6b4d 100644
--- a/source/blender/blenkernel/intern/workspace.c
+++ b/source/blender/blenkernel/intern/workspace.c
@@ -405,6 +405,12 @@ Base *BKE_workspace_active_base_get(const WorkSpace 
*workspace)
        return workspace->view_layer->basact;
 }
 
+Object *BKE_workspace_active_object_get(const WorkSpace *workspace)
+{
+       Base *active_base = BKE_workspace_active_base_get(workspace);
+       return active_base ? active_base->object : NULL;
+}
+
 ListBase *BKE_workspace_transform_orientations_get(WorkSpace *workspace)
 {
        return &workspace->transform_orientations;
diff --git a/source/blender/editors/animation/anim_filter.c 
b/source/blender/editors/animation/anim_filter.c
index bc901d7e13f..bee1c52a90f 100644
--- a/source/blender/editors/animation/anim_filter.c
+++ b/source/blender/editors/animation/anim_filter.c
@@ -382,7 +382,7 @@ bool ANIM_animdata_get_context(const bContext *C, 
bAnimContext *ac)
                ac->markers = ED_context_get_markers(C);
        }
        ac->view_layer = CTX_data_view_layer(C);
-       ac->obact = (ac->view_layer->basact) ? ac->view_layer->basact->object : 
NULL;
+       ac->obact = CTX_data_active_object(C);
        ac->sa = sa;
        ac->ar = ar;
        ac->sl = sl;
diff --git a/source/blender/editors/curve/editfont.c 
b/source/blender/editors/curve/editfont.c
index cbb5abf1309..2e29ad29da8 100644
--- a/source/blender/editors/curve/editfont.c
+++ b/source/blender/editors/curve/editfont.c
@@ -437,7 +437,7 @@ static void txt_add_object(bContext *C, TextLine 
*firstline, int totline, const
        CTX_data_eval_ctx(C, &eval_ctx);
 
        obedit = BKE_object_add(bmain, scene, view_layer, OB_FONT, NULL);
-       base = view_layer->basact;
+       base = CTX_data_active_base(C);
 
        /* seems to assume view align ? TODO - look into this, could be an 
operator option */
        ED_object_base_init_transform(C, base, NULL, rot);
diff --git a/source/blender/editors/mesh/mesh_navmesh.c 
b/source/blender/editors/mesh/mesh_navmesh.c
index d7e59a05772..449ba083193 100644
--- a/source/blender/editors/mesh/mesh_navmesh.c
+++ b/source/blender/editors/mesh/mesh_navmesh.c
@@ -466,7 +466,7 @@ static Object *createRepresentation(bContext *C, struct 
recast_polyMesh *pmesh,
 static int navmesh_create_exec(bContext *C, wmOperator *op)
 {
        Scene *scene = CTX_data_scene(C);
-       ViewLayer *view_layer = CTX_data_view_layer(C);
+       Base *active_base = CTX_data_active_base(C);
        LinkNode *obs = NULL;
        Base *navmeshBase = NULL;
 
@@ -474,7 +474,7 @@ static int navmesh_create_exec(bContext *C, wmOperator *op)
        {
                if (base->object->type == OB_MESH) {
                        if (base->object->body_type == OB_BODY_TYPE_NAVMESH) {
-                               if (!navmeshBase || base == view_layer->basact) 
{
+                               if (!navmeshBase || base == active_base) {
                                        navmeshBase = base;
                                }
                        }
diff --git a/source/blender/editors/object/object_add.c 
b/source/blender/editors/object/object_add.c
index 77b30951dee..88d67d27f04 100644
--- a/source/blender/editors/object/object_add.c
+++ b/source/blender/editors/object/object_add.c
@@ -429,6 +429,7 @@ Object *ED_object_add_type(
        Main *bmain = CTX_data_main(C);
        Scene *scene = CTX_data_scene(C);
        ViewLayer *view_layer = CTX_data_view_layer(C);
+       Base *base;
        Object *ob;
 
        /* for as long scene has editmode... */
@@ -437,11 +438,12 @@ Object *ED_object_add_type(
 
        /* deselects all, sets scene->basact */
        ob = BKE_object_add(bmain, scene, view_layer, type, name);
+       base = CTX_data_active_base(C);
        /* editor level activate, notifiers */
-       ED_object_base_activate(C, view_layer->basact);
+       ED_object_base_activate(C, base);
 
        /* more editor stuff */
-       ED_object_base_init_transform(C, view_layer->basact, loc, rot);
+       ED_object_base_init_transform(C, base, loc, rot);
 
        /* Ignore collisions by default for non-mesh objects */
        if (type != OB_MESH) {
diff --git a/source/blender/editors/object/object_edit.c 
b/source/blender/editors/object/object_edit.c
index 804d0ed1f0d..2dbaa29e9e7 100644
--- a/source/blender/editors/object/object_edit.c
+++ b/source/blender/editors/object/object_edit.c
@@ -242,9 +242,10 @@ void ED_object_editmode_exit(bContext *C, int flag)
        if (flag & EM_WAITCURSOR) waitcursor(1);
 
        if (ED_object_editmode_load_ex(CTX_data_main(C), obedit, freedata) == 
false) {
+               const Object *ob_active = CTX_data_active_object(C);
                /* in rare cases (background mode) its possible active object
                 * is flagged for editmode, without 'obedit' being set [#35489] 
*/
-               if (UNLIKELY(view_layer->basact && 
(view_layer->basact->object->mode & OB_MODE_EDIT))) {
+               if (UNLIKELY(ob_active && ob_active->mode & OB_MODE_EDIT)) {
                        view_layer->basact->object->mode &= ~OB_MODE_EDIT;
                }
                if (flag & EM_WAITCURSOR) waitcursor(0);
@@ -290,7 +291,6 @@ void ED_object_editmode_exit(bContext *C, int flag)
 void ED_object_editmode_enter(bContext *C, int flag)
 {
        Scene *scene = CTX_data_scene(C);
-       ViewLayer *view_layer = CTX_data_view_layer(C);
        Object *ob;
        bool ok = false;
 
@@ -302,7 +302,7 @@ void ED_object_editmode_enter(bContext *C, int flag)
                if (ob == NULL) return;
        }
        else {
-               ob = view_layer->basact->object;
+               ob = CTX_data_active_object(C);
        }
 
        if (ELEM(NULL, ob, ob->data)) return;
diff --git a/source/blender/editors/object/object_modifier.c 
b/source/blender/editors/object/object_modifier.c
index ca58a60806c..ae260563538 100644
--- a/source/blender/editors/object/object_modifier.c
+++ b/source/blender/editors/object/object_modifier.c
@@ -882,7 +882,6 @@ ModifierData *edit_modifier_property_get(wmOperator *op, 
Object *ob, int type)
 static int modifier_remove_exec(bContext *C, wmOperator *op)
 {
        Main *bmain = CTX_data_main(C);
-       ViewLayer *view_layer = CTX_data_view_layer(C);
        Object *ob = ED_object_active_context(C);
        ModifierData *md = edit_modifier_property_get(op, ob, 0);
        int mode_orig = ob->mode;
@@ -893,11 +892,15 @@ static int modifier_remove_exec(bContext *C, wmOperator 
*op)
        WM_event_add_notifier(C, NC_OBJECT | ND_MODIFIER, ob);
 
        /* if cloth/softbody was removed, particle mode could be cleared */
-       if (mode_orig & OB_MODE_PARTICLE_EDIT)
-               if ((ob->mode & OB_MODE_PARTICLE_EDIT) == 0)
-                       if (view_layer->basact && view_layer->basact->object == 
ob)
+       if (mode_orig & OB_MODE_PARTICLE_EDIT) {
+               if ((ob->mode & OB_MODE_PARTICLE_EDIT) == 0) {
+                       Object *ob_active = CTX_data_active_object(C);
+                       if (ob_active == ob) {
                                WM_event_add_notifier(C, NC_SCENE | ND_MODE | 
NS_MODE_OBJECT, NULL);
-       
+                       }
+               }
+       }
+
        return OPERATOR_FINISHED;
 }
 
diff --git a/source/blender/editors/physics/particle_object.c 
b/source/blender/editors/physics/particle_object.c
index 4fee14dc71d..56a1f87a95c 100644
--- a/source/blender/editors/physics/particle_object.c
+++ b/source/blender/editors/physics/particle_object.c
@@ -135,7 +135,6 @@ static int particle_system_remove_exec(bContext *C, 
wmOperator *UNUSED(op))
 {
        Object *ob = ED_object_context(C);
        Scene *scene = CTX_data_scene(C);
-       ViewLayer *view_layer = CTX_data_view_layer(C);
        int mode_orig;
 
        if (!scene || !ob)
@@ -149,7 +148,8 @@ static int particle_system_remove_exec(bContext *C, 
wmOperator *UNUSED(op))
         */
        if (mode_orig & OB_MODE_PARTICLE_EDIT) {
                if ((ob->mode & OB_MODE_PARTICLE_EDIT) == 0) {
-                       if (view_layer->basact && view_layer->basact->object == 
ob) {
+                       Object *ob_active = CTX_data_active_object(C);
+                       if (ob_active == ob) {
                                WM_event_add_notifier(C, 
NC_SCENE|ND_MODE|NS_MODE_OBJECT, NULL);
                        }
                }
diff --git a/source/blender/editors/screen/screen_context.c 
b/source/blender/editors/screen/screen_context.c
index d84f256bc32..329ce1743e6 100644
--- a/source/blender/editors/screen/screen_context.c
+++ b/source/blender/editors/screen/screen_context.c
@@ -91,7

@@ Diff output truncated at 10240 characters. @@

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

Reply via email to