[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [37078] trunk/blender/source/blender: Fix #27550: texture node editor header was still showing texture datablock

Brecht Van Lommel brechtvanlommel at pandora.be
Wed Jun 1 18:17:38 CEST 2011


Revision: 37078
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=37078
Author:   blendix
Date:     2011-06-01 16:17:38 +0000 (Wed, 01 Jun 2011)
Log Message:
-----------
Fix #27550: texture node editor header was still showing texture datablock
selector even if there is no active texture slot or node, now it's disabled
in that case.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_texture.h
    trunk/blender/source/blender/blenkernel/intern/texture.c
    trunk/blender/source/blender/editors/space_node/space_node.c
    trunk/blender/source/blender/makesrna/intern/rna_internal.h
    trunk/blender/source/blender/makesrna/intern/rna_lamp.c
    trunk/blender/source/blender/makesrna/intern/rna_material.c
    trunk/blender/source/blender/makesrna/intern/rna_particle.c
    trunk/blender/source/blender/makesrna/intern/rna_world.c

Modified: trunk/blender/source/blender/blenkernel/BKE_texture.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_texture.h	2011-06-01 16:13:48 UTC (rev 37077)
+++ trunk/blender/source/blender/blenkernel/BKE_texture.h	2011-06-01 16:17:38 UTC (rev 37078)
@@ -103,6 +103,8 @@
 void set_current_lamp_texture(struct Lamp *la, struct Tex *tex);
 void set_current_particle_texture(struct ParticleSettings *part, struct Tex *tex);
 
+int has_current_material_texture(struct Material *ma);
+
 struct TexMapping *add_mapping(void);
 void init_mapping(struct TexMapping *texmap);
 

Modified: trunk/blender/source/blender/blenkernel/intern/texture.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/texture.c	2011-06-01 16:13:48 UTC (rev 37077)
+++ trunk/blender/source/blender/blenkernel/intern/texture.c	2011-06-01 16:17:38 UTC (rev 37078)
@@ -1191,6 +1191,28 @@
 	}
 }
 
+int has_current_material_texture(Material *ma)
+{
+	bNode *node;
+
+	if(ma && ma->use_nodes && ma->nodetree) {
+		node= nodeGetActiveID(ma->nodetree, ID_TE);
+
+		if(node) {
+			return 1;
+		}
+		else {
+			node= nodeGetActiveID(ma->nodetree, ID_MA);
+			if(node)
+				ma= (Material*)node->id;
+			else
+				ma= NULL;
+		}
+	}
+
+	return (ma != NULL);
+}
+
 Tex *give_current_world_texture(World *world)
 {
 	MTex *mtex= NULL;

Modified: trunk/blender/source/blender/editors/space_node/space_node.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/space_node.c	2011-06-01 16:13:48 UTC (rev 37077)
+++ trunk/blender/source/blender/editors/space_node/space_node.c	2011-06-01 16:17:38 UTC (rev 37078)
@@ -222,6 +222,8 @@
 		case NC_NODE:
 			if (wmn->action == NA_EDITED)
 				ED_area_tag_refresh(sa);
+			else if (wmn->action == NA_SELECTED)
+				ED_area_tag_redraw(sa);
 			break;
 
 		case NC_IMAGE:

Modified: trunk/blender/source/blender/makesrna/intern/rna_internal.h
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_internal.h	2011-06-01 16:13:48 UTC (rev 37077)
+++ trunk/blender/source/blender/makesrna/intern/rna_internal.h	2011-06-01 16:17:38 UTC (rev 37078)
@@ -187,7 +187,7 @@
 void rna_def_motionpath_common(struct StructRNA *srna);
 
 void rna_def_texmat_common(struct StructRNA *srna, const char *texspace_editable);
-void rna_def_mtex_common(struct BlenderRNA *brna, struct StructRNA *srna, const char *begin, const char *activeget, const char *activeset, const char *structname, const char *structname_slots, const char *update);
+void rna_def_mtex_common(struct BlenderRNA *brna, struct StructRNA *srna, const char *begin, const char *activeget, const char *activeset, const char *activeeditable, const char *structname, const char *structname_slots, const char *update);
 void rna_def_render_layer_common(struct StructRNA *srna, int scene);
 
 void rna_ID_name_get(struct PointerRNA *ptr, char *value);

Modified: trunk/blender/source/blender/makesrna/intern/rna_lamp.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_lamp.c	2011-06-01 16:13:48 UTC (rev 37077)
+++ trunk/blender/source/blender/makesrna/intern/rna_lamp.c	2011-06-01 16:17:38 UTC (rev 37078)
@@ -374,7 +374,7 @@
 	
 	/* textures */
 	rna_def_mtex_common(brna, srna, "rna_Lamp_mtex_begin", "rna_Lamp_active_texture_get",
-		"rna_Lamp_active_texture_set", "LampTextureSlot", "LampTextureSlots", "rna_Lamp_update");
+		"rna_Lamp_active_texture_set", NULL, "LampTextureSlot", "LampTextureSlots", "rna_Lamp_update");
 }
 
 static void rna_def_lamp_falloff(StructRNA *srna)

