Sequencer: Drag outside of sequence to initiate box select
authorJacques Lucke <mail@jlucke.com>
Tue, 28 May 2019 15:47:26 +0000 (17:47 +0200)
committerJacques Lucke <mail@jlucke.com>
Tue, 28 May 2019 15:47:33 +0000 (17:47 +0200)
release/scripts/presets/keyconfig/keymap_data/blender_default.py
source/blender/editors/space_sequencer/sequencer_select.c

index 327addab1dc9f5ba537dd1411870576a76edf790..b5cc573cac46afde714248378d491f5f550f4615 100644 (file)
@@ -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}),
index f40514e7574f41239bce70cc90dec2407abbbe9a..0aa27505c2d4b4f2a6bb90469a9005649a2ed499 100644 (file)
@@ -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 ****** */