[Bf-blender-cvs] [487df021982] master: Fix new material for pinned objects

Campbell Barton noreply at git.blender.org
Thu Jan 3 02:35:07 CET 2019


Commit: 487df021982710bb0145b8efc0c10f88192dff45
Author: Campbell Barton
Date:   Thu Jan 3 12:33:12 2019 +1100
Branches: master
https://developer.blender.org/rB487df021982710bb0145b8efc0c10f88192dff45

Fix new material for pinned objects

Grease pencil check was using active object.

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

M	source/blender/editors/render/render_shading.c

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

diff --git a/source/blender/editors/render/render_shading.c b/source/blender/editors/render/render_shading.c
index 6875c803c33..f2446a01ecf 100644
--- a/source/blender/editors/render/render_shading.c
+++ b/source/blender/editors/render/render_shading.c
@@ -526,30 +526,32 @@ static int new_material_exec(bContext *C, wmOperator *UNUSED(op))
 	PointerRNA ptr, idptr;
 	PropertyRNA *prop;
 
+	/* hook into UI */
+	UI_context_active_but_prop_get_templateID(C, &ptr, &prop);
+
+	Object *ob = (prop && RNA_struct_is_a(ptr.type, &RNA_Object)) ? ptr.data : NULL;
+
 	/* add or copy material */
 	if (ma) {
 		ma = BKE_material_copy(bmain, ma);
 	}
 	else {
-		Object *ob = CTX_data_active_object(C);
-		if ((!ob) || (ob->type != OB_GPENCIL)) {
-			ma = BKE_material_add(bmain, DATA_("Material"));
+		const char *name = DATA_("Material");
+		if (!(ob != NULL && ob->type == OB_GPENCIL)) {
+			ma = BKE_material_add(bmain, name);
 		}
 		else {
-			ma = BKE_material_add_gpencil(bmain, DATA_("Material"));
+			ma = BKE_material_add_gpencil(bmain, name);
 		}
 		ED_node_shader_default(C, &ma->id);
 		ma->use_nodes = true;
 	}
 
-	/* hook into UI */
-	UI_context_active_but_prop_get_templateID(C, &ptr, &prop);
 
 	if (prop) {
-		if (RNA_struct_is_a(ptr.type, &RNA_Object)) {
+		if (ob != NULL) {
 			/* Add slot follows user-preferences for creating new slots,
 			 * RNA pointer assignment doesn't, see: T60014. */
-			Object *ob = ptr.data;
 			if (give_current_material_p(ob, ob->actcol) == NULL) {
 				BKE_object_material_slot_add(bmain, ob);
 			}



More information about the Bf-blender-cvs mailing list