[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [44881] trunk/blender/source/blender/ editors/space_node: Use helper functions in node_select when selecting/ deselecting nodes and sockets in operators.

Lukas Toenne lukas.toenne at googlemail.com
Wed Mar 14 19:10:58 CET 2012


Revision: 44881
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=44881
Author:   lukastoenne
Date:     2012-03-14 18:10:57 +0000 (Wed, 14 Mar 2012)
Log Message:
-----------
Use helper functions in node_select when selecting/deselecting nodes and sockets in operators. This ensure that sockets are not selected on their own (parent node is always selected too).

Modified Paths:
--------------
    trunk/blender/source/blender/editors/space_node/node_edit.c
    trunk/blender/source/blender/editors/space_node/node_intern.h
    trunk/blender/source/blender/editors/space_node/node_select.c

Modified: trunk/blender/source/blender/editors/space_node/node_edit.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/node_edit.c	2012-03-14 17:52:50 UTC (rev 44880)
+++ trunk/blender/source/blender/editors/space_node/node_edit.c	2012-03-14 18:10:57 UTC (rev 44881)
@@ -825,8 +825,8 @@
 		
 		/* deselect all other nodes, so we can also do grabbing of entire subtree */
 		for(node= snode->nodetree->nodes.first; node; node= node->next)
-			node->flag &= ~SELECT;
-		gnode->flag |= SELECT;
+			node_deselect(node);
+		node_select(gnode);
 	}
 	else 
 		snode->edittree= snode->nodetree;
@@ -2115,7 +2115,7 @@
 	if(node) {
 		node->locx= locx;
 		node->locy= locy + 60.0f;		// arbitrary.. so its visible, (0,0) is top of node
-		node->flag |= SELECT;
+		node_select(node);
 		
 		gnode= node_tree_get_editgroup(snode->nodetree);
 		if(gnode) {
@@ -2157,7 +2157,6 @@
 	SpaceNode *snode= CTX_wm_space_node(C);
 	bNodeTree *ntree= snode->edittree;
 	bNode *node, *newnode, *lastnode;
-	bNodeSocket *sock;
 	bNodeLink *link, *newlink, *lastlink;
 	int keep_inputs = RNA_boolean_get(op->ptr, "keep_inputs");
 	
@@ -2220,14 +2219,9 @@
 			/* has been set during copy above */
 			newnode = node->new_node;
 			
-			node->flag &= ~(NODE_SELECT|NODE_ACTIVE);
-			newnode->flag |= NODE_SELECT;
-		
-			/* deselect old node sockets */
-			for (sock=node->inputs.first; sock; sock=sock->next)
-				sock->flag &= ~SELECT;
-			for (sock=node->outputs.first; sock; sock=sock->next)
-				sock->flag &= ~SELECT;
+			node_deselect(node);
+			node->flag &= ~NODE_ACTIVE;
+			node_select(newnode);
 		}
 		
 		/* make sure we don't copy new nodes again! */
@@ -2340,7 +2334,7 @@
 					}
 					
 					/* hilight target socket */
-					tsock->flag |= SELECT;
+					node_socket_select(tnode, tsock);
 				}
 				else {
 					if (link->tonode || link->tosock) {
@@ -2375,7 +2369,7 @@
 					}
 					
 					/* hilight target socket */
-					tsock->flag |= SELECT;
+					node_socket_select(tnode, tsock);
 				}
 				else {
 					if (link->tonode || link->tosock) {
@@ -2478,7 +2472,7 @@
 		
 		/* hilight source socket only */
 		node_deselect_all_output_sockets(snode, 0);
-		nldrag->sock->flag |= SELECT;
+		node_socket_select(nldrag->node, nldrag->sock);
 	}
 	/* or an input? */
 	else if(node_find_indicated_socket(snode, &nldrag->node, &nldrag->sock, SOCK_IN)) {
@@ -2504,7 +2498,7 @@
 		
 		/* hilight source socket only */
 		node_deselect_all_input_sockets(snode, 0);
-		nldrag->sock->flag |= SELECT;
+		node_socket_select(nldrag->node, nldrag->sock);
 	}
 	
 	return in_out;

Modified: trunk/blender/source/blender/editors/space_node/node_intern.h
===================================================================
--- trunk/blender/source/blender/editors/space_node/node_intern.h	2012-03-14 17:52:50 UTC (rev 44880)
+++ trunk/blender/source/blender/editors/space_node/node_intern.h	2012-03-14 18:10:57 UTC (rev 44881)
@@ -81,7 +81,11 @@
 void node_keymap(wmKeyConfig *keyconf);
 
 /* node_select.c */
+void node_select(struct bNode *node);
+void node_deselect(struct bNode *node);
 void node_deselect_all(struct SpaceNode *snode);
+void node_socket_select(struct bNode *node, struct bNodeSocket *sock);
+void node_socket_deselect(struct bNode *node, struct bNodeSocket *sock, int deselect_node);
 void node_deselect_all_input_sockets(struct SpaceNode *snode, int deselect_nodes);
 void node_deselect_all_output_sockets(struct SpaceNode *snode, int deselect_nodes);
 int node_select_same_type(struct SpaceNode *snode);

Modified: trunk/blender/source/blender/editors/space_node/node_select.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/node_select.c	2012-03-14 17:52:50 UTC (rev 44880)
+++ trunk/blender/source/blender/editors/space_node/node_select.c	2012-03-14 18:10:57 UTC (rev 44881)
@@ -173,12 +173,12 @@
 	}
 }
 
-static void node_select(bNode *node)
+void node_select(bNode *node)
 {
 	node->flag |= SELECT;
 }
 
-static void node_deselect(bNode *node)
+void node_deselect(bNode *node)
 {
 	bNodeSocket *sock;
 	
@@ -199,7 +199,7 @@
 		node_select(node);
 }
 
-static void node_socket_select(bNode *node, bNodeSocket *sock)
+void node_socket_select(bNode *node, bNodeSocket *sock)
 {
 	sock->flag |= SELECT;
 	
@@ -208,7 +208,7 @@
 		node->flag |= SELECT;
 }
 
-static void node_socket_deselect(bNode *node, bNodeSocket *sock, int deselect_node)
+void node_socket_deselect(bNode *node, bNodeSocket *sock, int deselect_node)
 {
 	sock->flag &= ~SELECT;
 	




More information about the Bf-blender-cvs mailing list