diff options
author | Lukas Toenne <lukas.toenne@googlemail.com> | 2012-03-14 22:10:57 +0400 |
---|---|---|
committer | Lukas Toenne <lukas.toenne@googlemail.com> | 2012-03-14 22:10:57 +0400 |
commit | 6f7eb383c872ead4182ee4257d8072d8582e0ef7 (patch) | |
tree | f20e427762fe7230eb2746e80e3945ddab9d4b30 /source/blender/editors/space_node | |
parent | 6624090a23fbb67fe45bab2dcbfe4e211c729a14 (diff) |
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).
Diffstat (limited to 'source/blender/editors/space_node')
-rw-r--r-- | source/blender/editors/space_node/node_edit.c | 26 | ||||
-rw-r--r-- | source/blender/editors/space_node/node_intern.h | 4 | ||||
-rw-r--r-- | source/blender/editors/space_node/node_select.c | 8 |
3 files changed, 18 insertions, 20 deletions
diff --git a/source/blender/editors/space_node/node_edit.c b/source/blender/editors/space_node/node_edit.c index 8587133976d..235e8e6c605 100644 --- a/source/blender/editors/space_node/node_edit.c +++ b/source/blender/editors/space_node/node_edit.c @@ -825,8 +825,8 @@ void snode_make_group_editable(SpaceNode *snode, bNode *gnode) /* 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 @@ bNode *node_add_node(SpaceNode *snode, Main *bmain, Scene *scene, bNodeTemplate 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 @@ static int node_duplicate_exec(bContext *C, wmOperator *op) 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 @@ static int node_duplicate_exec(bContext *C, wmOperator *op) /* 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 @@ static int node_link_modal(bContext *C, wmOperator *op, wmEvent *event) } /* hilight target socket */ - tsock->flag |= SELECT; + node_socket_select(tnode, tsock); } else { if (link->tonode || link->tosock) { @@ -2375,7 +2369,7 @@ static int node_link_modal(bContext *C, wmOperator *op, wmEvent *event) } /* hilight target socket */ - tsock->flag |= SELECT; + node_socket_select(tnode, tsock); } else { if (link->tonode || link->tosock) { @@ -2478,7 +2472,7 @@ static int node_link_init(SpaceNode *snode, bNodeLinkDrag *nldrag) /* 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 @@ static int node_link_init(SpaceNode *snode, bNodeLinkDrag *nldrag) /* 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; diff --git a/source/blender/editors/space_node/node_intern.h b/source/blender/editors/space_node/node_intern.h index c2a418af064..ea8fdd8059b 100644 --- a/source/blender/editors/space_node/node_intern.h +++ b/source/blender/editors/space_node/node_intern.h @@ -81,7 +81,11 @@ void node_operatortypes(void); 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); diff --git a/source/blender/editors/space_node/node_select.c b/source/blender/editors/space_node/node_select.c index 3a92f90675f..f354fd7472d 100644 --- a/source/blender/editors/space_node/node_select.c +++ b/source/blender/editors/space_node/node_select.c @@ -173,12 +173,12 @@ static void node_sort(bNodeTree *ntree) } } -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 @@ static void node_toggle(bNode *node) 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 @@ static void node_socket_select(bNode *node, bNodeSocket *sock) 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; |