diff options
author | Campbell Barton <ideasman42@gmail.com> | 2017-10-16 13:58:51 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2017-10-16 14:21:46 +0300 |
commit | 870b4b673511094cf0beaeaf07305407ccdda47a (patch) | |
tree | fb91f7c424f1971c35d537e520c519117e38f9d9 /source/blender/editors | |
parent | 6d8f63a8343a6c0b44318f0a856dcd0fd0206131 (diff) |
WM: refactor gestures for use as tools
Border and circle select wait for input by default.
This commit uses bool properties on the operators instead of
magic number (called "gesture_mode").
Keymaps that define 'deselect' for border/circle select
begin immediately, exiting when on button release.
Diffstat (limited to 'source/blender/editors')
22 files changed, 150 insertions, 153 deletions
diff --git a/source/blender/editors/animation/anim_channels_edit.c b/source/blender/editors/animation/anim_channels_edit.c index da7b6b085c0..fc0c39e6295 100644 --- a/source/blender/editors/animation/anim_channels_edit.c +++ b/source/blender/editors/animation/anim_channels_edit.c @@ -2455,8 +2455,8 @@ static int animchannels_borderselect_exec(bContext *C, wmOperator *op) bAnimContext ac; rcti rect; short selectmode = 0; - int gesture_mode; - bool extend; + const bool select = !RNA_boolean_get(op->ptr, "deselect"); + const bool extend = RNA_boolean_get(op->ptr, "extend"); /* get editor data */ if (ANIM_animdata_get_context(C, &ac) == 0) @@ -2464,17 +2464,17 @@ static int animchannels_borderselect_exec(bContext *C, wmOperator *op) /* get settings from operator */ WM_operator_properties_border_to_rcti(op, &rect); - - gesture_mode = RNA_int_get(op->ptr, "gesture_mode"); - extend = RNA_boolean_get(op->ptr, "extend"); - if (!extend) + if (!extend) { ANIM_deselect_anim_channels(&ac, ac.data, ac.datatype, true, ACHANNEL_SETFLAG_CLEAR); + } - if (gesture_mode == GESTURE_MODAL_SELECT) + if (select) { selectmode = ACHANNEL_SETFLAG_ADD; - else + } + else { selectmode = ACHANNEL_SETFLAG_CLEAR; + } /* apply borderselect animation channels */ borderselect_anim_channels(&ac, &rect, selectmode); @@ -2504,7 +2504,7 @@ static void ANIM_OT_channels_select_border(wmOperatorType *ot) ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; /* rna */ - WM_operator_properties_gesture_border(ot, true); + WM_operator_properties_gesture_border_select(ot); } /* ******************* Rename Operator ***************************** */ diff --git a/source/blender/editors/animation/anim_markers.c b/source/blender/editors/animation/anim_markers.c index 926a41dd7ab..30aaee8cbd9 100644 --- a/source/blender/editors/animation/anim_markers.c +++ b/source/blender/editors/animation/anim_markers.c @@ -1230,7 +1230,7 @@ static int ed_marker_border_select_exec(bContext *C, wmOperator *op) View2D *v2d = UI_view2d_fromcontext(C); ListBase *markers = ED_context_get_markers(C); TimeMarker *marker; - int gesture_mode = RNA_int_get(op->ptr, "gesture_mode"); + bool select = !RNA_boolean_get(op->ptr, "deselect"); bool extend = RNA_boolean_get(op->ptr, "extend"); rctf rect; @@ -1243,13 +1243,11 @@ static int ed_marker_border_select_exec(bContext *C, wmOperator *op) /* XXX marker context */ for (marker = markers->first; marker; marker = marker->next) { if (BLI_rctf_isect_x(&rect, marker->frame)) { - switch (gesture_mode) { - case GESTURE_MODAL_SELECT: - marker->flag |= SELECT; - break; - case GESTURE_MODAL_DESELECT: - marker->flag &= ~SELECT; - break; + if (select) { + marker->flag |= SELECT; + } + else { + marker->flag &= ~SELECT; } } else if (!extend) { @@ -1287,7 +1285,7 @@ static void MARKER_OT_select_border(wmOperatorType *ot) ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; /* rna */ - WM_operator_properties_gesture_border(ot, true); + WM_operator_properties_gesture_border_select(ot); } /* *********************** (de)select all ***************** */ diff --git a/source/blender/editors/gpencil/gpencil_select.c b/source/blender/editors/gpencil/gpencil_select.c index bea78156900..3d9689ab54f 100644 --- a/source/blender/editors/gpencil/gpencil_select.c +++ b/source/blender/editors/gpencil/gpencil_select.c @@ -769,8 +769,7 @@ static int gpencil_circle_select_exec(bContext *C, wmOperator *op) const int my = RNA_int_get(op->ptr, "y"); const int radius = RNA_int_get(op->ptr, "radius"); - const int gesture_mode = RNA_int_get(op->ptr, "gesture_mode"); - const bool select = (gesture_mode == GESTURE_MODAL_SELECT); + bool select = !RNA_boolean_get(op->ptr, "deselect"); GP_SpaceConversion gsc = {NULL}; rcti rect = {0}; /* for bounding rect around circle (for quicky intersection testing) */ @@ -830,7 +829,7 @@ void GPENCIL_OT_select_circle(wmOperatorType *ot) ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; /* properties */ - WM_operator_properties_gesture_circle(ot); + WM_operator_properties_gesture_circle_select(ot); } /* ********************************************** */ @@ -840,8 +839,7 @@ static int gpencil_border_select_exec(bContext *C, wmOperator *op) { ScrArea *sa = CTX_wm_area(C); - const int gesture_mode = RNA_int_get(op->ptr, "gesture_mode"); - const bool select = (gesture_mode == GESTURE_MODAL_SELECT); + const bool select = !RNA_boolean_get(op->ptr, "deselect"); const bool extend = RNA_boolean_get(op->ptr, "extend"); GP_SpaceConversion gsc = {NULL}; @@ -944,7 +942,7 @@ void GPENCIL_OT_select_border(wmOperatorType *ot) ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; /* rna */ - WM_operator_properties_gesture_border(ot, true); + WM_operator_properties_gesture_border_select(ot); } /* ********************************************** */ @@ -1054,7 +1052,7 @@ void GPENCIL_OT_select_lasso(wmOperatorType *ot) ot->flag = OPTYPE_UNDO; /* properties */ - WM_operator_properties_gesture_lasso(ot); + WM_operator_properties_gesture_lasso_select(ot); } /* ********************************************** */ diff --git a/source/blender/editors/interface/view2d_ops.c b/source/blender/editors/interface/view2d_ops.c index ab8ec60696b..b271b0b5bc6 100644 --- a/source/blender/editors/interface/view2d_ops.c +++ b/source/blender/editors/interface/view2d_ops.c @@ -1223,7 +1223,6 @@ static int view_borderzoom_exec(bContext *C, wmOperator *op) View2D *v2d = &ar->v2d; rctf rect; rctf cur_new = v2d->cur; - int gesture_mode; const int smooth_viewtx = WM_operator_smooth_viewtx_get(op); /* convert coordinates of rect to 'tot' rect coordinates */ @@ -1231,9 +1230,9 @@ static int view_borderzoom_exec(bContext *C, wmOperator *op) UI_view2d_region_to_view_rctf(v2d, &rect, &rect); /* check if zooming in/out view */ - gesture_mode = RNA_int_get(op->ptr, "gesture_mode"); + const bool zoom_in = !RNA_boolean_get(op->ptr, "zoom_out"); - if (gesture_mode == GESTURE_MODAL_IN) { + if (zoom_in) { /* zoom in: * - 'cur' rect will be defined by the coordinates of the border region * - just set the 'cur' rect to have the same coordinates as the border region @@ -1248,8 +1247,7 @@ static int view_borderzoom_exec(bContext *C, wmOperator *op) cur_new.ymax = rect.ymax; } } - else { /* if (gesture_mode == GESTURE_MODAL_OUT) */ - + else { /* zoom out: * - the current 'cur' rect coordinates are going to end up where the 'rect' ones are, * but the 'cur' rect coordinates will need to be adjusted to take in more of the view @@ -1297,7 +1295,7 @@ static void VIEW2D_OT_zoom_border(wmOperatorType *ot) ot->poll = view_zoom_poll; /* rna */ - WM_operator_properties_gesture_border(ot, false); + WM_operator_properties_gesture_border_zoom(ot); } #ifdef WITH_INPUT_NDOF @@ -1545,7 +1543,7 @@ static void VIEW2D_OT_smoothview(wmOperatorType *ot) ot->flag = OPTYPE_INTERNAL; /* rna */ - WM_operator_properties_gesture_border(ot, false); + WM_operator_properties_gesture_border(ot); } /* ********************************************************* */ diff --git a/source/blender/editors/mask/mask_select.c b/source/blender/editors/mask/mask_select.c index 543b005236a..9f2f6de8a09 100644 --- a/source/blender/editors/mask/mask_select.c +++ b/source/blender/editors/mask/mask_select.c @@ -408,8 +408,9 @@ static int border_select_exec(bContext *C, wmOperator *op) rcti rect; rctf rectf; - int mode; - bool changed = false, extend; + bool changed = false; + const bool select = !RNA_boolean_get(op->ptr, "deselect"); + const bool extend = RNA_boolean_get(op->ptr, "extend"); /* get rectangle from operator */ WM_operator_properties_border_to_rcti(op, &rect); @@ -417,9 +418,6 @@ static int border_select_exec(bContext *C, wmOperator *op) ED_mask_point_pos(sa, ar, rect.xmin, rect.ymin, &rectf.xmin, &rectf.ymin); ED_mask_point_pos(sa, ar, rect.xmax, rect.ymax, &rectf.xmax, &rectf.ymax); - mode = RNA_int_get(op->ptr, "gesture_mode"); - extend = RNA_boolean_get(op->ptr, "extend"); - /* do actual selection */ for (masklay = mask->masklayers.first; masklay; masklay = masklay->next) { MaskSpline *spline; @@ -439,8 +437,8 @@ static int border_select_exec(bContext *C, wmOperator *op) /* TODO: uw? */ if (BLI_rctf_isect_pt_v(&rectf, point_deform->bezt.vec[1])) { - BKE_mask_point_select_set(point, mode == GESTURE_MODAL_SELECT); - BKE_mask_point_select_set_handle(point, MASK_WHICH_HANDLE_BOTH, mode == GESTURE_MODAL_SELECT); + BKE_mask_point_select_set(point, select); + BKE_mask_point_select_set_handle(point, MASK_WHICH_HANDLE_BOTH, select); } else if (!extend) { BKE_mask_point_select_set(point, false); @@ -480,7 +478,7 @@ void MASK_OT_select_border(wmOperatorType *ot) ot->flag = OPTYPE_UNDO; /* properties */ - WM_operator_properties_gesture_border(ot, true); + WM_operator_properties_gesture_border_select(ot); } static bool do_lasso_select_mask(bContext *C, const int mcords[][2], short moves, short select) @@ -580,7 +578,7 @@ void MASK_OT_select_lasso(wmOperatorType *ot) ot->flag = OPTYPE_UNDO; /* properties */ - WM_operator_properties_gesture_lasso(ot); + WM_operator_properties_gesture_lasso_select(ot); } /********************** circle select operator *********************/ @@ -606,15 +604,15 @@ static int circle_select_exec(bContext *C, wmOperator *op) int i; float zoomx, zoomy, offset[2], ellipse[2]; - int x, y, radius, width, height, mode; + int width, height; bool changed = false; /* get operator properties */ - x = RNA_int_get(op->ptr, "x"); - y = RNA_int_get(op->ptr, "y"); - radius = RNA_int_get(op->ptr, "radius"); + const int x = RNA_int_get(op->ptr, "x"); + const int y = RNA_int_get(op->ptr, "y"); + const int radius = RNA_int_get(op->ptr, "radius"); - mode = RNA_int_get(op->ptr, "gesture_mode"); + const bool select = !RNA_boolean_get(op->ptr, "deselect"); /* compute ellipse and position in unified coordinates */ ED_mask_get_size(sa, &width, &height); @@ -642,8 +640,8 @@ static int circle_select_exec(bContext *C, wmOperator *op) MaskSplinePoint *point_deform = &points_array[i]; if (mask_spline_point_inside_ellipse(&point_deform->bezt, offset, ellipse)) { - BKE_mask_point_select_set(point, mode == GESTURE_MODAL_SELECT); - BKE_mask_point_select_set_handle(point, MASK_WHICH_HANDLE_BOTH, mode == GESTURE_MODAL_SELECT); + BKE_mask_point_select_set(point, select); + BKE_mask_point_select_set_handle(point, MASK_WHICH_HANDLE_BOTH, select); changed = true; } @@ -679,7 +677,7 @@ void MASK_OT_select_circle(wmOperatorType *ot) ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; /* properties */ - WM_operator_properties_gesture_circle(ot); + WM_operator_properties_gesture_circle_select(ot); } static int mask_select_linked_pick_invoke(bContext *C, wmOperator *op, const wmEvent *event) diff --git a/source/blender/editors/sculpt_paint/paint_mask.c b/source/blender/editors/sculpt_paint/paint_mask.c index ed7030c01d1..c92aaa8f9db 100644 --- a/source/blender/editors/sculpt_paint/paint_mask.c +++ b/source/blender/editors/sculpt_paint/paint_mask.c @@ -519,7 +519,7 @@ void PAINT_OT_mask_lasso_gesture(wmOperatorType *ot) ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; /* properties */ - WM_operator_properties_gesture_lasso_ex(ot, false, false); + WM_operator_properties_gesture_lasso(ot); RNA_def_enum(ot->srna, "mode", mode_items, PAINT_MASK_FLOOD_VALUE, "Mode", NULL); RNA_def_float(ot->srna, "value", 1.0, 0, 1.0, "Value", diff --git a/source/blender/editors/space_action/action_select.c b/source/blender/editors/space_action/action_select.c index 44b272af189..0cfd86f86f1 100644 --- a/source/blender/editors/space_action/action_select.c +++ b/source/blender/editors/space_action/action_select.c @@ -309,26 +309,27 @@ static int actkeys_borderselect_exec(bContext *C, wmOperator *op) bAnimContext ac; rcti rect; short mode = 0, selectmode = 0; - int gesture_mode; - bool extend; + const bool select = !RNA_boolean_get(op->ptr, "deselect"); + const bool extend = RNA_boolean_get(op->ptr, "extend"); /* get editor data */ if (ANIM_animdata_get_context(C, &ac) == 0) return OPERATOR_CANCELLED; /* clear all selection if not extending selection */ - extend = RNA_boolean_get(op->ptr, "extend"); - if (!extend) + if (!extend) { deselect_action_keys(&ac, 1, SELECT_SUBTRACT); + } /* get settings from operator */ WM_operator_properties_border_to_rcti(op, &rect); - - gesture_mode = RNA_int_get(op->ptr, "gesture_mode"); - if (gesture_mode == GESTURE_MODAL_SELECT) + + if (select) { selectmode = SELECT_ADD; - else + } + else { selectmode = SELECT_SUBTRACT; + } /* selection 'mode' depends on whether borderselect region only matters on one axis */ if (RNA_boolean_get(op->ptr, "axis_range")) { @@ -373,7 +374,7 @@ void ACTION_OT_select_border(wmOperatorType *ot) ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; /* rna */ - WM_operator_properties_gesture_border(ot, true); + WM_operator_properties_gesture_border_select(ot); ot->prop = RNA_def_boolean(ot->srna, "axis_range", 0, "Axis Range", ""); } @@ -572,7 +573,7 @@ void ACTION_OT_select_lasso(wmOperatorType *ot) ot->flag = OPTYPE_UNDO; /* properties */ - WM_operator_properties_gesture_lasso(ot); + WM_operator_properties_gesture_lasso_select(ot); } /* ------------------- */ @@ -580,8 +581,8 @@ void ACTION_OT_select_lasso(wmOperatorType *ot) static int action_circle_select_exec(bContext *C, wmOperator *op) { bAnimContext ac; - const int gesture_mode = RNA_int_get(op->ptr, "gesture_mode"); - const short selectmode = (gesture_mode == GESTURE_MODAL_SELECT) ? SELECT_ADD : SELECT_SUBTRACT; + const bool select = !RNA_boolean_get(op->ptr, "deselect"); + const short selectmode = select ? SELECT_ADD : SELECT_SUBTRACT; KeyframeEdit_CircleData data = {0}; rctf rect_fl; @@ -629,7 +630,7 @@ void ACTION_OT_select_circle(wmOperatorType *ot) ot->flag = OPTYPE_UNDO; /* properties */ - WM_operator_properties_gesture_circle(ot); + WM_operator_properties_gesture_circle_select(ot); } /* ******************** Column Select Operator **************************** */ diff --git a/source/blender/editors/space_clip/clip_graph_ops.c b/source/blender/editors/space_clip/clip_graph_ops.c index 9c832ba052a..901f49042d9 100644 --- a/source/blender/editors/space_clip/clip_graph_ops.c +++ b/source/blender/editors/space_clip/clip_graph_ops.c @@ -331,8 +331,7 @@ void CLIP_OT_graph_select(wmOperatorType *ot) typedef struct BorderSelectuserData { rctf rect; - int mode; - bool changed, extend; + bool select, extend, changed; } BorderSelectuserData; static void border_select_cb(void *userdata, MovieTrackingTrack *UNUSED(track), @@ -348,11 +347,12 @@ static void border_select_cb(void *userdata, MovieTrackingTrack *UNUSED(track), else flag = MARKER_GRAPH_SEL_Y; - if (data->mode == GESTURE_MODAL_SELECT) + if (data->select) { marker->flag |= flag; - else + } + else { marker->flag &= ~flag; - + } data->changed = true; } else if (!data->extend) { @@ -380,7 +380,7 @@ static int border_select_graph_exec(bContext *C, wmOperator *op) UI_view2d_region_to_view_rctf(&ar->v2d, &rect, &userdata.rect); userdata.changed = false; - userdata.mode = RNA_int_get(op->ptr, "gesture_mode"); + userdata.select = !RNA_boolean_get(op->ptr, "deselect"); userdata.extend = RNA_boolean_get(op->ptr, "extend"); clip_graph_tracking_values_iterate_track(sc, act_track, &userdata, border_select_cb, NULL, NULL); @@ -411,7 +411,7 @@ void CLIP_OT_graph_select_border(wmOperatorType *ot) ot->flag = OPTYPE_UNDO; /* properties */ - WM_operator_properties_gesture_border(ot, true); + WM_operator_properties_gesture_border_select(ot); } /********************** select all operator *********************/ diff --git a/source/blender/editors/space_clip/tracking_select.c b/source/blender/editors/space_clip/tracking_select.c index c5947852c6d..028b9c8a820 100644 --- a/source/blender/editors/space_clip/tracking_select.c +++ b/source/blender/editors/space_clip/tracking_select.c @@ -438,7 +438,6 @@ static int border_select_exec(bContext *C, wmOperator *op) rcti rect; rctf rectf; bool changed = false; - int mode, extend; int framenr = ED_space_clip_get_clip_frame_number(sc); /* get rectangle from operator */ @@ -447,8 +446,8 @@ static int border_select_exec(bContext *C, wmOperator *op) ED_clip_point_stable_pos(sc, ar, rect.xmin, rect.ymin, &rectf.xmin, &rectf.ymin); ED_clip_point_stable_pos(sc, ar, rect.xmax, rect.ymax, &rectf.xmax, &rectf.ymax); - mode = RNA_int_get(op->ptr, "gesture_mode"); - extend = RNA_boolean_get(op->ptr, "extend"); + const bool select = !RNA_boolean_get(op->ptr, "deselect"); + const bool extend = RNA_boolean_get(op->ptr, "extend"); /* do actual selection */ track = tracksbase->first; @@ -458,10 +457,12 @@ static int border_select_exec(bContext *C, wmOperator *op) if (MARKER_VISIBLE(sc, track, marker)) { if (BLI_rctf_isect_pt_v(&rectf, marker->pos)) { - if (mode == GESTURE_MODAL_SELECT) + if (select) { BKE_tracking_track_flag_set(track, TRACK_AREA_ALL, SELECT); - else + } + else { BKE_tracking_track_flag_clear(track, TRACK_AREA_ALL, SELECT); + } } else if (!extend) { BKE_tracking_track_flag_clear(track, TRACK_AREA_ALL, SELECT); @@ -485,7 +486,7 @@ static int border_select_exec(bContext *C, wmOperator *op) for (i = 0; i < 4; i++) { if (BLI_rctf_isect_pt_v(&rectf, plane_marker->corners[i])) { - if (mode == GESTURE_MODAL_SELECT) { + if (select) { plane_track->flag |= SELECT; } else { @@ -529,7 +530,7 @@ void CLIP_OT_select_border(wmOperatorType *ot) ot->flag = OPTYPE_UNDO; /* properties */ - WM_operator_properties_gesture_border(ot, true); + WM_operator_properties_gesture_border_select(ot); } /********************** lasso select operator *********************/ @@ -656,7 +657,7 @@ void CLIP_OT_select_lasso(wmOperatorType *ot) ot->flag = OPTYPE_UNDO; /* properties */ - WM_operator_properties_gesture_lasso(ot); + WM_operator_properties_gesture_lasso_select(ot); } /********************** circle select operator *********************/ @@ -688,17 +689,17 @@ static int circle_select_exec(bContext *C, wmOperator *op) MovieTrackingPlaneTrack *plane_track; ListBase *tracksbase = BKE_tracking_get_active_tracks(tracking); ListBase *plane_tracks_base = BKE_tracking_get_active_plane_tracks(tracking); - int x, y, radius, width, height, mode; + int width, height; bool changed = false; float zoomx, zoomy, offset[2], ellipse[2]; int framenr = ED_space_clip_get_clip_frame_number(sc); /* get operator properties */ - x = RNA_int_get(op->ptr, "x"); - y = RNA_int_get(op->ptr, "y"); - radius = RNA_int_get(op->ptr, "radius"); + const int x = RNA_int_get(op->ptr, "x"); + const int y = RNA_int_get(op->ptr, "y"); + const int radius = RNA_int_get(op->ptr, "radius"); - mode = RNA_int_get(op->ptr, "gesture_mode"); + const bool select = !RNA_boolean_get(op->ptr, "deselect"); /* compute ellipse and position in unified coordinates */ ED_space_clip_get_size(sc, &width, &height); @@ -716,11 +717,12 @@ static int circle_select_exec(bContext *C, wmOperator *op) MovieTrackingMarker *marker = BKE_tracking_marker_get(track, framenr); if (MARKER_VISIBLE(sc, track, marker) && marker_inside_ellipse(marker, offset, ellipse)) { - if (mode == GESTURE_MODAL_SELECT) + if (select) { BKE_tracking_track_flag_set(track, TRACK_AREA_ALL, SELECT); - else + } + else { BKE_tracking_track_flag_clear(track, TRACK_AREA_ALL, SELECT); - + } changed = true; } } @@ -739,7 +741,7 @@ static int circle_select_exec(bContext *C, wmOperator *op) for (i = 0; i < 4; i++) { if (point_inside_ellipse(plane_marker->corners[i], offset, ellipse)) { - if (mode == GESTURE_MODAL_SELECT) { + if (select) { plane_track->flag |= SELECT; } else { @@ -780,7 +782,7 @@ void CLIP_OT_select_circle(wmOperatorType *ot) ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; /* properties */ - WM_operator_properties_gesture_circle(ot); + WM_operator_properties_gesture_circle_select(ot); } /********************** select all operator *********************/ diff --git a/source/blender/editors/space_file/file_ops.c b/source/blender/editors/space_file/file_ops.c index 20509a71575..64c1e6f1d1d 100644 --- a/source/blender/editors/space_file/file_ops.c +++ b/source/blender/editors/space_file/file_ops.c @@ -419,7 +419,7 @@ static int file_border_select_exec(bContext *C, wmOperator *op) SpaceFile *sfile = CTX_wm_space_file(C); rcti rect; FileSelect ret; - const bool select = (RNA_int_get(op->ptr, "gesture_mode") == GESTURE_MODAL_SELECT); + const bool select = !RNA_boolean_get(op->ptr, "deselect"); const bool extend = RNA_boolean_get(op->ptr, "extend"); WM_operator_properties_border_to_rcti(op, &rect); @@ -459,7 +459,7 @@ void FILE_OT_select_border(wmOperatorType *ot) ot->cancel = WM_gesture_border_cancel; /* properties */ - WM_operator_properties_gesture_border(ot, 1); + WM_operator_properties_gesture_border_select(ot); } static int file_select_invoke(bContext *C, wmOperator *op, const wmEvent *event) diff --git a/source/blender/editors/space_graph/graph_select.c b/source/blender/editors/space_graph/graph_select.c index 9ff5d7f3e7f..783f691f41a 100644 --- a/source/blender/editors/space_graph/graph_select.c +++ b/source/blender/editors/space_graph/graph_select.c @@ -332,25 +332,27 @@ static int graphkeys_borderselect_exec(bContext *C, wmOperator *op) rctf rect_fl; short mode = 0, selectmode = 0; bool incl_handles; - bool extend; + const bool select = !RNA_boolean_get(op->ptr, "deselect"); + const bool extend = RNA_boolean_get(op->ptr, "extend"); /* get editor data */ if (ANIM_animdata_get_context(C, &ac) == 0) 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); /* get select mode - * - 'gesture_mode' from the operator specifies how to select * - 'include_handles' from the operator specifies whether to include handles in the selection */ - if (RNA_int_get(op->ptr, "gesture_mode") == GESTURE_MODAL_SELECT) + if (select) { selectmode = SELECT_ADD; - else + } + else { selectmode = SELECT_SUBTRACT; + } incl_handles = RNA_boolean_get(op->ptr, "include_handles"); @@ -402,7 +404,7 @@ void GRAPH_OT_select_border(wmOperatorType *ot) ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; /* rna */ - WM_operator_properties_gesture_border(ot, true); + WM_operator_properties_gesture_border_select(ot); ot->prop = RNA_def_boolean(ot->srna, "axis_range", 0, "Axis Range", ""); RNA_def_boolean(ot->srna, "include_handles", 0, "Include Handles", "Are handles tested individually against the selection criteria"); @@ -486,7 +488,7 @@ void GRAPH_OT_select_lasso(wmOperatorType *ot) ot->flag = OPTYPE_UNDO; /* properties */ - WM_operator_properties_gesture_lasso(ot); + WM_operator_properties_gesture_lasso_select(ot); } /* ------------------- */ @@ -494,8 +496,8 @@ void GRAPH_OT_select_lasso(wmOperatorType *ot) static int graph_circle_select_exec(bContext *C, wmOperator *op) { bAnimContext ac; - const int gesture_mode = RNA_int_get(op->ptr, "gesture_mode"); - const short selectmode = (gesture_mode == GESTURE_MODAL_SELECT) ? SELECT_ADD : SELECT_SUBTRACT; + const bool select = !RNA_boolean_get(op->ptr, "deselect"); + const short selectmode = select ? SELECT_ADD : SELECT_SUBTRACT; bool incl_handles = false; KeyframeEdit_CircleData data = {0}; @@ -555,7 +557,7 @@ void GRAPH_OT_select_circle(wmOperatorType *ot) ot->flag = OPTYPE_UNDO; /* properties */ - WM_operator_properties_gesture_circle(ot); + WM_operator_properties_gesture_circle_select(ot); } /* ******************** Column Select Operator **************************** */ diff --git a/source/blender/editors/space_image/image_ops.c b/source/blender/editors/space_image/image_ops.c index bedac0b878d..7644cb60ac7 100644 --- a/source/blender/editors/space_image/image_ops.c +++ b/source/blender/editors/space_image/image_ops.c @@ -1000,7 +1000,7 @@ static int image_view_zoom_border_exec(bContext *C, wmOperator *op) SpaceImage *sima = CTX_wm_space_image(C); ARegion *ar = CTX_wm_region(C); rctf bounds; - const int gesture_mode = RNA_int_get(op->ptr, "gesture_mode"); + const bool zoom_in = !RNA_boolean_get(op->ptr, "zoom_out"); WM_operator_properties_border_to_rctf(op, &bounds); @@ -1019,7 +1019,7 @@ static int image_view_zoom_border_exec(bContext *C, wmOperator *op) sima_zoom_set_from_bounds(sima, ar, &bounds); /* zoom out */ - if (gesture_mode == GESTURE_MODAL_OUT) { + if (!zoom_in) { sima->xof = sima_view_prev.xof + (sima->xof - sima_view_prev.xof); sima->yof = sima_view_prev.yof + (sima->yof - sima_view_prev.yof); sima->zoom = sima_view_prev.zoom * (sima_view_prev.zoom / sima->zoom); @@ -1046,7 +1046,7 @@ void IMAGE_OT_view_zoom_border(wmOperatorType *ot) ot->poll = space_image_main_region_poll; /* rna */ - WM_operator_properties_gesture_border(ot, false); + WM_operator_properties_gesture_border_zoom(ot); } /**************** load/replace/save callbacks ******************/ diff --git a/source/blender/editors/space_info/info_report.c b/source/blender/editors/space_info/info_report.c index 8c7b7b5014e..31df9b199ea 100644 --- a/source/blender/editors/space_info/info_report.c +++ b/source/blender/editors/space_info/info_report.c @@ -230,7 +230,7 @@ static int borderselect_exec(bContext *C, wmOperator *op) rcti rect; //rctf rectf, rq; - const bool select = (RNA_int_get(op->ptr, "gesture_mode") == GESTURE_MODAL_SELECT); + const bool select = !RNA_boolean_get(op->ptr, "deselect"); //int mval[2]; WM_operator_properties_border_to_rcti(op, &rect); @@ -309,7 +309,7 @@ void INFO_OT_select_border(wmOperatorType *ot) /* ot->flag = OPTYPE_REGISTER; */ /* rna */ - WM_operator_properties_gesture_border(ot, true); + WM_operator_properties_gesture_border_select(ot); } diff --git a/source/blender/editors/space_nla/nla_select.c b/source/blender/editors/space_nla/nla_select.c index 6dde81162cf..32eca3140fc 100644 --- a/source/blender/editors/space_nla/nla_select.c +++ b/source/blender/editors/space_nla/nla_select.c @@ -278,25 +278,28 @@ static int nlaedit_borderselect_exec(bContext *C, wmOperator *op) bAnimContext ac; rcti rect; short mode = 0, selectmode = 0; - int extend; + const bool select = !RNA_boolean_get(op->ptr, "deselect"); + const bool extend = RNA_boolean_get(op->ptr, "extend"); /* get editor data */ if (ANIM_animdata_get_context(C, &ac) == 0) return OPERATOR_CANCELLED; /* clear all selection if not extending selection */ - extend = RNA_boolean_get(op->ptr, "extend"); - if (!extend) + if (!extend) { deselect_nla_strips(&ac, DESELECT_STRIPS_TEST, SELECT_SUBTRACT); + } /* get settings from operator */ WM_operator_properties_border_to_rcti(op, &rect); - - if (RNA_int_get(op->ptr, "gesture_mode") == GESTURE_MODAL_SELECT) + + if (select) { selectmode = SELECT_ADD; - else + } + else { selectmode = SELECT_SUBTRACT; - + } + /* selection 'mode' depends on whether borderselect region only matters on one axis */ if (RNA_boolean_get(op->ptr, "axis_range")) { /* mode depends on which axis of the range is larger to determine which axis to use @@ -340,7 +343,7 @@ void NLA_OT_select_border(wmOperatorType *ot) ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; /* rna */ - WM_operator_properties_gesture_border(ot, 1); + WM_operator_properties_gesture_border_select(ot); RNA_def_boolean(ot->srna, "axis_range", 0, "Axis Range", ""); } diff --git a/source/blender/editors/space_node/node_edit.c b/source/blender/editors/space_node/node_edit.c index 9ed7e08dc62..b74735f8e02 100644 --- a/source/blender/editors/space_node/node_edit.c +++ b/source/blender/editors/space_node/node_edit.c @@ -2573,7 +2573,7 @@ void NODE_OT_viewer_border(wmOperatorType *ot) ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; /* properties */ - WM_operator_properties_gesture_border(ot, true); + WM_operator_properties_gesture_border_select(ot); } static int clear_viewer_border_exec(bContext *C, wmOperator *UNUSED(op)) diff --git a/source/blender/editors/space_node/node_select.c b/source/blender/editors/space_node/node_select.c index 8a0c8e0ac95..0cff5f12dca 100644 --- a/source/blender/editors/space_node/node_select.c +++ b/source/blender/editors/space_node/node_select.c @@ -524,23 +524,23 @@ static int node_borderselect_exec(bContext *C, wmOperator *op) ARegion *ar = CTX_wm_region(C); bNode *node; rctf rectf; - int gesture_mode = RNA_int_get(op->ptr, "gesture_mode"); + const bool select = !RNA_boolean_get(op->ptr, "deselect"); const bool extend = RNA_boolean_get(op->ptr, "extend"); WM_operator_properties_border_to_rctf(op, &rectf); UI_view2d_region_to_view_rctf(&ar->v2d, &rectf, &rectf); for (node = snode->edittree->nodes.first; node; node = node->next) { - bool select; + bool is_inside; if (node->type == NODE_FRAME) { - select = BLI_rctf_inside_rctf(&rectf, &node->totr); + is_inside = BLI_rctf_inside_rctf(&rectf, &node->totr); } else { - select = BLI_rctf_isect(&rectf, &node->totr, NULL); + is_inside = BLI_rctf_isect(&rectf, &node->totr, NULL); } - if (select) { - nodeSetSelected(node, (gesture_mode == GESTURE_MODAL_SELECT)); + if (is_inside) { + nodeSetSelected(node, select); } else if (!extend) { nodeSetSelected(node, false); @@ -593,7 +593,7 @@ void NODE_OT_select_border(wmOperatorType *ot) ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; /* rna */ - WM_operator_properties_gesture_border(ot, true); + WM_operator_properties_gesture_border_select(ot); RNA_def_boolean(ot->srna, "tweak", 0, "Tweak", "Only activate when mouse is not over a node - useful for tweak gesture"); } @@ -605,12 +605,12 @@ static int node_circleselect_exec(bContext *C, wmOperator *op) ARegion *ar = CTX_wm_region(C); bNode *node; - int x, y, radius, gesture_mode; + int x, y, radius; float offset[2]; float zoom = (float)(BLI_rcti_size_x(&ar->winrct)) / (float)(BLI_rctf_size_x(&ar->v2d.cur)); - gesture_mode = RNA_int_get(op->ptr, "gesture_mode"); + const bool select = !RNA_boolean_get(op->ptr, "deselect"); /* get operator properties */ x = RNA_int_get(op->ptr, "x"); @@ -621,7 +621,7 @@ static int node_circleselect_exec(bContext *C, wmOperator *op) for (node = snode->edittree->nodes.first; node; node = node->next) { if (BLI_rctf_isect_circle(&node->totr, offset, radius / zoom)) { - nodeSetSelected(node, (gesture_mode == GESTURE_MODAL_SELECT)); + nodeSetSelected(node, select); } } @@ -648,7 +648,7 @@ void NODE_OT_select_circle(wmOperatorType *ot) ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; /* properties */ - WM_operator_properties_gesture_circle(ot); + WM_operator_properties_gesture_circle_select(ot); } /* ****** Lasso Select ****** */ @@ -725,7 +725,7 @@ void NODE_OT_select_lasso(wmOperatorType *ot) ot->flag = OPTYPE_UNDO; /* properties */ - WM_operator_properties_gesture_lasso(ot); + WM_operator_properties_gesture_lasso_select(ot); } /* ****** Select/Deselect All ****** */ diff --git a/source/blender/editors/space_outliner/outliner_select.c b/source/blender/editors/space_outliner/outliner_select.c index 4ed524a4fff..5cc83d3ee94 100644 --- a/source/blender/editors/space_outliner/outliner_select.c +++ b/source/blender/editors/space_outliner/outliner_select.c @@ -1068,12 +1068,12 @@ void OUTLINER_OT_item_activate(wmOperatorType *ot) /* ****************************************************** */ /* **************** Border Select Tool ****************** */ -static void outliner_item_border_select(Scene *scene, rctf *rectf, TreeElement *te, int gesture_mode) +static void outliner_item_border_select(Scene *scene, rctf *rectf, TreeElement *te, bool select) { TreeStoreElem *tselem = TREESTORE(te); if (te->ys <= rectf->ymax && te->ys + UI_UNIT_Y >= rectf->ymin) { - if (gesture_mode == GESTURE_MODAL_SELECT) { + if (select) { tselem->flag |= TSE_SELECTED; } else { @@ -1084,7 +1084,7 @@ static void outliner_item_border_select(Scene *scene, rctf *rectf, TreeElement * /* Look at its children. */ if ((tselem->flag & TSE_CLOSED) == 0) { for (te = te->subtree.first; te; te = te->next) { - outliner_item_border_select(scene, rectf, te, gesture_mode); + outliner_item_border_select(scene, rectf, te, select); } } } @@ -1096,13 +1096,13 @@ static int outliner_border_select_exec(bContext *C, wmOperator *op) ARegion *ar = CTX_wm_region(C); TreeElement *te; rctf rectf; - int gesture_mode = RNA_int_get(op->ptr, "gesture_mode"); + bool select = !RNA_boolean_get(op->ptr, "deselect"); WM_operator_properties_border_to_rctf(op, &rectf); UI_view2d_region_to_view_rctf(&ar->v2d, &rectf, &rectf); for (te = soops->tree.first; te; te = te->next) { - outliner_item_border_select(scene, &rectf, te, gesture_mode); + outliner_item_border_select(scene, &rectf, te, select); } WM_event_add_notifier(C, NC_SCENE | ND_OB_SELECT, scene); @@ -1130,7 +1130,7 @@ void OUTLINER_OT_select_border(wmOperatorType *ot) ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; /* rna */ - WM_operator_properties_gesture_border(ot, false); + WM_operator_properties_gesture_border_ex(ot, true, false); } /* ****************************************************** */ diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c index 2a77b85c182..d4732c93fe6 100644 --- a/source/blender/editors/space_sequencer/sequencer_edit.c +++ b/source/blender/editors/space_sequencer/sequencer_edit.c @@ -3431,7 +3431,7 @@ void SEQUENCER_OT_view_ghost_border(wmOperatorType *ot) ot->flag = 0; /* rna */ - WM_operator_properties_gesture_border(ot, false); + WM_operator_properties_gesture_border(ot); } /* rebuild_proxy operator */ diff --git a/source/blender/editors/space_sequencer/sequencer_select.c b/source/blender/editors/space_sequencer/sequencer_select.c index ddd68a4c3d9..b24458a1cab 100644 --- a/source/blender/editors/space_sequencer/sequencer_select.c +++ b/source/blender/editors/space_sequencer/sequencer_select.c @@ -889,7 +889,7 @@ static int sequencer_borderselect_exec(bContext *C, wmOperator *op) Sequence *seq; rctf rectf, rq; - const bool select = (RNA_int_get(op->ptr, "gesture_mode") == GESTURE_MODAL_SELECT); + const bool select = !RNA_boolean_get(op->ptr, "deselect"); const bool extend = RNA_boolean_get(op->ptr, "extend"); if (ed == NULL) @@ -938,7 +938,7 @@ void SEQUENCER_OT_select_border(wmOperatorType *ot) ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; /* rna */ - WM_operator_properties_gesture_border(ot, true); + WM_operator_properties_gesture_border_select(ot); } /* ****** Selected Grouped ****** */ diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c index b6619f355f0..77a3556db0a 100644 --- a/source/blender/editors/space_view3d/view3d_edit.c +++ b/source/blender/editors/space_view3d/view3d_edit.c @@ -3580,7 +3580,6 @@ static int view3d_zoom_border_exec(bContext *C, wmOperator *op) View3D *v3d = CTX_wm_view3d(C); RegionView3D *rv3d = CTX_wm_region_view3d(C); Scene *scene = CTX_data_scene(C); - int gesture_mode; const int smooth_viewtx = WM_operator_smooth_viewtx_get(op); /* Zooms in on a border drawn by the user */ @@ -3604,7 +3603,7 @@ static int view3d_zoom_border_exec(bContext *C, wmOperator *op) WM_operator_properties_border_to_rcti(op, &rect); /* check if zooming in/out view */ - gesture_mode = RNA_int_get(op->ptr, "gesture_mode"); + const bool zoom_in = !RNA_boolean_get(op->ptr, "zoom_out"); ED_view3d_dist_range_get(v3d, dist_range); @@ -3702,7 +3701,7 @@ static int view3d_zoom_border_exec(bContext *C, wmOperator *op) new_dist *= max_ff(xscale, yscale); } - if (gesture_mode == GESTURE_MODAL_OUT) { + if (!zoom_in) { sub_v3_v3v3(dvec, new_ofs, rv3d->ofs); new_dist = rv3d->dist * (rv3d->dist / new_dist); add_v3_v3v3(new_ofs, rv3d->ofs, dvec); @@ -3752,7 +3751,7 @@ void VIEW3D_OT_zoom_border(wmOperatorType *ot) ot->flag = 0; /* rna */ - WM_operator_properties_gesture_border(ot, false); + WM_operator_properties_gesture_border_zoom(ot); } /* sets the view to 1:1 camera/render-pixel */ diff --git a/source/blender/editors/space_view3d/view3d_select.c b/source/blender/editors/space_view3d/view3d_select.c index 51af4c2dd5f..bd19fe8f686 100644 --- a/source/blender/editors/space_view3d/view3d_select.c +++ b/source/blender/editors/space_view3d/view3d_select.c @@ -915,7 +915,7 @@ void VIEW3D_OT_select_lasso(wmOperatorType *ot) ot->flag = OPTYPE_UNDO; /* properties */ - WM_operator_properties_gesture_lasso(ot); + WM_operator_properties_gesture_lasso_select(ot); } @@ -2137,9 +2137,9 @@ static int view3d_borderselect_exec(bContext *C, wmOperator *op) /* setup view context for argument to callbacks */ view3d_set_viewcontext(C, &vc); - select = (RNA_int_get(op->ptr, "gesture_mode") == GESTURE_MODAL_SELECT); - WM_operator_properties_border_to_rcti(op, &rect); + select = !RNA_boolean_get(op->ptr, "deselect"); extend = RNA_boolean_get(op->ptr, "extend"); + WM_operator_properties_border_to_rcti(op, &rect); if (vc.obedit) { switch (vc.obedit->type) { @@ -2224,7 +2224,7 @@ void VIEW3D_OT_select_border(wmOperatorType *ot) ot->flag = OPTYPE_UNDO; /* rna */ - WM_operator_properties_gesture_border(ot, true); + WM_operator_properties_gesture_border_select(ot); } @@ -2835,8 +2835,7 @@ static int view3d_circle_select_exec(bContext *C, wmOperator *op) Scene *scene = CTX_data_scene(C); Object *obact = CTX_data_active_object(C); const int radius = RNA_int_get(op->ptr, "radius"); - const int gesture_mode = RNA_int_get(op->ptr, "gesture_mode"); - const bool select = (gesture_mode == GESTURE_MODAL_SELECT); + const bool select = !RNA_boolean_get(op->ptr, "deselect"); const int mval[2] = {RNA_int_get(op->ptr, "x"), RNA_int_get(op->ptr, "y")}; @@ -2897,5 +2896,5 @@ void VIEW3D_OT_select_circle(wmOperatorType *ot) ot->flag = OPTYPE_UNDO; /* properties */ - WM_operator_properties_gesture_circle(ot); + WM_operator_properties_gesture_circle_select(ot); } diff --git a/source/blender/editors/uvedit/uvedit_ops.c b/source/blender/editors/uvedit/uvedit_ops.c index faaf9ba23b2..45b1674e65d 100644 --- a/source/blender/editors/uvedit/uvedit_ops.c +++ b/source/blender/editors/uvedit/uvedit_ops.c @@ -2875,9 +2875,9 @@ static int uv_border_select_exec(bContext *C, wmOperator *op) UI_view2d_region_to_view_rctf(&ar->v2d, &rectf, &rectf); /* figure out what to select/deselect */ - select = (RNA_int_get(op->ptr, "gesture_mode") == GESTURE_MODAL_SELECT); - pinned = RNA_boolean_get(op->ptr, "pinned"); + select = !RNA_boolean_get(op->ptr, "deselect"); extend = RNA_boolean_get(op->ptr, "extend"); + pinned = RNA_boolean_get(op->ptr, "pinned"); if (!extend) uv_select_all_perform(scene, ima, em, SEL_DESELECT); @@ -2968,7 +2968,7 @@ static void UV_OT_select_border(wmOperatorType *ot) /* properties */ RNA_def_boolean(ot->srna, "pinned", 0, "Pinned", "Border select pinned UVs only"); - WM_operator_properties_gesture_border(ot, true); + WM_operator_properties_gesture_border_select(ot); } /* ******************** circle select operator **************** */ @@ -3009,8 +3009,7 @@ static int uv_circle_select_exec(bContext *C, wmOperator *op) MLoopUV *luv; int x, y, radius, width, height; float zoomx, zoomy, offset[2], ellipse[2]; - int gesture_mode = RNA_int_get(op->ptr, "gesture_mode"); - const bool select = (gesture_mode == GESTURE_MODAL_SELECT); + const bool select = !RNA_boolean_get(op->ptr, "deselect"); bool changed = false; const bool use_face_center = (ts->uv_flag & UV_SYNC_SELECTION) ? (ts->selectmode == SCE_SELECT_FACE) : @@ -3090,7 +3089,7 @@ static void UV_OT_circle_select(wmOperatorType *ot) ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; /* properties */ - WM_operator_properties_gesture_circle(ot); + WM_operator_properties_gesture_circle_select(ot); } @@ -3222,7 +3221,7 @@ static void UV_OT_select_lasso(wmOperatorType *ot) ot->flag = OPTYPE_UNDO; /* properties */ - WM_operator_properties_gesture_lasso(ot); + WM_operator_properties_gesture_lasso_select(ot); } |