From e83854e759f61ed82c9c0ceedadf55c9a670245a Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 5 Mar 2019 18:30:06 +1100 Subject: Nodes: move select all into a utility function --- source/blender/editors/space_node/node_edit.c | 31 +++++++++++++++++++++---- source/blender/editors/space_node/node_select.c | 22 +----------------- 2 files changed, 27 insertions(+), 26 deletions(-) (limited to 'source/blender/editors/space_node') diff --git a/source/blender/editors/space_node/node_edit.c b/source/blender/editors/space_node/node_edit.c index 038ab62af78..66f0e17db0f 100644 --- a/source/blender/editors/space_node/node_edit.c +++ b/source/blender/editors/space_node/node_edit.c @@ -48,6 +48,7 @@ #include "ED_node.h" /* own include */ +#include "ED_select_utils.h" #include "ED_screen.h" #include "ED_render.h" @@ -1216,12 +1217,8 @@ void NODE_OT_duplicate(wmOperatorType *ot) } bool ED_node_select_check(ListBase *lb) - - { - bNode *node; - - for (node = lb->first; node; node = node->next) { + for (bNode *node = lb->first; node; node = node->next) { if (node->flag & NODE_SELECT) { return true; } @@ -1230,6 +1227,30 @@ bool ED_node_select_check(ListBase *lb) return false; } +void ED_node_select_all(ListBase *lb, int action) +{ + if (action == SEL_TOGGLE) { + if (ED_node_select_check(lb)) + action = SEL_DESELECT; + else + action = SEL_SELECT; + } + + for (bNode *node = lb->first; node; node = node->next) { + switch (action) { + case SEL_SELECT: + nodeSetSelected(node, true); + break; + case SEL_DESELECT: + nodeSetSelected(node, false); + break; + case SEL_INVERT: + nodeSetSelected(node, !(node->flag & SELECT)); + break; + } + } +} + /* ******************************** */ // XXX some code needing updating to operators... diff --git a/source/blender/editors/space_node/node_select.c b/source/blender/editors/space_node/node_select.c index 143ca1ffd32..747af14499e 100644 --- a/source/blender/editors/space_node/node_select.c +++ b/source/blender/editors/space_node/node_select.c @@ -763,29 +763,9 @@ static int node_select_all_exec(bContext *C, wmOperator *op) { SpaceNode *snode = CTX_wm_space_node(C); ListBase *node_lb = &snode->edittree->nodes; - bNode *node; int action = RNA_enum_get(op->ptr, "action"); - if (action == SEL_TOGGLE) { - if (ED_node_select_check(node_lb)) - action = SEL_DESELECT; - else - action = SEL_SELECT; - } - - for (node = node_lb->first; node; node = node->next) { - switch (action) { - case SEL_SELECT: - nodeSetSelected(node, true); - break; - case SEL_DESELECT: - nodeSetSelected(node, false); - break; - case SEL_INVERT: - nodeSetSelected(node, !(node->flag & SELECT)); - break; - } - } + ED_node_select_all(node_lb, action); ED_node_sort(snode->edittree); -- cgit v1.2.3