Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Ebb <matt@mke3.net>2010-04-22 10:59:41 +0400
committerMatt Ebb <matt@mke3.net>2010-04-22 10:59:41 +0400
commita2b6abeee15f359ddeafdea7a2f3a965da0bf410 (patch)
tree57d81fe3a168e26e5895d781c2d054d62c9141f9 /source/blender
parent5c948964901435ee22596dc6180284605ab3b52d (diff)
Fix [#22097] missing panels in texture tab
Made texture/texture slot context a bit less flaky when dealing with active material and texture nodes inside a node material in the node editor. Now if the active material has nodes enabled, and there are no active material/texture nodes inside it, nothing will be shown in the texture properties (similar to 2.49).
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/blenkernel/intern/texture.c8
-rw-r--r--source/blender/editors/object/object_modifier.c4
-rw-r--r--source/blender/editors/space_buttons/buttons_context.c15
3 files changed, 21 insertions, 6 deletions
diff --git a/source/blender/blenkernel/intern/texture.c b/source/blender/blenkernel/intern/texture.c
index c13e48e8f01..99370610479 100644
--- a/source/blender/blenkernel/intern/texture.c
+++ b/source/blender/blenkernel/intern/texture.c
@@ -879,9 +879,15 @@ Tex *give_current_material_texture(Material *ma)
}
else {
node= nodeGetActiveID(ma->nodetree, ID_MA);
- if(node)
+ if(node) {
ma= (Material*)node->id;
+ if(ma) {
+ mtex= ma->mtex[(int)(ma->texact)];
+ if(mtex) tex= mtex->tex;
+ }
+ }
}
+ return tex;
}
if(ma) {
diff --git a/source/blender/editors/object/object_modifier.c b/source/blender/editors/object/object_modifier.c
index 1e87cd73215..8dccbb33666 100644
--- a/source/blender/editors/object/object_modifier.c
+++ b/source/blender/editors/object/object_modifier.c
@@ -573,7 +573,7 @@ void OBJECT_OT_modifier_add(wmOperatorType *ot)
ot->prop= prop;
}
-/************************ poll function for operators using mod names and data context *********************/
+/************************ generic functions for operators using mod names and data context *********************/
static int edit_modifier_poll_generic(bContext *C, StructRNA *rna_type)
{
@@ -593,7 +593,7 @@ static int edit_modifier_poll(bContext *C)
static void edit_modifier_properties(wmOperatorType *ot)
{
- RNA_def_string(ot->srna, "modifier", "", 32, "Modifier", "Name of the modifier to apply");
+ RNA_def_string(ot->srna, "modifier", "", 32, "Modifier", "Name of the modifier to edit");
}
static int edit_modifier_invoke_properties(bContext *C, wmOperator *op)
diff --git a/source/blender/editors/space_buttons/buttons_context.c b/source/blender/editors/space_buttons/buttons_context.c
index 961c3cf17ce..da6f9fa3f1e 100644
--- a/source/blender/editors/space_buttons/buttons_context.c
+++ b/source/blender/editors/space_buttons/buttons_context.c
@@ -699,11 +699,20 @@ int buttons_context(const bContext *C, const char *member, bContextDataResult *r
Material *ma= ptr->data;
/* if we have a node material, get slot from material in material node */
- if(ma && ma->use_nodes && ma->nodetree)
+ if(ma && ma->use_nodes && ma->nodetree) {
+ /* if there's an active texture node in the node tree,
+ * then that texture is in context directly, without a texture slot */
+ if (give_current_material_texture_node(ma))
+ return 0;
+
ma= give_node_material(ma);
-
- if(ma)
+ if (ma)
+ CTX_data_pointer_set(result, &ma->id, &RNA_MaterialTextureSlot, ma->mtex[(int)ma->texact]);
+ else
+ return 0;
+ } else if(ma) {
CTX_data_pointer_set(result, &ma->id, &RNA_MaterialTextureSlot, ma->mtex[(int)ma->texact]);
+ }
}
else if((ptr=get_pointer_type(path, &RNA_Lamp))) {
Lamp *la= ptr->data;