diff options
author | Sv. Lockal <lockalsash@gmail.com> | 2012-03-18 19:12:11 +0400 |
---|---|---|
committer | Sv. Lockal <lockalsash@gmail.com> | 2012-03-18 19:12:11 +0400 |
commit | 8720f2b5128113f18ef1cc25083c0aa4a8cab9eb (patch) | |
tree | 1afa1de4bc3f51b65fd50892fa3ad13ca92acb45 /source/blender/editors/space_node | |
parent | 110fa100ff3c87eff9c49f320e1c7a654ba5ecdf (diff) |
Allow dropping image files from outside blender, or image datablocks from inside blender to the shader and texture node editors, to add an image node. Earlier this was possible only for compositing node editor.
Diffstat (limited to 'source/blender/editors/space_node')
-rw-r--r-- | source/blender/editors/space_node/node_edit.c | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/source/blender/editors/space_node/node_edit.c b/source/blender/editors/space_node/node_edit.c index 4adbd32cf37..80fc5f68591 100644 --- a/source/blender/editors/space_node/node_edit.c +++ b/source/blender/editors/space_node/node_edit.c @@ -3429,8 +3429,6 @@ static int node_add_file_exec(bContext *C, wmOperator *op) Image *ima= NULL; bNodeTemplate ntemp; - ntemp.type = -1; - /* check input variables */ if (RNA_struct_property_is_set(op->ptr, "filepath")) { char path[FILE_MAX]; @@ -3458,12 +3456,20 @@ static int node_add_file_exec(bContext *C, wmOperator *op) node_deselect_all(snode); - if (snode->nodetree->type==NTREE_COMPOSIT) - ntemp.type = CMP_NODE_IMAGE; - - if (ntemp.type < 0) - return OPERATOR_CANCELLED; - + switch (snode->nodetree->type) { + case NTREE_SHADER: + ntemp.type = SH_NODE_TEX_IMAGE; + break; + case NTREE_TEXTURE: + ntemp.type = TEX_NODE_IMAGE; + break; + case NTREE_COMPOSIT: + ntemp.type = CMP_NODE_IMAGE; + break; + default: + return OPERATOR_CANCELLED; + } + ED_preview_kill_jobs(C); node = node_add_node(snode, bmain, scene, &ntemp, snode->mx, snode->my); @@ -3504,9 +3510,9 @@ void NODE_OT_add_file(wmOperatorType *ot) ot->idname= "NODE_OT_add_file"; /* callbacks */ - ot->exec= node_add_file_exec; + ot->exec= node_add_file_exec; ot->invoke= node_add_file_invoke; - ot->poll= composite_node_active; + ot->poll= ED_operator_node_active; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; |