Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/mask/mask_select.c
| Show All 37 Lines | |||||
| #include "ED_screen.h" | #include "ED_screen.h" | ||||
| #include "ED_select_utils.h" | #include "ED_select_utils.h" | ||||
| #include "ED_mask.h" /* own include */ | #include "ED_mask.h" /* own include */ | ||||
| #include "RNA_access.h" | #include "RNA_access.h" | ||||
| #include "RNA_define.h" | #include "RNA_define.h" | ||||
| #include "DEG_depsgraph.h" | |||||
| #include "mask_intern.h" /* own include */ | #include "mask_intern.h" /* own include */ | ||||
| /* -------------------------------------------------------------------- */ | /* -------------------------------------------------------------------- */ | ||||
| /** \name Public Mask Selection API | /** \name Public Mask Selection API | ||||
| * \{ */ | * \{ */ | ||||
| /* 'check' select */ | /* 'check' select */ | ||||
| bool ED_mask_spline_select_check(MaskSpline *spline) | bool ED_mask_spline_select_check(MaskSpline *spline) | ||||
| ▲ Show 20 Lines • Show All 164 Lines • ▼ Show 20 Lines | |||||
| static int select_all_exec(bContext *C, wmOperator *op) | static int select_all_exec(bContext *C, wmOperator *op) | ||||
| { | { | ||||
| Mask *mask = CTX_data_edit_mask(C); | Mask *mask = CTX_data_edit_mask(C); | ||||
| int action = RNA_enum_get(op->ptr, "action"); | int action = RNA_enum_get(op->ptr, "action"); | ||||
| ED_mask_select_toggle_all(mask, action); | ED_mask_select_toggle_all(mask, action); | ||||
| ED_mask_select_flush_all(mask); | ED_mask_select_flush_all(mask); | ||||
| DEG_id_tag_update(&mask->id, ID_RECALC_SELECT); | |||||
| WM_event_add_notifier(C, NC_MASK | ND_SELECT, mask); | WM_event_add_notifier(C, NC_MASK | ND_SELECT, mask); | ||||
| return OPERATOR_FINISHED; | return OPERATOR_FINISHED; | ||||
| } | } | ||||
| void MASK_OT_select_all(wmOperatorType *ot) | void MASK_OT_select_all(wmOperatorType *ot) | ||||
| { | { | ||||
| /* identifiers */ | /* identifiers */ | ||||
| ▲ Show 20 Lines • Show All 87 Lines • ▼ Show 20 Lines | else { | ||||
| } | } | ||||
| } | } | ||||
| masklay->act_spline = spline; | masklay->act_spline = spline; | ||||
| masklay->act_point = point; | masklay->act_point = point; | ||||
| ED_mask_select_flush_all(mask); | ED_mask_select_flush_all(mask); | ||||
| DEG_id_tag_update(&mask->id, ID_RECALC_SELECT); | |||||
| WM_event_add_notifier(C, NC_MASK | ND_SELECT, mask); | WM_event_add_notifier(C, NC_MASK | ND_SELECT, mask); | ||||
| return OPERATOR_FINISHED; | return OPERATOR_FINISHED; | ||||
| } | } | ||||
| else { | else { | ||||
| MaskSplinePointUW *uw; | MaskSplinePointUW *uw; | ||||
| if (ED_mask_feather_find_nearest( | if (ED_mask_feather_find_nearest( | ||||
| Show All 23 Lines | if (ED_mask_feather_find_nearest( | ||||
| else if (toggle) { | else if (toggle) { | ||||
| uw->flag &= ~SELECT; | uw->flag &= ~SELECT; | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| ED_mask_select_flush_all(mask); | ED_mask_select_flush_all(mask); | ||||
| DEG_id_tag_update(&mask->id, ID_RECALC_SELECT); | |||||
| WM_event_add_notifier(C, NC_MASK | ND_SELECT, mask); | WM_event_add_notifier(C, NC_MASK | ND_SELECT, mask); | ||||
| return OPERATOR_FINISHED; | return OPERATOR_FINISHED; | ||||
| } | } | ||||
| else if (deselect_all) { | else if (deselect_all) { | ||||
| ED_mask_select_toggle_all(mask, SEL_DESELECT); | ED_mask_select_toggle_all(mask, SEL_DESELECT); | ||||
| ED_mask_select_flush_all(mask); | ED_mask_select_flush_all(mask); | ||||
| DEG_id_tag_update(&mask->id, ID_RECALC_SELECT); | |||||
| WM_event_add_notifier(C, NC_MASK | ND_SELECT, mask); | WM_event_add_notifier(C, NC_MASK | ND_SELECT, mask); | ||||
| return OPERATOR_FINISHED; | return OPERATOR_FINISHED; | ||||
| } | } | ||||
| } | } | ||||
| return OPERATOR_PASS_THROUGH; | return OPERATOR_PASS_THROUGH; | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 98 Lines • ▼ Show 20 Lines | for (spline = masklay->splines.first; spline; spline = spline->next) { | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| if (changed) { | if (changed) { | ||||
| ED_mask_select_flush_all(mask); | ED_mask_select_flush_all(mask); | ||||
| DEG_id_tag_update(&mask->id, ID_RECALC_SELECT); | |||||
| WM_event_add_notifier(C, NC_MASK | ND_SELECT, mask); | WM_event_add_notifier(C, NC_MASK | ND_SELECT, mask); | ||||
| return OPERATOR_FINISHED; | return OPERATOR_FINISHED; | ||||
| } | } | ||||
| return OPERATOR_CANCELLED; | return OPERATOR_CANCELLED; | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 88 Lines • ▼ Show 20 Lines | for (spline = masklay->splines.first; spline; spline = spline->next) { | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| if (changed) { | if (changed) { | ||||
| ED_mask_select_flush_all(mask); | ED_mask_select_flush_all(mask); | ||||
| DEG_id_tag_update(&mask->id, ID_RECALC_SELECT); | |||||
| WM_event_add_notifier(C, NC_MASK | ND_SELECT, mask); | WM_event_add_notifier(C, NC_MASK | ND_SELECT, mask); | ||||
| } | } | ||||
| return changed; | return changed; | ||||
| } | } | ||||
| static int clip_lasso_select_exec(bContext *C, wmOperator *op) | static int clip_lasso_select_exec(bContext *C, wmOperator *op) | ||||
| { | { | ||||
| ▲ Show 20 Lines • Show All 111 Lines • ▼ Show 20 Lines | for (spline = masklay->splines.first; spline; spline = spline->next) { | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| if (changed) { | if (changed) { | ||||
| ED_mask_select_flush_all(mask); | ED_mask_select_flush_all(mask); | ||||
| DEG_id_tag_update(&mask->id, ID_RECALC_SELECT); | |||||
| WM_event_add_notifier(C, NC_MASK | ND_SELECT, mask); | WM_event_add_notifier(C, NC_MASK | ND_SELECT, mask); | ||||
| return OPERATOR_FINISHED; | return OPERATOR_FINISHED; | ||||
| } | } | ||||
| return OPERATOR_CANCELLED; | return OPERATOR_CANCELLED; | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 48 Lines • ▼ Show 20 Lines | if (point) { | ||||
| masklay->act_point = point; | masklay->act_point = point; | ||||
| changed = true; | changed = true; | ||||
| } | } | ||||
| if (changed) { | if (changed) { | ||||
| ED_mask_select_flush_all(mask); | ED_mask_select_flush_all(mask); | ||||
| DEG_id_tag_update(&mask->id, ID_RECALC_SELECT); | |||||
| WM_event_add_notifier(C, NC_MASK | ND_SELECT, mask); | WM_event_add_notifier(C, NC_MASK | ND_SELECT, mask); | ||||
| return OPERATOR_FINISHED; | return OPERATOR_FINISHED; | ||||
| } | } | ||||
| return OPERATOR_CANCELLED; | return OPERATOR_CANCELLED; | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 41 Lines • ▼ Show 20 Lines | for (spline = masklay->splines.first; spline; spline = spline->next) { | ||||
| changed = true; | changed = true; | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| if (changed) { | if (changed) { | ||||
| ED_mask_select_flush_all(mask); | ED_mask_select_flush_all(mask); | ||||
| DEG_id_tag_update(&mask->id, ID_RECALC_SELECT); | |||||
| WM_event_add_notifier(C, NC_MASK | ND_SELECT, mask); | WM_event_add_notifier(C, NC_MASK | ND_SELECT, mask); | ||||
| return OPERATOR_FINISHED; | return OPERATOR_FINISHED; | ||||
| } | } | ||||
| return OPERATOR_CANCELLED; | return OPERATOR_CANCELLED; | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 84 Lines • ▼ Show 20 Lines | for (spline = masklay->splines.first; spline; spline = spline->next) { | ||||
| BKE_mask_point_select_set(&spline->points[i], more); | BKE_mask_point_select_set(&spline->points[i], more); | ||||
| } | } | ||||
| i--; | i--; | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| DEG_id_tag_update(&mask->id, ID_RECALC_SELECT); | |||||
| WM_event_add_notifier(C, NC_MASK | ND_SELECT, mask); | WM_event_add_notifier(C, NC_MASK | ND_SELECT, mask); | ||||
| return OPERATOR_FINISHED; | return OPERATOR_FINISHED; | ||||
| } | } | ||||
| static int mask_select_more_exec(bContext *C, wmOperator *UNUSED(op)) | static int mask_select_more_exec(bContext *C, wmOperator *UNUSED(op)) | ||||
| { | { | ||||
| return mask_select_more_less(C, true); | return mask_select_more_less(C, true); | ||||
| Show All 38 Lines | |||||