Revision: 36227
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=36227
Author:   lukastoenne
Date:     2011-04-19 15:15:50 +0000 (Tue, 19 Apr 2011)
Log Message:
-----------
Corrected updating inside edited groups, fix for #27018. This was caused by 
edit updates being restricted to the actual node. Edit functions now should use 
the generic snode_tag_changed, which also updates all instances of the 
currently edited group.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/node.c
    trunk/blender/source/blender/editors/space_node/node_edit.c

Modified: trunk/blender/source/blender/blenkernel/intern/node.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/node.c       2011-04-19 
14:36:26 UTC (rev 36226)
+++ trunk/blender/source/blender/blenkernel/intern/node.c       2011-04-19 
15:15:50 UTC (rev 36227)
@@ -56,7 +56,6 @@
 #include "BKE_fcurve.h"
 #include "BKE_node.h"
 #include "BKE_utildefines.h"
-#include "BKE_node.h"
 
 #include "PIL_time.h"
 

Modified: trunk/blender/source/blender/editors/space_node/node_edit.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/node_edit.c 2011-04-19 
14:36:26 UTC (rev 36226)
+++ trunk/blender/source/blender/editors/space_node/node_edit.c 2011-04-19 
15:15:50 UTC (rev 36227)
@@ -460,6 +460,19 @@
                node_tree_from_ID(snode->id, &snode->nodetree, 
&snode->edittree, NULL);
 }
 
+static void snode_tag_changed(SpaceNode *snode, bNode *node)
+{
+       bNode *gnode;
+       
+       if (node)
+               NodeTagChanged(snode->edittree, node);
+       
+       /* if inside group, tag entire group */
+       gnode= node_tree_get_editgroup(snode->nodetree);
+       if(gnode)
+               NodeTagIDChanged(snode->nodetree, gnode->id);
+}
+
 void node_set_active(SpaceNode *snode, bNode *node)
 {
        nodeSetActive(snode->edittree, node);
@@ -508,15 +521,8 @@
                                
                                node->flag |= NODE_DO_OUTPUT;
                                if(was_output==0) {
-                                       bNode *gnode;
+                                       snode_tag_changed(snode, node);
                                        
-                                       NodeTagChanged(snode->edittree, node);
-                                       
-                                       /* if inside group, tag entire group */
-                                       gnode= 
node_tree_get_editgroup(snode->nodetree);
-                                       if(gnode)
-                                               
NodeTagIDChanged(snode->nodetree, gnode->id);
-                                       
                                        ED_node_changed_update(snode->id, node);
                                }
                                
@@ -1553,7 +1559,7 @@
                                link->fromsock= sock;
                        }
                        ntreeSolveOrder(snode->edittree);
-                       NodeTagChanged(snode->edittree, node);
+                       snode_tag_changed(snode, node);
                }
        }
 }
@@ -1896,7 +1902,7 @@
                        if (replace)
                                nodeRemSocketLinks(snode->edittree, sock_to);
                        nodeAddLink(snode->edittree, node_fr, sock_fr, node_to, 
sock_to);
-                       NodeTagChanged(snode->edittree, node_to);
+                       snode_tag_changed(snode, node_to);
                        ++numlinks;
                        break;
                }
@@ -1960,7 +1966,7 @@
                if(node->id)
                        id_us_plus(node->id);
                        
-               NodeTagChanged(snode->edittree, node);
+               snode_tag_changed(snode, node);
        }
        
        if(snode->nodetree->type==NTREE_TEXTURE) {
@@ -2135,8 +2141,7 @@
                case MIDDLEMOUSE:
                        if(link->tosock && link->fromsock) {
                                /* send changed events for original tonode and 
new */
-                               if(link->tonode)
-                                       NodeTagChanged(snode->edittree, 
link->tonode);
+                               snode_tag_changed(snode, link->tonode);
                                
                                /* we might need to remove a link */
                                if(in_out==SOCK_OUT)
@@ -2209,7 +2214,7 @@
                        if(link) {
                                /* send changed event to original tonode */
                                if(link->tonode) 
-                                       NodeTagChanged(snode->edittree, 
link->tonode);
+                                       snode_tag_changed(snode, link->tonode);
                                
                                nldrag->node= link->fromnode;
                                nldrag->sock= link->fromsock;
@@ -2363,7 +2368,7 @@
                        next= link->next;
                        
                        if(cut_links_intersect(link, mcoords, i)) {
-                               NodeTagChanged(snode->edittree, link->tonode);
+                               snode_tag_changed(snode, link->tonode);
                                nodeRemLink(snode->edittree, link);
                        }
                }
@@ -2746,7 +2751,7 @@
                if(node->flag & SELECT) {
                        if(node->inputs.first && node->outputs.first) {
                                node->flag ^= NODE_MUTED;
-                               NodeTagChanged(snode->edittree, node);
+                               snode_tag_changed(snode, node);
                        }
                }
        }

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to