[Bf-blender-cvs] [5ec016169b8] blender2.8: Object Mode: use eval_ctx for context/screen code

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


Commit: 5ec016169b80cc8205740a5b3beb12f91be3182b
Author: Campbell Barton
Date:   Tue Feb 6 17:28:00 2018 +1100
Branches: blender2.8
https://developer.blender.org/rB5ec016169b80cc8205740a5b3beb12f91be3182b

Object Mode: use eval_ctx for context/screen code

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

M	source/blender/editors/include/ED_image.h
M	source/blender/editors/include/ED_uvedit.h
M	source/blender/editors/interface/interface_icons.c
M	source/blender/editors/interface/interface_templates.c
M	source/blender/editors/physics/particle_edit.c
M	source/blender/editors/screen/CMakeLists.txt
M	source/blender/editors/screen/screen_context.c
M	source/blender/editors/screen/screen_ops.c
M	source/blender/editors/sculpt_paint/sculpt_undo.c
M	source/blender/editors/space_image/image_edit.c
M	source/blender/editors/space_image/image_ops.c
M	source/blender/editors/space_image/space_image.c
M	source/blender/editors/space_view3d/drawarmature.c
M	source/blender/editors/space_view3d/space_view3d.c
M	source/blender/editors/space_view3d/view3d_header.c
M	source/blender/editors/space_view3d/view3d_snap.c
M	source/blender/editors/space_view3d/view3d_view.c
M	source/blender/editors/util/undo.c
M	source/blender/editors/uvedit/uvedit_draw.c
M	source/blender/makesrna/intern/rna_space.c
M	source/blender/nodes/CMakeLists.txt
M	source/blender/nodes/texture/node_texture_tree.c
M	source/blender/render/intern/source/convertblender.c

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

diff --git a/source/blender/editors/include/ED_image.h b/source/blender/editors/include/ED_image.h
index 95ba6095517..cb824b3c9b7 100644
--- a/source/blender/editors/include/ED_image.h
+++ b/source/blender/editors/include/ED_image.h
@@ -75,7 +75,7 @@ bool ED_space_image_show_uvedit(struct SpaceImage *sima, struct Object *obedit);
 
 bool ED_space_image_paint_curve(const struct bContext *C);
 
-bool ED_space_image_check_show_maskedit(struct ViewLayer *view_layer, struct SpaceImage *sima);
+bool ED_space_image_check_show_maskedit(struct SpaceImage *sima, struct ViewLayer *view_layer);
 int ED_space_image_maskedit_poll(struct bContext *C);
 int ED_space_image_maskedit_mask_poll(struct bContext *C);
 
diff --git a/source/blender/editors/include/ED_uvedit.h b/source/blender/editors/include/ED_uvedit.h
index 96b4004b6a6..d4c38688335 100644
--- a/source/blender/editors/include/ED_uvedit.h
+++ b/source/blender/editors/include/ED_uvedit.h
@@ -112,7 +112,10 @@ void ED_unwrap_lscm(struct Scene *scene, struct Object *obedit, const short sel)
 
 /* uvedit_draw.c */
 void ED_image_draw_cursor(struct ARegion *ar, const float cursor[2]);
-void ED_uvedit_draw_main(struct SpaceImage *sima, struct ARegion *ar, struct Scene *scene, struct ViewLayer *view_layer, struct Object *obedit, struct Object *obact, struct Depsgraph *depsgraph);
+void ED_uvedit_draw_main(
+        struct SpaceImage *sima, const struct EvaluationContext *eval_ctx,
+        struct ARegion *ar, struct Scene *scene, struct ViewLayer *view_layer,
+        struct Object *obedit, struct Object *obact, struct Depsgraph *depsgraph);
 
 /* uvedit_buttons.c */
 void ED_uvedit_buttons_register(struct ARegionType *art);
diff --git a/source/blender/editors/interface/interface_icons.c b/source/blender/editors/interface/interface_icons.c
index d048324d35e..2941b08b7ad 100644
--- a/source/blender/editors/interface/interface_icons.c
+++ b/source/blender/editors/interface/interface_icons.c
@@ -61,6 +61,8 @@
 
 #include "BIF_glutil.h"
 
+#include "DEG_depsgraph.h"
+
 #include "ED_datafiles.h"
 #include "ED_keyframes_draw.h"
 #include "ED_render.h"
