diff options
author | Campbell Barton <ideasman42@gmail.com> | 2019-03-07 15:41:32 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2019-03-07 15:45:58 +0300 |
commit | 190159589840547c9b58b8d639a76313cee9478b (patch) | |
tree | 931089016e76532c63129387aec87e80cd83500f /source/blender/editors/space_node | |
parent | a280867ac2ed924e25f72d020c004b83044a1f51 (diff) |
Tool System: use set/add/subtract for all lasso select operators
Diffstat (limited to 'source/blender/editors/space_node')
-rw-r--r-- | source/blender/editors/space_node/node_select.c | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/source/blender/editors/space_node/node_select.c b/source/blender/editors/space_node/node_select.c index 88687af7444..7933f280abf 100644 --- a/source/blender/editors/space_node/node_select.c +++ b/source/blender/editors/space_node/node_select.c @@ -681,7 +681,7 @@ static int node_lasso_select_invoke(bContext *C, wmOperator *op, const wmEvent * return WM_gesture_lasso_invoke(C, op, event); } -static bool do_lasso_select_node(bContext *C, const int mcords[][2], short moves, bool select, bool extend) +static bool do_lasso_select_node(bContext *C, const int mcords[][2], short moves, eSelectOp sel_op) { SpaceNode *snode = CTX_wm_space_node(C); bNode *node; @@ -691,13 +691,19 @@ static bool do_lasso_select_node(bContext *C, const int mcords[][2], short moves rcti rect; bool changed = false; + const bool select = (sel_op != SEL_OP_SUB); + if (SEL_OP_USE_PRE_DESELECT(sel_op)) { + ED_node_select_all(&snode->edittree->nodes, SEL_DESELECT); + changed = true; + } + /* get rectangle from operator */ BLI_lasso_boundbox(&rect, mcords, moves); /* do actual selection */ for (node = snode->edittree->nodes.first; node; node = node->next) { - if (node->flag & NODE_SELECT && select && extend) { + if (select && (node->flag & NODE_SELECT)) { continue; } @@ -713,10 +719,6 @@ static bool do_lasso_select_node(bContext *C, const int mcords[][2], short moves nodeSetSelected(node, select); changed = true; } - else if (select && !extend) { - nodeSetSelected(node, false); - changed = true; - } } if (changed) { @@ -732,9 +734,9 @@ static int node_lasso_select_exec(bContext *C, wmOperator *op) const int (*mcords)[2] = WM_gesture_lasso_path_to_array(C, op, &mcords_tot); if (mcords) { - const bool select = !RNA_boolean_get(op->ptr, "deselect"); - const bool extend = RNA_boolean_get(op->ptr, "extend"); - do_lasso_select_node(C, mcords, mcords_tot, select, extend); + const eSelectOp sel_op = RNA_enum_get(op->ptr, "mode"); + + do_lasso_select_node(C, mcords, mcords_tot, sel_op); MEM_freeN((void *)mcords); @@ -761,8 +763,10 @@ void NODE_OT_select_lasso(wmOperatorType *ot) ot->flag = OPTYPE_UNDO; /* properties */ - WM_operator_properties_gesture_lasso_select(ot); RNA_def_boolean(ot->srna, "tweak", 0, "Tweak", "Only activate when mouse is not over a node - useful for tweak gesture"); + + WM_operator_properties_gesture_lasso(ot); + WM_operator_properties_select_operation_simple(ot); } /* ****** Select/Deselect All ****** */ |