Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuho Vepsalainen <bebraw@gmail.com>2008-01-07 15:55:37 +0300
committerJuho Vepsalainen <bebraw@gmail.com>2008-01-07 15:55:37 +0300
commite895b7a36aa2eb3f0af246d28ccf592767f28de4 (patch)
treefd97bc9064d2d6844a611322b0232e13c9a29184 /source/blender/src/editnode.c
parent5efa093dfc863c65c6dabc90749610fb9b175c34 (diff)
Conversion of "Toggle Link" tool to "Make Link"
This commit alters the behaviour of "Toggle Link" tool found in the node editor so that it only makes link between selected sockets. Links cannot be deleted by using the tool again as before. Instead deleting links can be done by using the old method (drag with lmb). The delete functionality may require further investigation to see if it should be improved.
Diffstat (limited to 'source/blender/src/editnode.c')
-rw-r--r--source/blender/src/editnode.c27
1 files changed, 12 insertions, 15 deletions
diff --git a/source/blender/src/editnode.c b/source/blender/src/editnode.c
index d035908994c..660d198aee1 100644
--- a/source/blender/src/editnode.c
+++ b/source/blender/src/editnode.c
@@ -1855,34 +1855,31 @@ void node_select_linked(SpaceNode *snode, int out)
allqueue(REDRAWNODE, 1);
}
-void node_toggle_link(SpaceNode *snode)
+/* makes a link between selected output and input sockets */
+void node_make_link(SpaceNode *snode)
{
bNode *fromnode, *tonode;
- bNodeLink *remlink, *link;
+ bNodeLink *link;
bNodeSocket *outsock= snode->edittree->selout;
bNodeSocket *insock= snode->edittree->selin;
if(!insock || !outsock) return;
+ if(nodeFindLink(snode->edittree, outsock, insock)) return;
- remlink= nodeFindLink(snode->edittree, outsock, insock);
-
- if(remlink) nodeRemLink(snode->edittree, remlink);
- else {
- if(nodeFindNode(snode->edittree, outsock, &fromnode, NULL) &&
- nodeFindNode(snode->edittree, insock, &tonode, NULL)) {
- link= nodeAddLink(snode->edittree, fromnode, outsock, tonode, insock);
- NodeTagChanged(snode->edittree, tonode);
- node_remove_extra_links(snode, insock, link);
- }
- else return;
+ if(nodeFindNode(snode->edittree, outsock, &fromnode, NULL) &&
+ nodeFindNode(snode->edittree, insock, &tonode, NULL)) {
+ link= nodeAddLink(snode->edittree, fromnode, outsock, tonode, insock);
+ NodeTagChanged(snode->edittree, tonode);
+ node_remove_extra_links(snode, insock, link);
}
+ else return;
ntreeSolveOrder(snode->edittree);
snode_verify_groups(snode);
snode_handle_recalc(snode);
allqueue(REDRAWNODE, 0);
- BIF_undo_push("Toggle Link");
+ BIF_undo_push("Make Link Between Sockets");
}
static void node_border_link_delete(SpaceNode *snode)
@@ -2278,7 +2275,7 @@ void winqreadnodespace(ScrArea *sa, void *spacedata, BWinEvent *evt)
snode_handle_recalc(snode);
break;
case FKEY:
- node_toggle_link(snode);
+ node_make_link(snode);
break;
case GKEY:
if(fromlib) fromlib= -1;