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 | |
parent | a280867ac2ed924e25f72d020c004b83044a1f51 (diff) |
Tool System: use set/add/subtract for all lasso select operators
Diffstat (limited to 'source/blender/editors')
-rw-r--r-- | source/blender/editors/mask/mask_select.c | 23 | ||||
-rw-r--r-- | source/blender/editors/space_action/action_select.c | 18 | ||||
-rw-r--r-- | source/blender/editors/space_clip/tracking_select.c | 12 | ||||
-rw-r--r-- | source/blender/editors/space_graph/graph_select.c | 19 | ||||
-rw-r--r-- | source/blender/editors/space_node/node_select.c | 24 |
5 files changed, 48 insertions, 48 deletions
diff --git a/source/blender/editors/mask/mask_select.c b/source/blender/editors/mask/mask_select.c index 9bda6f7a92d..34a43946fc6 100644 --- a/source/blender/editors/mask/mask_select.c +++ b/source/blender/editors/mask/mask_select.c @@ -474,7 +474,7 @@ void MASK_OT_select_box(wmOperatorType *ot) WM_operator_properties_select_operation_simple(ot); } -static bool do_lasso_select_mask(bContext *C, const int mcords[][2], short moves, bool select, bool extend) +static bool do_lasso_select_mask(bContext *C, const int mcords[][2], short moves, const eSelectOp sel_op) { ScrArea *sa = CTX_wm_area(C); ARegion *ar = CTX_wm_region(C); @@ -486,6 +486,12 @@ static bool do_lasso_select_mask(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_mask_select_toggle_all(mask, SEL_DESELECT); + changed = true; + } + /* get rectangle from operator */ BLI_lasso_boundbox(&rect, mcords, moves); @@ -507,7 +513,7 @@ static bool do_lasso_select_mask(bContext *C, const int mcords[][2], short moves /* TODO: handles? */ /* TODO: uw? */ - if (MASKPOINT_ISSEL_ANY(point) && select && extend) { + if (MASKPOINT_ISSEL_ANY(point) && select) { continue; } @@ -525,11 +531,6 @@ static bool do_lasso_select_mask(bContext *C, const int mcords[][2], short moves BKE_mask_point_select_set_handle(point, MASK_WHICH_HANDLE_BOTH, select); changed = true; } - else if (select && !extend) { - BKE_mask_point_select_set(point, false); - BKE_mask_point_select_set_handle(point, MASK_WHICH_HANDLE_BOTH, false); - changed = true; - } } } } @@ -549,9 +550,8 @@ static int clip_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_mask(C, mcords, mcords_tot, select, extend); + const eSelectOp sel_op = RNA_enum_get(op->ptr, "mode"); + do_lasso_select_mask(C, mcords, mcords_tot, sel_op); MEM_freeN((void *)mcords); @@ -578,7 +578,8 @@ void MASK_OT_select_lasso(wmOperatorType *ot) ot->flag = OPTYPE_UNDO; /* properties */ - WM_operator_properties_gesture_lasso_select(ot); + WM_operator_properties_gesture_lasso(ot); + WM_operator_properties_select_operation_simple(ot); } /********************** circle select operator *********************/ diff --git a/source/blender/editors/space_action/action_select.c b/source/blender/editors/space_action/action_select.c index ed63cb523de..872f889e8b4 100644 --- a/source/blender/editors/space_action/action_select.c +++ b/source/blender/editors/space_action/action_select.c @@ -542,9 +542,6 @@ static int actkeys_lassoselect_exec(bContext *C, wmOperator *op) rcti rect; rctf rect_fl; - short selectmode; - bool extend; - /* get editor data */ if (ANIM_animdata_get_context(C, &ac) == 0) return OPERATOR_CANCELLED; @@ -554,15 +551,11 @@ static int actkeys_lassoselect_exec(bContext *C, wmOperator *op) if (data_lasso.mcords == NULL) return OPERATOR_CANCELLED; - /* clear all selection if not extending selection */ - extend = RNA_boolean_get(op->ptr, "extend"); - if (!extend) + const eSelectOp sel_op = RNA_enum_get(op->ptr, "mode"); + const int selectmode = (sel_op != SEL_OP_SUB) ? SELECT_ADD : SELECT_SUBTRACT; + if (SEL_OP_USE_PRE_DESELECT(sel_op)) { deselect_action_keys(&ac, 1, SELECT_SUBTRACT); - - if (!RNA_boolean_get(op->ptr, "deselect")) - selectmode = SELECT_ADD; - else - selectmode = SELECT_SUBTRACT; + } /* get settings from operator */ BLI_lasso_boundbox(&rect, data_lasso.mcords, data_lasso.mcords_tot); @@ -597,7 +590,8 @@ void ACTION_OT_select_lasso(wmOperatorType *ot) ot->flag = OPTYPE_UNDO; /* properties */ - WM_operator_properties_gesture_lasso_select(ot); + WM_operator_properties_gesture_lasso(ot); + WM_operator_properties_select_operation_simple(ot); } /* ------------------- */ diff --git a/source/blender/editors/space_clip/tracking_select.c b/source/blender/editors/space_clip/tracking_select.c index e25bf22db91..0c0fe60108f 100644 --- a/source/blender/editors/space_clip/tracking_select.c +++ b/source/blender/editors/space_clip/tracking_select.c @@ -622,10 +622,15 @@ static int clip_lasso_select_exec(bContext *C, wmOperator *op) int mcords_tot; const int (*mcords)[2] = WM_gesture_lasso_path_to_array(C, op, &mcords_tot); + if (mcords) { - bool select; + const eSelectOp sel_op = RNA_enum_get(op->ptr, "mode"); + const bool select = (sel_op != SEL_OP_SUB); + if (SEL_OP_USE_PRE_DESELECT(sel_op)) { + SpaceClip *sc = CTX_wm_space_clip(C); + ED_clip_select_all(sc, SEL_DESELECT, NULL); + } - select = !RNA_boolean_get(op->ptr, "deselect"); do_lasso_select_marker(C, mcords, mcords_tot, select); MEM_freeN((void *)mcords); @@ -653,7 +658,8 @@ void CLIP_OT_select_lasso(wmOperatorType *ot) ot->flag = OPTYPE_UNDO; /* properties */ - WM_operator_properties_gesture_lasso_select(ot); + WM_operator_properties_gesture_lasso(ot); + WM_operator_properties_select_operation_simple(ot); } /********************** circle select operator *********************/ diff --git a/source/blender/editors/space_graph/graph_select.c b/source/blender/editors/space_graph/graph_select.c index 0ff36c407d7..681e46e9daf 100644 --- a/source/blender/editors/space_graph/graph_select.c +++ b/source/blender/editors/space_graph/graph_select.c @@ -420,9 +420,7 @@ static int graphkeys_lassoselect_exec(bContext *C, wmOperator *op) rcti rect; rctf rect_fl; - short selectmode; bool incl_handles; - bool extend; /* get editor data */ if (ANIM_animdata_get_context(C, &ac) == 0) @@ -433,15 +431,11 @@ static int graphkeys_lassoselect_exec(bContext *C, wmOperator *op) if (data_lasso.mcords == NULL) return OPERATOR_CANCELLED; - /* clear all selection if not extending selection */ - extend = RNA_boolean_get(op->ptr, "extend"); - if (!extend) - deselect_graph_keys(&ac, 1, SELECT_SUBTRACT, true); - - if (!RNA_boolean_get(op->ptr, "deselect")) - selectmode = SELECT_ADD; - else - selectmode = SELECT_SUBTRACT; + const eSelectOp sel_op = RNA_enum_get(op->ptr, "mode"); + const short selectmode = (sel_op != SEL_OP_SUB) ? SELECT_ADD : SELECT_SUBTRACT; + if (SEL_OP_USE_PRE_DESELECT(sel_op)) { + deselect_graph_keys(&ac, 0, SELECT_SUBTRACT, true); + } { SpaceGraph *sipo = (SpaceGraph *)ac.sl; @@ -487,7 +481,8 @@ void GRAPH_OT_select_lasso(wmOperatorType *ot) ot->flag = OPTYPE_UNDO; /* properties */ - WM_operator_properties_gesture_lasso_select(ot); + WM_operator_properties_gesture_lasso(ot); + WM_operator_properties_select_operation_simple(ot); } /* ------------------- */ 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 ****** */ |