Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2019-03-07 15:41:32 +0300
committerCampbell Barton <ideasman42@gmail.com>2019-03-07 15:45:58 +0300
commit190159589840547c9b58b8d639a76313cee9478b (patch)
tree931089016e76532c63129387aec87e80cd83500f /source/blender/editors/mask
parenta280867ac2ed924e25f72d020c004b83044a1f51 (diff)
Tool System: use set/add/subtract for all lasso select operators
Diffstat (limited to 'source/blender/editors/mask')
-rw-r--r--source/blender/editors/mask/mask_select.c23
1 files changed, 12 insertions, 11 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 *********************/