From 190159589840547c9b58b8d639a76313cee9478b Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 7 Mar 2019 23:41:32 +1100 Subject: Tool System: use set/add/subtract for all lasso select operators --- source/blender/editors/mask/mask_select.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) (limited to 'source/blender/editors/mask') 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 *********************/ -- cgit v1.2.3