Todo items:
[blender.git] / source / blender / editors / space_node / node_edit.c
index 7db20966a8b656aa94e0a48bbb33f3e3c54b9cdb..ead3eccd16cae39a8f9f8afd38744ecc89a4b50b 100644 (file)
@@ -211,6 +211,8 @@ bNode *editnode_get_active(bNodeTree *ntree)
 
 void snode_notify(bContext *C, SpaceNode *snode)
 {
+       WM_event_add_notifier(C, NC_NODE|NA_EDITED, NULL);
+
        if(snode->treetype==NTREE_SHADER)
                WM_event_add_notifier(C, NC_MATERIAL|ND_NODES, snode->id);
        else if(snode->treetype==NTREE_COMPOSIT)
@@ -1464,7 +1466,7 @@ bNode *node_add_node(SpaceNode *snode, Scene *scene, int type, float locx, float
        /* generics */
        if(node) {
                node->locx= locx;
-               node->locy= locy + 60.0f;               // arbitrary.. so its visible
+               node->locy= locy + 60.0f;               // arbitrary.. so its visible, (0,0) is top of node
                node->flag |= SELECT;
                
                gnode= node_tree_get_editgroup(snode->nodetree);
@@ -1515,6 +1517,12 @@ static int node_duplicate_exec(bContext *C, wmOperator *UNUSED(op))
 
        ntreeCopyTree(snode->edittree, 1);      /* 1 == internally selected nodes */
        
+       /* to ensure redraws or rerenders happen */
+       for(node= snode->edittree->nodes.first; node; node= node->next)
+               if(node->flag & SELECT)
+                       if(node->id)
+                               ED_node_changed_update(node->id, node);
+       
        ntreeSolveOrder(snode->edittree);
        node_tree_verify_groups(snode->nodetree);
        snode_notify(C, snode);