@@ -1193,6 +1195,8 @@ static int ui_id_brush_get_icon(const bContext *C, ID *id)
 		ui_id_icon_render(C, id, true);
 	}
 	else {
+		EvaluationContext eval_ctx;
+		CTX_data_eval_ctx(C, &eval_ctx);
 		Object *ob = CTX_data_active_object(C);
 		SpaceImage *sima;
 		const EnumPropertyItem *items = NULL;
@@ -1203,11 +1207,11 @@ static int ui_id_brush_get_icon(const bContext *C, ID *id)
 		 * checking various context stuff here */
 
 		if (CTX_wm_view3d(C) && ob) {
-			if (ob->mode & OB_MODE_SCULPT)
+			if (eval_ctx.object_mode & OB_MODE_SCULPT)
 				mode = OB_MODE_SCULPT;
-			else if (ob->mode & (OB_MODE_VERTEX_PAINT | OB_MODE_WEIGHT_PAINT))
+			else if (eval_ctx.object_mode & (OB_MODE_VERTEX_PAINT | OB_MODE_WEIGHT_PAINT))
 				mode = OB_MODE_VERTEX_PAINT;
-			else if (ob->mode & OB_MODE_TEXTURE_PAINT)
+			else if (eval_ctx.object_mode & OB_MODE_TEXTURE_PAINT)
 				mode = OB_MODE_TEXTURE_PAINT;
 		}
 		else if ((sima = CTX_wm_space_image(C)) &&
diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c
index 32758b7935a..871d2df1e85 100644
--- a/source/blender/editors/interface/interface_templates.c
+++ b/source/blender/editors/interface/interface_templates.c
@@ -575,6 +575,9 @@ static void template_ID(
         bContext *C, uiLayout *layout, TemplateID *template_ui, StructRNA *type, int flag,
         const char *newop, const char *openop, const char *unlinkop)
 {
+	EvaluationContext eval_ctx;
+	CTX_data_eval_ctx(C, &eval_ctx);
+
 	uiBut *but;
 	uiBlock *block;
 	PointerRNA idptr;
@@ -659,7 +662,7 @@ static void template_ID(
 			    (idfrom && idfrom->lib) ||
 			    (!editable) ||
 			    /* object in editmode - don't change data */
-			    (idfrom && GS(idfrom->name) == ID_OB && (((Object *)idfrom)->mode & OB_MODE_EDIT)))
+			    (idfrom && GS(idfrom->name) == ID_OB && (eval_ctx.object_mode & OB_MODE_EDIT)))
 			{
 				UI_but_flag_enable(but, UI_BUT_DISABLED);
 			}
@@ -1207,7 +1210,8 @@ static int modifier_is_simulation(ModifierData *md)
 }
 
 static uiLayout *draw_modifier(
-        uiLayout *layout, Scene *scene, Object *ob,
+        uiLayout *layout,
+        const EvaluationContext *eval_ctx, Scene *scene, Object *ob,
         ModifierData *md, int index, int cageIndex, int lastCageIndex)
 {
 	const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
@@ -1344,7 +1348,7 @@ static uiLayout *draw_modifier(
 			if (md->type == eModifierType_ParticleSystem) {
 				ParticleSystem *psys = ((ParticleSystemModifierData *)md)->psys;
 				
-				if (!(ob->mode & OB_MODE_PARTICLE_EDIT)) {
+				if (!(eval_ctx->object_mode & OB_MODE_PARTICLE_EDIT)) {
 					if (ELEM(psys->part->ren_as, PART_DRAW_GR, PART_DRAW_OB))
 						uiItemO(row, CTX_IFACE_(BLT_I18NCONTEXT_OPERATOR_DEFAULT, "Convert"), ICON_NONE,
 						        "OBJECT_OT_duplicates_make_real");
@@ -1393,6 +1397,8 @@ static uiLayout *draw_modifier(
 
 uiLayout *uiTemplateModifier(uiLayout *layout, bContext *C, PointerRNA *ptr)
 {
+	EvaluationContext eval_ctx;
+	CTX_data_eval_ctx(C, &eval_ctx);
 	Scene *scene = CTX_data_scene(C);
 	Object *ob;
 	ModifierData *md, *vmd;
@@ -1423,7 +1429,7 @@ uiLayout *uiTemplateModifier(uiLayout *layout, bContext *C, PointerRNA *ptr)
 
 	for (i = 0; vmd; i++, vmd = vmd->next) {
 		if (md == vmd)
-			return draw_modifier(layout, scene, ob, md, i, cageIndex, lastCageIndex);
+			return draw_modifier(layout, &eval_ctx, scene, ob, md, i, cageIndex, lastCageIndex);
 		else if (vmd->mode & eModifierMode_Virtual)
 			i--;
 	}
diff --git a/source/blender/editors/physics/particle_edit.c b/source/blender/editors/physics/particle_edit.c
index 89dd46681cb..aeb7f0b9222 100644
--- a/source/blender/editors/physics/particle_edit.c
+++ b/source/blender/editors/physics/particle_edit.c
@@ -113,26 +113,30 @@ void update_world_cos(Object *ob, PTCacheEdit *edit);
 
 int PE_poll(bContext *C)
 {
+	EvaluationContext eval_ctx;
+	CTX_data_eval_ctx(C, &eval_ctx);
 	Scene *scene= CTX_data_scene(C);
 	ViewLayer *view_layer = CTX_data_view_layer(C);
 	Object *ob= CTX_data_active_object(C);
 
-	if (!scene || !view_layer || !ob || !(ob->mode & OB_MODE_PARTICLE_EDIT))
+	if (!scene || !view_layer || !ob || !(eval_ctx.object_mode & OB_MODE_PARTICLE_EDIT)) {
 		return 0;
-	
+	}
 	return (PE_get_current(scene, view_layer, ob) != NULL);
 }
 
 int PE_hair_poll(bContext *C)
 {
+	EvaluationContext eval_ctx;
+	CTX_data_eval_ctx(C, &eval_ctx);
 	Scene *scene= CTX_data_scene(C);
 	ViewLayer *view_layer = CTX_data_view_layer(C);
 	Object *ob= CTX_data_active_object(C);
 	PTCacheEdit *edit;
 
-	if (!scene || !ob || !(ob->mode & OB_MODE_PARTICLE_EDIT))
+	if (!scene || !ob || !(eval_ctx.object_mode & OB_MODE_PARTICLE_EDIT)) {
 		return 0;
-	
+	}
 	edit= PE_get_current(scene, view_layer, ob);
 
 	return (edit && edit->psys);
@@ -317,7 +321,7 @@ PTCacheEdit *PE_create_current(const EvaluationContext *eval_ctx, Scene *scene,
 
 void PE_current_changed(const EvaluationContext *eval_ctx, Scene *scene, Object *ob)
 {
-	if (ob->mode == OB_MODE_PARTICLE_EDIT) {
+	if (eval_ctx->object_mode == OB_MODE_PARTICLE_EDIT) {
 		PE_create_current(eval_ctx, scene, ob);
 	}
 }
@@ -2840,7 +2844,8 @@ void PARTICLE_OT_delete(wmOperatorType *ot)
 
 /*************************** mirror operator **************************/
 
-static void PE_mirror_x(Scene *scene, ViewLayer *view_layer, Object *ob, int tagged)
+static void PE_mirror_x(
+        Scene *scene, ViewLayer *view_layer, Object *ob, int tagged)
 {
 	Mesh *me= (Mesh *)(ob->data);
 	ParticleSystemModifierData *psmd;
diff --git a/source/blender/editors/screen/CMakeLists.txt b/source/blender/editors/screen/CMakeLists.txt
index 02584a4611b..29b9971eabb 100644
--- a/source/blender/editors/screen/CMakeLists.txt
+++ b/source/blender/editors/screen/CMakeLists.txt
@@ -26,6 +26,7 @@ set(INC
 	../../blenloader
 	../../blentranslation
 	../../bmesh
+	../../depsgraph
 	../../gpu
 	../../imbuf
 	../../makesdna
diff --git a/source/blender/editors/screen/screen_context.c b/source/blender/editors/screen/screen_context.c
index 4c62253bef6..e4c3a051a13 100644
--- a/source/blender/editors/screen/screen_context.c
+++ b/source/blender/editors/screen/screen_context.c
@@ -53,6 +53,8 @@
 #include "BKE_sequencer.h"
 #include "BKE_workspace.h"
 
+#include "DEG_depsgraph.h"
+
 #include "RNA_access.h"
 
 #include "ED_armature.h"
@@ -84,6 +86,8 @@ const char *screen_context_dir[] = {
 
 int ed_screen_context(const bContext *C, const char *member, bContextDataResult *result)
 {
+	EvaluationContext eval_ctx;
+	CTX_data_eval_ctx(C, &eval_ctx);
 	wmWindow *win = CTX_wm_window(C);
 	bScreen *sc = CTX_wm_screen(C);
 	ScrArea *sa = CTX_wm_area(C);
@@ -371,31 +375,31 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult
 		return 1;
 	}
 	else if (CTX_data_equals(member, "sculpt_object")) {
-		if (obact && (obact->mode & OB_MODE_SCULPT))
+		if (obact && (eval_ctx.object_mode & OB_MODE_SCULPT)) {
 			CTX_data_id_pointer_set(result, &obact->id);
-
+		}
 		return 1;
 	}
 	else if (CTX_data_equals(member, "vertex_paint_object")) {
-		if (obact && (obact->mode & OB_MODE_VERTEX_PAINT))
+		if (obact && (eval_ctx.object_mode & OB_MODE_VERTEX_PAINT))
 			CTX_data_id_pointer_set(result, &obact->id);
 
 		return 1;
 	}
 	else if (CTX_data_equals(member, "weight_paint_object")) {
-		if (obact && (obact->mode & OB_MODE_WEIGHT_PAINT))
+		if (obact && (eval_ctx.object_mode & OB_MODE_WEIGHT_PAINT))
 			CTX_data_id_pointer_set(result, &obact->id);
 
 		return 1;
 	}
 	else if (CTX_data_equals(member, "image_paint_object")) {
-		if (obact && (obact->mode & OB_MODE_TEXTURE_PAINT))
+		if (obact && (eval_ctx.object_mode & OB_MODE_TEXTURE_PAINT))
 			CTX_data_id_pointer_set(result, &obact->id);
 
 		return 1;
 	}
 	else if (CTX_data_equals(member, "particle_edit_object")) {
-		if (obact && (obact->mode & OB_MODE_PARTICLE_EDIT))
+		if (obact && (eval_ctx.object_mode & OB_MODE_PARTICLE_EDIT))
 			CTX_data_id_pointer_set(result, &obact->id);
 
 		return 1;
diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c
index e1480dbe967..916

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list