Fix #26704: activating a texture node inside material nodes did not show that
authorBrecht Van Lommel <brechtvanlommel@pandora.be>
Wed, 13 Jul 2011 17:52:23 +0000 (17:52 +0000)
committerBrecht Van Lommel <brechtvanlommel@pandora.be>
Wed, 13 Jul 2011 17:52:23 +0000 (17:52 +0000)
texture in the texture properties.

release/scripts/startup/bl_ui/properties_texture.py
source/blender/editors/space_buttons/buttons_context.c

index f0265f8db676c8a5aeee19c50d484333a22d4dc3..292e43a01a6d9dba960e427712896102f3159676 100644 (file)
@@ -88,15 +88,15 @@ class TEXTURE_PT_context_texture(TextureButtonsPanel, bpy.types.Panel):
     @classmethod
     def poll(cls, context):
         engine = context.scene.render.engine
-        if not hasattr(context, "texture_slot"):
+        if not (hasattr(context, "texture_slot") or hasattr(context, "texture_node")):
             return False
         return ((context.material or context.world or context.lamp or context.brush or context.texture or context.particle_system or isinstance(context.space_data.pin_id, bpy.types.ParticleSettings))
             and (engine in cls.COMPAT_ENGINES))
 
     def draw(self, context):
         layout = self.layout
-        slot = context.texture_slot
-        node = context.texture_node
+        slot = getattr(context, "texture_slot", None)
+        node = getattr(context, "texture_node", None)
         space = context.space_data
         tex = context.texture
         idblock = context_tex_datablock(context)
index f91e830d52e061f917c3fc61fea70c5a38f5bc46..8e1a4b2d16c06b81712de396caeb977e10067341 100644 (file)
@@ -218,7 +218,7 @@ static int buttons_context_path_modifier(ButsContextPath *path)
        return 0;
 }
 
-static int buttons_context_path_material(ButsContextPath *path)
+static int buttons_context_path_material(ButsContextPath *path, int for_texture)
 {
        Object *ob;
        PointerRNA *ptr= &path->ptr[path->len-1];
@@ -236,6 +236,9 @@ static int buttons_context_path_material(ButsContextPath *path)
                        ma= give_current_material(ob, ob->actcol);
                        RNA_id_pointer_create(&ma->id, &path->ptr[path->len]);
                        path->len++;
+
+                       if(for_texture && give_current_material_texture_node(ma))
+                               return 1;
                        
                        ma= give_node_material(ma);
                        if(ma) {
@@ -432,7 +435,7 @@ static int buttons_context_path_texture(ButsContextPath *path)
                }
        }
        /* try material */
-       if(buttons_context_path_material(path)) {
+       if(buttons_context_path_material(path, 1)) {
                ma= path->ptr[path->len-1].data;
 
                if(ma) {
@@ -524,7 +527,7 @@ static int buttons_context_path(const bContext *C, ButsContextPath *path, int ma
                        found= buttons_context_path_particle(path);
                        break;
                case BCONTEXT_MATERIAL:
-                       found= buttons_context_path_material(path);
+                       found= buttons_context_path_material(path, 0);
                        break;
                case BCONTEXT_TEXTURE:
                        found= buttons_context_path_texture(path);