From e76074da0bf3a1f406146430ed6cef50a73e699b Mon Sep 17 00:00:00 2001 From: Ton Roosendaal Date: Thu, 18 Nov 2010 16:38:32 +0000 Subject: [PATCH] Feature fix When using Material Nodes, there was no indication in Material Property window which node was active. The context/channel widget now shows this. Better would be to be able to browse nodes in this list, and to have option to preview only this material (not node tree result). Enough todo for future :) --- .../editors/interface/interface_templates.c | 23 +++++++++++++++++++ .../windowmanager/intern/wm_operators.c | 2 +- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c index 46ecda5fba5..d9541e33040 100644 --- a/source/blender/editors/interface/interface_templates.c +++ b/source/blender/editors/interface/interface_templates.c @@ -38,6 +38,7 @@ #include "BKE_global.h" #include "BKE_library.h" #include "BKE_main.h" +#include "BKE_material.h" #include "BKE_texture.h" #include "BKE_report.h" @@ -2000,6 +2001,28 @@ static void list_item_row(bContext *C, uiLayout *layout, PointerRNA *ptr, Pointe uiBlockSetEmboss(block, UI_EMBOSS); uiDefButR(block, OPTION, 0, "", 0, 0, UI_UNIT_X, UI_UNIT_Y, itemptr, "use", 0, 0, 0, 0, 0, NULL); } + else if(RNA_struct_is_a(itemptr->type, &RNA_MaterialSlot)) { + /* provision to draw active node name */ + Material *ma, *manode; + Object *ob= (Object*)ptr->id.data; + int index= (Material**)ptr->data - ob->mat; + + /* default item with material base name */ + uiItemL(sub, name, icon); + + ma= give_current_material(ob, index+1); + if(ma) { + manode= give_node_material(ma); + if(manode) { + char str[MAX_ID_NAME + 12]; + sprintf(str, "Node %s", manode->id.name+2); + uiItemL(sub, str, ui_id_icon_get(C, &manode->id, 1)); + } + else if(ma->use_nodes) { + uiItemL(sub, "Node ", 0); + } + } + } else if(itemptr->type == &RNA_ShapeKey) { ob= (Object*)activeptr->data; diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 599e9ece704..f6fb213358c 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -869,7 +869,7 @@ int WM_operator_winactive(bContext *C) return 1; } -/* op->invoke */ +/* op->exec */ static void redo_cb(bContext *C, void *arg_op, int UNUSED(event)) { wmOperator *lastop= arg_op;