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