diff options
author | Jacques Lucke <mail@jlucke.com> | 2019-05-28 18:47:26 +0300 |
---|---|---|
committer | Jacques Lucke <mail@jlucke.com> | 2019-05-28 18:47:33 +0300 |
commit | 8e125f278c52b38cf3be53b2296f0dc30885bae4 (patch) | |
tree | cf1fc23e556b4101918e7d2b1cf60373518eb76c | |
parent | c4e4b6872a918e8e58ff2d01306f96a17c65b9f5 (diff) |
Sequencer: Drag outside of sequence to initiate box select
-rw-r--r-- | release/scripts/presets/keyconfig/keymap_data/blender_default.py | 2 | ||||
-rw-r--r-- | source/blender/editors/space_sequencer/sequencer_select.c | 22 |
2 files changed, 23 insertions, 1 deletions
diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py index 327addab1dc..b5cc573cac4 100644 --- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py +++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py @@ -2330,6 +2330,8 @@ def km_sequencer(params): ("sequencer.select_linked_pick", {"type": 'L', "value": 'PRESS', "shift": True}, {"properties": [("extend", True)]}), ("sequencer.select_linked", {"type": 'L', "value": 'PRESS', "ctrl": True}, None), + ("sequencer.select_box", {"type": params.select_tweak, "value": 'ANY'}, + {"properties": [("tweak", True)]}), ("sequencer.select_box", {"type": 'B', "value": 'PRESS'}, None), ("sequencer.select_grouped", {"type": 'G', "value": 'PRESS', "shift": True}, None), op_menu("SEQUENCER_MT_add", {"type": 'A', "value": 'PRESS', "shift": True}), diff --git a/source/blender/editors/space_sequencer/sequencer_select.c b/source/blender/editors/space_sequencer/sequencer_select.c index f40514e7574..0aa27505c2d 100644 --- a/source/blender/editors/space_sequencer/sequencer_select.c +++ b/source/blender/editors/space_sequencer/sequencer_select.c @@ -937,6 +937,22 @@ static int sequencer_box_select_exec(bContext *C, wmOperator *op) } /* ****** Box Select ****** */ +static int sequencer_box_select_invoke(bContext *C, wmOperator *op, const wmEvent *event) +{ + Scene *scene = CTX_data_scene(C); + View2D *v2d = &CTX_wm_region(C)->v2d; + + const bool tweak = RNA_boolean_get(op->ptr, "tweak"); + + int dummy; + Sequence *seq = find_nearest_seq(scene, v2d, &dummy, event->mval); + if (tweak && seq != NULL) { + return OPERATOR_CANCELLED | OPERATOR_PASS_THROUGH; + } + + return WM_gesture_box_invoke(C, op, event); +} + void SEQUENCER_OT_select_box(wmOperatorType *ot) { /* identifiers */ @@ -945,7 +961,7 @@ void SEQUENCER_OT_select_box(wmOperatorType *ot) ot->description = "Select strips using box selection"; /* api callbacks */ - ot->invoke = WM_gesture_box_invoke; + ot->invoke = sequencer_box_select_invoke; ot->exec = sequencer_box_select_exec; ot->modal = WM_gesture_box_modal; ot->cancel = WM_gesture_box_cancel; @@ -958,6 +974,10 @@ void SEQUENCER_OT_select_box(wmOperatorType *ot) /* properties */ WM_operator_properties_gesture_box(ot); WM_operator_properties_select_operation_simple(ot); + + PropertyRNA *prop = RNA_def_boolean( + ot->srna, "tweak", 0, "Tweak", "Operator has been activated using a tweak event"); + RNA_def_property_flag(prop, PROP_SKIP_SAVE); } /* ****** Selected Grouped ****** */ |