Nodes: move select all into a utility function
This commit is contained in:
@@ -91,6 +91,7 @@ void ED_node_shader_default(const struct bContext *C, struct ID *id);
|
||||
void ED_node_composit_default(const struct bContext *C, struct Scene *scene);
|
||||
void ED_node_texture_default(const struct bContext *C, struct Tex *tex);
|
||||
bool ED_node_select_check(ListBase *lb);
|
||||
void ED_node_select_all(ListBase *lb, int action);
|
||||
void ED_node_post_apply_transform(struct bContext *C, struct bNodeTree *ntree);
|
||||
void ED_node_set_active(struct Main *bmain, struct bNodeTree *ntree, struct bNode *node);
|
||||
|
||||
|
||||
@@ -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...
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user