[Bf-blender-cvs] [269ed0a770b] blender2.8: Object Mode: pass eval_ctx in outliner functions

Campbell Barton noreply at git.blender.org
Tue Feb 6 08:01:15 CET 2018


Commit: 269ed0a770bf3627ba1e21d87d3d748c0765a531
Author: Campbell Barton
Date:   Tue Feb 6 17:11:46 2018 +1100
Branches: blender2.8
https://developer.blender.org/rB269ed0a770bf3627ba1e21d87d3d748c0765a531

Object Mode: pass eval_ctx in outliner functions

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

M	source/blender/editors/space_outliner/outliner_draw.c
M	source/blender/editors/space_outliner/outliner_edit.c
M	source/blender/editors/space_outliner/outliner_intern.h
M	source/blender/editors/space_outliner/outliner_select.c
M	source/blender/editors/space_outliner/outliner_tree.c

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

diff --git a/source/blender/editors/space_outliner/outliner_draw.c b/source/blender/editors/space_outliner/outliner_draw.c
index 1478792b38b..82441536699 100644
--- a/source/blender/editors/space_outliner/outliner_draw.c
+++ b/source/blender/editors/space_outliner/outliner_draw.c
@@ -1893,6 +1893,8 @@ static void outliner_draw_restrictcols(ARegion *ar)
 
 void draw_outliner(const bContext *C)
 {
+	EvaluationContext eval_ctx;
+	CTX_data_eval_ctx(C, &eval_ctx);
 	Main *mainvar = CTX_data_main(C); 
 	Scene *scene = CTX_data_scene(C);
 	ViewLayer *view_layer = CTX_data_view_layer(C);
@@ -1904,7 +1906,7 @@ void draw_outliner(const bContext *C)
 	TreeElement *te_edit = NULL;
 	bool has_restrict_icons;
 
-	outliner_build_tree(mainvar, scene, view_layer, soops, ar); // always
+	outliner_build_tree(mainvar, &eval_ctx, scene, view_layer, soops, ar); // always
 	
 	/* get extents of data */
 	outliner_height(soops, &soops->tree, &sizey);
diff --git a/source/blender/editors/space_outliner/outliner_edit.c b/source/blender/editors/space_outliner/outliner_edit.c
index fc0e30c78ce..25808df807d 100644
--- a/source/blender/editors/space_outliner/outliner_edit.c
+++ b/source/blender/editors/space_outliner/outliner_edit.c
@@ -64,6 +64,7 @@
 #include "BKE_material.h"
 #include "BKE_group.h"
 
+#include "DEG_depsgraph.h"
 #include "DEG_depsgraph_build.h"
 
 #include "../blenloader/BLO_readfile.h"
@@ -977,6 +978,8 @@ static int outliner_open_back(TreeElement *te)
 
 static int outliner_show_active_exec(bContext *C, wmOperator *UNUSED(op))
 {
+	EvaluationContext eval_ctx;
+	CTX_data_eval_ctx(C, &eval_ctx);
 	SpaceOops *so = CTX_wm_space_outliner(C);
 	ViewLayer *view_layer = CTX_data_view_layer(C);
 	ARegion *ar = CTX_wm_region(C);
@@ -997,13 +1000,13 @@ static int outliner_show_active_exec(bContext *C, wmOperator *UNUSED(op))
 		/* traverse down the bone hierarchy in case of armature */
 		TreeElement *te_obact = te;
 
-		if (obact->mode & OB_MODE_POSE) {
+		if (eval_ctx.object_mode & OB_MODE_POSE) {
 			bPoseChannel *pchan = CTX_data_active_pose_bone(C);
 			if (pchan) {
 				te = outliner_find_posechannel(&te_obact->subtree, pchan);
 			}
 		}
-		else if (obact->mode & OB_MODE_EDIT) {
+		else if (eval_ctx.object_mode & OB_MODE_EDIT) {
 			EditBone *ebone = CTX_data_active_bone(C);
 			if (ebone) {
 				te = outliner_find_editbone(&te_obact->subtree, ebone);
diff --git a/source/blender/editors/space_outliner/outliner_intern.h b/source/blender/editors/space_outliner/outliner_intern.h
index ab10e5a3036..aa5b4be44ae 100644
--- a/source/blender/editors/space_outliner/outliner_intern.h
+++ b/source/blender/editors/space_outliner/outliner_intern.h
@@ -50,7 +50,7 @@ struct bPoseChannel;
 struct EditBone;
 struct wmEvent;
 struct wmKeyConfig;
-
+struct EvaluationContext;
 
 typedef enum TreeElementInsertType {
 	TE_INSERT_BEFORE,
@@ -191,8 +191,10 @@ void outliner_cleanup_tree(struct SpaceOops *soops);
 void outliner_free_tree_element(TreeElement *element, ListBase *parent_subtree);
 void outliner_remove_treestore_element(struct SpaceOops *soops, TreeStoreElem *tselem);
 
-void outliner_build_tree(struct Main *mainvar, struct Scene *scene, struct ViewLayer *view_layer,
-                         struct SpaceOops *soops, struct ARegion *ar);
+void outliner_build_tree(
+        struct Main *mainvar, const struct EvaluationContext *eval_ctx,
+        struct Scene *scene, struct ViewLayer *view_layer,
+        struct SpaceOops *soops, struct ARegion *ar);
 
 /* outliner_draw.c ---------------------------------------------- */
 
diff --git a/source/blender/editors/space_outliner/outliner_select.c b/source/blender/editors/space_outliner/outliner_select.c
index b9222e62bb0..9f66e6a0105 100644
--- a/source/blender/editors/space_outliner/outliner_select.c
+++ b/source/blender/editors/space_outliner/outliner_select.c
@@ -658,6 +658,8 @@ static eOLDrawState tree_element_active_text(
 static eOLDrawState tree_element_active_pose(
         bContext *C, Scene *scene, ViewLayer *view_layer, TreeElement *UNUSED(te), TreeStoreElem *tselem, const eOLSetState set)
 {
+	EvaluationContext eval_ctx;
+	CTX_data_eval_ctx(C, &eval_ctx);
 	Object *ob = (Object *)tselem->id;
 	Base *base = BKE_view_layer_base_find(view_layer, ob);
 
@@ -667,16 +669,18 @@ static eOLDrawState tree_element_active_pose(
 	}
 
 	if (set != OL_SETSEL_NONE) {
-		if (scene->obedit)
+		if (scene->obedit) {
 			ED_object_editmode_exit(C, EM_FREEDATA | EM_FREEUNDO | EM_WAITCURSOR | EM_DO_UNDO);
-		
-		if (ob->mode & OB_MODE_POSE)
+		}
+		if (eval_ctx.object_mode & OB_MODE_POSE) {
 			ED_armature_exit_posemode(C, base);
-		else 
+		}
+		else {
 			ED_armature_enter_posemode(C, base);
+		}
 	}
 	else {
-		if (ob->mode & OB_MODE_POSE) {
+		if (eval_ctx.object_mode & OB_MODE_POSE) {
 			return OL_DRAWSEL_NORMAL;
 		}
 	}
diff --git a/source/blender/editors/space_outliner/outliner_tree.c b/source/blender/editors/space_outliner/outliner_tree.c
index 06b3319935d..d3323839b34 100644
--- a/source/blender/editors/space_outliner/outliner_tree.c
+++ b/source/blender/editors/space_outliner/outliner_tree.c
@@ -92,10 +92,12 @@
 
 /* prototypes */
 static void outliner_add_layer_collections_recursive(
-        SpaceOops *soops, ListBase *tree, ID *id, ListBase *layer_collections, TreeElement *parent_ten,
+        SpaceOops *soops, const EvaluationContext *eval_ctx,
+        ListBase *tree, ID *id, ListBase *layer_collections, TreeElement *parent_ten,
         const bool show_objects);
 static void outliner_add_view_layer(
-        SpaceOops *soops, ListBase *tree, TreeElement *parent,
+        SpaceOops *soops, const EvaluationContext *eval_ctx,
+        ListBase *tree, TreeElement *parent,
         Scene *scene, ViewLayer *layer, const bool show_objects);
 static void outliner_make_hierarchy(ListBase *lb);
 
@@ -233,23 +235,25 @@ void outliner_free_tree_element(TreeElement *element, ListBase *parent_subtree)
 /* ********************************************************* */
 
 /* Prototype, see functions below */
-static TreeElement *outliner_add_element(SpaceOops *soops, ListBase *lb, void *idv, 
-                                         TreeElement *parent, short type, short index);
+static TreeElement *outliner_add_element(
+        SpaceOops *soops, const EvaluationContext *eval_ctx,
+        ListBase *lb, void *idv, TreeElement *parent, short type, short index);
 
 /* -------------------------------------------------------- */
 
 /* special handling of hierarchical non-lib data */
-static void outliner_add_bone(SpaceOops *soops, ListBase *lb, ID *id, Bone *curBone,
-                              TreeElement *parent, int *a)
+static void outliner_add_bone(
+        SpaceOops *soops, const EvaluationContext *eval_ctx,
+        ListBase *lb, ID *id, Bone *curBone, TreeElement *parent, int *a)
 {
-	TreeElement *te = outliner_add_element(soops, lb, id, parent, TSE_BONE, *a);
+	TreeElement *te = outliner_add_element(soops, eval_ctx, lb, id, parent, TSE_BONE, *a);
 	
 	(*a)++;
 	te->name = curBone->name;
 	te->directdata = curBone;
 	
 	for (curBone = curBone->childbase.first; curBone; curBone = curBone->next) {
-		outliner_add_bone(soops, &te->subtree, id, curBone, te, a);
+		outliner_add_bone(soops, eval_ctx, &te->subtree, id, curBone, te, a);
 	}
 }
 
@@ -257,7 +261,9 @@ static void outliner_add_bone(SpaceOops *soops, ListBase *lb, ID *id, Bone *curB
 
 #define LOG2I(x) (int)(log(x) / M_LN2)
 
-static void outliner_add_passes(SpaceOops *soops, TreeElement *tenla, ID *id, ViewLayer *view_layer)
+static void outliner_add_passes(
+        SpaceOops *soops, const EvaluationContext *eval_ctx,
+        TreeElement *tenla, ID *id, ViewLayer *view_layer)
 {
 	TreeStoreElem *tselem = NULL;
 	TreeElement *te = NULL;
@@ -265,7 +271,7 @@ static void outliner_add_passes(SpaceOops *soops, TreeElement *tenla, ID *id, Vi
 	/* log stuff is to convert bitflags (powers of 2) to small integers,
 	 * in order to not overflow short tselem->nr */
 	
-	te = outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_COMBINED));
+	te = outliner_add_element(soops, eval_ctx, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_COMBINED));
 	te->name = IFACE_("Combined");
 	te->directdata = &view_layer->passflag;
 	
@@ -274,71 +280,71 @@ static void outliner_add_passes(SpaceOops *soops, TreeElement *tenla, ID *id, Vi
 	if (tselem->flag & TSE_CLOSED)
 		return;
 	
-	te = outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_Z));
+	te = outliner_add_element(soops, eval_ctx, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_Z));
 	te->name = IFACE_("Z");
 	te->directdata = &view_layer->passflag;
 
-	te = outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_VECTOR));
+	te = outliner_add_element(soops, eval_ctx, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_VECTOR));
 	te->name = IFACE_("Vector");
 	te->directdata = &view_layer->passflag;
 
-	te = outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_NORMAL));
+	te = outliner_add_element(soops, eval_ctx, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_NORMAL));
 	te->name = IFACE_("Normal");
 	te->directdata = &view_layer->passflag;
 
-	te = outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_UV));
+	te = outliner_add_element(soops, eval_ctx, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_UV));
 	te->name = IFACE_("UV");
 	te->directdata = &view_layer->passflag;
 
-	te = outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_MIST));
+	te = outliner_add_element(soops, eval_ctx, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_MIST));
 	te->name = IFACE_("Mist");
 	te->directdata = &view_layer->passflag;
 
-	te = outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_INDEXOB));
+	te = outliner_add_element(soops, eval_ctx, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_INDEXOB));
 	te->name = IFACE_("Index Object");
 	te->directdata = &view_layer->passflag;
 
-	te = outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_INDEXMA));
+	te = outliner_add_element(soops

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list