diff options
author | Campbell Barton <ideasman42@gmail.com> | 2012-08-04 03:44:19 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2012-08-04 03:44:19 +0400 |
commit | ee86f7fe159b5f90978b4931c4262a4aa95afab7 (patch) | |
tree | 741fc6d39a29139b38c091478525c73a23eec3f7 | |
parent | 28ab27a49a7c34a46fecb31547e7fadf001ead5b (diff) |
dont re-combute composite nodes when knife and add-socket operators don't add any links.
-rw-r--r-- | source/blender/editors/space_node/node_add.c | 17 | ||||
-rw-r--r-- | source/blender/editors/space_node/node_relationships.c | 23 |
2 files changed, 27 insertions, 13 deletions
diff --git a/source/blender/editors/space_node/node_add.c b/source/blender/editors/space_node/node_add.c index 20429d832b5..c7bc9146965 100644 --- a/source/blender/editors/space_node/node_add.c +++ b/source/blender/editors/space_node/node_add.c @@ -155,13 +155,14 @@ static int add_reroute_exec(bContext *C, wmOperator *op) bNodeLink *link; float insertPoint[2]; - ED_preview_kill_jobs(C); - for (link = snode->edittree->links.first; link; link = link->next) { if (add_reroute_intersect_check(link, mcoords, i, insertPoint)) { bNodeTemplate ntemp; bNode *rerouteNode; + /* always first */ + ED_preview_kill_jobs(C); + node_deselect_all(snode); ntemp.type = NODE_REROUTE; @@ -178,15 +179,17 @@ static int add_reroute_exec(bContext *C, wmOperator *op) link->fromnode = rerouteNode; link->fromsock = rerouteNode->outputs.first; - break; // add one reroute at the time. + /* always last */ + ntreeUpdateTree(snode->edittree); + snode_notify(C, snode); + snode_dag_update(C, snode); + + return OPERATOR_FINISHED; // add one reroute at the time. } } - ntreeUpdateTree(snode->edittree); - snode_notify(C, snode); - snode_dag_update(C, snode); + return OPERATOR_CANCELLED; - return OPERATOR_FINISHED; } return OPERATOR_CANCELLED | OPERATOR_PASS_THROUGH; diff --git a/source/blender/editors/space_node/node_relationships.c b/source/blender/editors/space_node/node_relationships.c index cda736d199a..5c59555a0ed 100644 --- a/source/blender/editors/space_node/node_relationships.c +++ b/source/blender/editors/space_node/node_relationships.c @@ -836,24 +836,35 @@ static int cut_links_exec(bContext *C, wmOperator *op) RNA_END; if (i > 1) { + int found = FALSE; bNodeLink *link, *next; - ED_preview_kill_jobs(C); - for (link = snode->edittree->links.first; link; link = next) { next = link->next; if (cut_links_intersect(link, mcoords, i)) { + + if (found == FALSE) { + ED_preview_kill_jobs(C); + found = TRUE; + } + snode_update(snode, link->tonode); nodeRemLink(snode->edittree, link); } } - ntreeUpdateTree(snode->edittree); - snode_notify(C, snode); - snode_dag_update(C, snode); + if (found) { + ntreeUpdateTree(snode->edittree); + snode_notify(C, snode); + snode_dag_update(C, snode); + + return OPERATOR_FINISHED; + } + else { + return OPERATOR_CANCELLED; + } - return OPERATOR_FINISHED; } return OPERATOR_CANCELLED | OPERATOR_PASS_THROUGH; |