Modified: trunk/blender/source/blender/makesrna/intern/rna_material.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_material.c	2011-06-01 16:13:48 UTC (rev 37077)
+++ trunk/blender/source/blender/makesrna/intern/rna_material.c	2011-06-01 16:17:38 UTC (rev 37078)
@@ -170,6 +170,13 @@
 	set_current_material_texture(ma, value.data);
 }
 
+static int rna_Material_active_texture_editable(PointerRNA *ptr)
+{
+	Material *ma= (Material*)ptr->id.data;
+
+	return has_current_material_texture(ma);
+}
+
 static PointerRNA rna_Material_active_node_material_get(PointerRNA *ptr)
 {
 	Material *ma= give_node_material((Material*)ptr->data);
@@ -1841,7 +1848,8 @@
 	/* common */
 	rna_def_animdata_common(srna);
 	rna_def_mtex_common(brna, srna, "rna_Material_mtex_begin", "rna_Material_active_texture_get",
-		"rna_Material_active_texture_set", "MaterialTextureSlot", "MaterialTextureSlots", "rna_Material_update");
+		"rna_Material_active_texture_set", "rna_Material_active_texture_editable",
+		"MaterialTextureSlot", "MaterialTextureSlots", "rna_Material_update");
 
 	/* only material has this one */
 	prop= RNA_def_property(srna, "use_textures", PROP_BOOLEAN, PROP_NONE);
@@ -1899,7 +1907,9 @@
 	RNA_def_property_flag(parm, PROP_REQUIRED);
 }
 
-void rna_def_mtex_common(BlenderRNA *brna, StructRNA *srna, const char *begin, const char *activeget, const char *activeset, const char *structname, const char *structname_slots, const char *update)
+void rna_def_mtex_common(BlenderRNA *brna, StructRNA *srna, const char *begin,
+	const char *activeget, const char *activeset, const char *activeeditable,
+	const char *structname, const char *structname_slots, const char *update)
 {
 	PropertyRNA *prop;
 
@@ -1913,6 +1923,8 @@
 	prop= RNA_def_property(srna, "active_texture", PROP_POINTER, PROP_NONE);
 	RNA_def_property_struct_type(prop, "Texture");
 	RNA_def_property_flag(prop, PROP_EDITABLE);
+	if(activeeditable)
+		RNA_def_property_editable_func(prop, activeeditable);
 	RNA_def_property_pointer_funcs(prop, activeget, activeset, NULL, NULL);
 	RNA_def_property_ui_text(prop, "Active Texture", "Active texture slot being displayed");
 	RNA_def_property_update(prop, 0, update);

Modified: trunk/blender/source/blender/makesrna/intern/rna_particle.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_particle.c	2011-06-01 16:13:48 UTC (rev 37077)
+++ trunk/blender/source/blender/makesrna/intern/rna_particle.c	2011-06-01 16:17:38 UTC (rev 37078)
@@ -1560,7 +1560,7 @@
 	RNA_def_struct_ui_icon(srna, ICON_PARTICLE_DATA);
 
 	rna_def_mtex_common(brna, srna, "rna_ParticleSettings_mtex_begin", "rna_ParticleSettings_active_texture_get",
-		"rna_ParticleSettings_active_texture_set", "ParticleSettingsTextureSlot", "ParticleSettingsTextureSlots", "rna_Particle_reset");
+		"rna_ParticleSettings_active_texture_set", NULL, "ParticleSettingsTextureSlot", "ParticleSettingsTextureSlots", "rna_Particle_reset");
 
 	/* fluid particle type can't be checked from the type value in rna as it's not shown in the menu */
 	prop= RNA_def_property(srna, "is_fluid", PROP_BOOLEAN, PROP_NONE);

Modified: trunk/blender/source/blender/makesrna/intern/rna_world.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_world.c	2011-06-01 16:13:48 UTC (rev 37077)
+++ trunk/blender/source/blender/makesrna/intern/rna_world.c	2011-06-01 16:17:38 UTC (rev 37078)
@@ -494,7 +494,7 @@
 
 	rna_def_animdata_common(srna);
 	rna_def_mtex_common(brna, srna, "rna_World_mtex_begin", "rna_World_active_texture_get",
-		"rna_World_active_texture_set", "WorldTextureSlot", "WorldTextureSlots", "rna_World_update");
+		"rna_World_active_texture_set", NULL, "WorldTextureSlot", "WorldTextureSlots", "rna_World_update");
 
 	/* colors */
 	prop= RNA_def_property(srna, "horizon_color", PROP_FLOAT, PROP_COLOR);




More information about the Bf-blender-cvs mailing list