[Bf-blender-cvs] [91db372b486] blender2.8: Object Mode: pass object mode to CTX_data_mode_enum_ex

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


Commit: 91db372b486807cec87a7ae3ccfc7bae0af62264
Author: Campbell Barton
Date:   Tue Feb 6 16:16:50 2018 +1100
Branches: blender2.8
https://developer.blender.org/rB91db372b486807cec87a7ae3ccfc7bae0af62264

Object Mode: pass object mode to CTX_data_mode_enum_ex

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

M	source/blender/blenkernel/BKE_context.h
M	source/blender/blenkernel/intern/context.c
M	source/blender/draw/intern/draw_manager.c

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

diff --git a/source/blender/blenkernel/BKE_context.h b/source/blender/blenkernel/BKE_context.h
index 121c276d5f2..7cffc16e13e 100644
--- a/source/blender/blenkernel/BKE_context.h
+++ b/source/blender/blenkernel/BKE_context.h
@@ -260,7 +260,9 @@ struct RenderEngineType *CTX_data_engine_type(const bContext *C);
 struct ToolSettings *CTX_data_tool_settings(const bContext *C);
 
 const char *CTX_data_mode_string(const bContext *C);
-int CTX_data_mode_enum_ex(const struct Object *obedit, const struct Object *ob);
+int CTX_data_mode_enum_ex(
+        const struct Object *obedit, const struct Object *ob,
+        const short object_mode);
 int CTX_data_mode_enum(const bContext *C);
 
 void CTX_data_main_set(bContext *C, struct Main *bmain);
diff --git a/source/blender/blenkernel/intern/context.c b/source/blender/blenkernel/intern/context.c
index ba69ecfb7f1..86c0b420f34 100644
--- a/source/blender/blenkernel/intern/context.c
+++ b/source/blender/blenkernel/intern/context.c
@@ -997,7 +997,7 @@ SceneCollection *CTX_data_scene_collection(const bContext *C)
 	return BKE_collection_master(&scene->id);
 }
 
-int CTX_data_mode_enum_ex(const Object *obedit, const Object *ob)
+int CTX_data_mode_enum_ex(const Object *obedit, const Object *ob, const short object_mode)
 {
 	// Object *obedit = CTX_data_edit_object(C);
 	if (obedit) {
@@ -1021,12 +1021,12 @@ int CTX_data_mode_enum_ex(const Object *obedit, const Object *ob)
 	else {
 		// Object *ob = CTX_data_active_object(C);
 		if (ob) {
-			if (ob->mode & OB_MODE_POSE) return CTX_MODE_POSE;
-			else if (ob->mode & OB_MODE_SCULPT) return CTX_MODE_SCULPT;
-			else if (ob->mode & OB_MODE_WEIGHT_PAINT) return CTX_MODE_PAINT_WEIGHT;
-			else if (ob->mode & OB_MODE_VERTEX_PAINT) return CTX_MODE_PAINT_VERTEX;
-			else if (ob->mode & OB_MODE_TEXTURE_PAINT) return CTX_MODE_PAINT_TEXTURE;
-			else if (ob->mode & OB_MODE_PARTICLE_EDIT) return CTX_MODE_PARTICLE;
+			if (object_mode & OB_MODE_POSE) return CTX_MODE_POSE;
+			else if (object_mode & OB_MODE_SCULPT) return CTX_MODE_SCULPT;
+			else if (object_mode & OB_MODE_WEIGHT_PAINT) return CTX_MODE_PAINT_WEIGHT;
+			else if (object_mode & OB_MODE_VERTEX_PAINT) return CTX_MODE_PAINT_VERTEX;
+			else if (object_mode & OB_MODE_TEXTURE_PAINT) return CTX_MODE_PAINT_TEXTURE;
+			else if (object_mode & OB_MODE_PARTICLE_EDIT) return CTX_MODE_PARTICLE;
 		}
 	}
 
@@ -1037,7 +1037,7 @@ int CTX_data_mode_enum(const bContext *C)
 {
 	Object *obedit = CTX_data_edit_object(C);
 	Object *obact = obedit ? NULL : CTX_data_active_object(C);
-	return CTX_data_mode_enum_ex(obedit, obact);
+	return CTX_data_mode_enum_ex(obedit, obact, obact ? obact->mode : OB_MODE_OBJECT);
 }
 
 /* would prefer if we can use the enum version below over this one - Campbell */
diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c
index af42aacbc50..52f47609a23 100644
--- a/source/blender/draw/intern/draw_manager.c
+++ b/source/blender/draw/intern/draw_manager.c
@@ -3155,7 +3155,7 @@ static void drw_engines_enable_external(void)
 static void drw_engines_enable(const Scene *scene, ViewLayer *view_layer, RenderEngineType *engine_type)
 {
 	Object *obact = OBACT(view_layer);
-	const int mode = CTX_data_mode_enum_ex(scene->obedit, obact);
+	const int mode = CTX_data_mode_enum_ex(scene->obedit, obact, DST.draw_ctx.object_mode);
 
 	drw_engines_enable_from_engine(engine_type);



More information about the Bf-blender-cvs mailing list