[Bf-blender-cvs] [a75c50941ac] temp-workspace_active_object: Get rid of first bunch of ViewLayer.basact accesses
Julian Eisel
noreply at git.blender.org
Sat Dec 2 03:20:13 CET 2017
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. @@
More information about the Bf-blender-cvs
mailing list