[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [36227] trunk/blender/source/blender: Corrected updating inside edited groups, fix for #27018.

Lukas Toenne lukas.toenne at googlemail.com
Tue Apr 19 17:15:50 CEST 2011


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);
 			}
 		}
 	}




More information about the Bf-blender-cvs mailing list