[Bf-blender-cvs] [95e3356a276] master: VSE: Add select under playhead, and shortcuts for left, right, under.

Peter Fog noreply at git.blender.org
Mon Jun 1 05:46:59 CEST 2020


Commit: 95e3356a2760fc90c161f2e1e21d3dd25734ce40
Author: Peter Fog
Date:   Mon Jun 1 04:14:54 2020 +0200
Branches: master
https://developer.blender.org/rB95e3356a2760fc90c161f2e1e21d3dd25734ce40

VSE: Add select under playhead, and shortcuts for left, right, under.

Add `UNDER` option for `left_right` property of `sequencer.select` operator.
Add Equal as shortcut for select under playhead, and move Insert Gaps to backspace + ctrl.
Add extend shortcut for left, right under options.
The function is added to Select > Playhead menu.

Reviewed By: ISS

Differential Revision: https://developer.blender.org/D7679

===================================================================

M	release/scripts/presets/keyconfig/keymap_data/blender_default.py
M	release/scripts/startup/bl_ui/space_sequencer.py
M	source/blender/editors/space_sequencer/sequencer_intern.h
M	source/blender/editors/space_sequencer/sequencer_select.c

===================================================================

diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
index 2559a2f1df5..3a95b3e4e0e 100644
--- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py
+++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
@@ -2463,7 +2463,7 @@ def km_sequencer(params):
          {"properties": [("all", False)]}),
         ("sequencer.gap_remove", {"type": 'BACK_SPACE', "value": 'PRESS', "shift": True},
          {"properties": [("all", True)]}),
-        ("sequencer.gap_insert", {"type": 'EQUAL', "value": 'PRESS', "shift": True}, None),
+        ("sequencer.gap_insert", {"type": 'BACK_SPACE', "value": 'PRESS', "ctrl": True}, None),
         ("sequencer.snap", {"type": 'S', "value": 'PRESS', "shift": True}, None),
         ("sequencer.swap_inputs", {"type": 'S', "value": 'PRESS', "alt": True}, None),
         *(
@@ -2521,6 +2521,15 @@ def km_sequencer(params):
          {"properties": [("left_right", 'LEFT'), ("linked_time", True)]}),
         ("sequencer.select", {"type": 'RIGHT_BRACKET', "value": 'PRESS'},
          {"properties": [("left_right", 'RIGHT'), ("linked_time", True)]}),
+        ("sequencer.select", {"type": 'EQUAL', "value": 'PRESS'},
+         {"properties": [("left_right", 'UNDER'), ("linked_time", True)]}),
+        ("sequencer.select", {"type": 'LEFT_BRACKET', "value": 'PRESS', "shift": True},
+         {"properties": [("left_right", 'LEFT'), ("linked_time", True), ("extend", True)]}),
+        ("sequencer.select", {"type": 'RIGHT_BRACKET', "value": 'PRESS', "shift": True},
+         {"properties": [("left_right", 'RIGHT'), ("linked_time", True), ("extend", True)]}),
+        ("sequencer.select", {"type": 'EQUAL', "value": 'PRESS', "shift": True},
+         {"properties": [("left_right", 'UNDER'), ("linked_time", True), ("extend", True)]}),
+
         *_template_items_context_menu("SEQUENCER_MT_context_menu", params.context_menu_event),
     ])
 
diff --git a/release/scripts/startup/bl_ui/space_sequencer.py b/release/scripts/startup/bl_ui/space_sequencer.py
index 41c220f7ee4..d30f75c06ff 100644
--- a/release/scripts/startup/bl_ui/space_sequencer.py
+++ b/release/scripts/startup/bl_ui/space_sequencer.py
@@ -382,6 +382,9 @@ class SEQUENCER_MT_select_playhead(Menu):
     def draw(self, _context):
         layout = self.layout
 
+        props = layout.operator("sequencer.select", text="Under")
+        props.left_right = 'UNDER'
+        props.linked_time = True
         props = layout.operator("sequencer.select", text="Left")
         props.left_right = 'LEFT'
         props.linked_time = True
diff --git a/source/blender/editors/space_sequencer/sequencer_intern.h b/source/blender/editors/space_sequencer/sequencer_intern.h
index 708682cd04f..5f525bf913c 100644
--- a/source/blender/editors/space_sequencer/sequencer_intern.h
+++ b/source/blender/editors/space_sequencer/sequencer_intern.h
@@ -191,6 +191,7 @@ enum {
   SEQ_SELECT_LR_MOUSE,
   SEQ_SELECT_LR_LEFT,
   SEQ_SELECT_LR_RIGHT,
+  SEQ_SELECT_LR_UNDER_PLAYHEAD,
 };
 
 /* Defines used internally. */
diff --git a/source/blender/editors/space_sequencer/sequencer_select.c b/source/blender/editors/space_sequencer/sequencer_select.c
index c5472ed88e5..bf5d788464c 100644
--- a/source/blender/editors/space_sequencer/sequencer_select.c
+++ b/source/blender/editors/space_sequencer/sequencer_select.c
@@ -412,6 +412,7 @@ static int sequencer_select_exec(bContext *C, wmOperator *op)
 
     ret_value = OPERATOR_FINISHED;
   }
+  /* Select left, right or under playhead. */
   else if (left_right != SEQ_SELECT_LR_NONE) {
     /* Use different logic for this. */
     float x;
@@ -421,19 +422,33 @@ static int sequencer_select_exec(bContext *C, wmOperator *op)
 
     switch (left_right) {
       case SEQ_SELECT_LR_MOUSE:
+        /* 10px margin around playhead to select under playhead with mouse. */
+        float margin = BLI_rctf_size_x(&v2d->cur) / BLI_rcti_size_x(&v2d->mask) * 10;
         x = UI_view2d_region_to_view_x(v2d, mval[0]);
+        if (x >= CFRA - margin && x <= CFRA + margin) {
+          x = CFRA;
+        }
         break;
       case SEQ_SELECT_LR_LEFT:
         x = CFRA - 1.0f;
         break;
       case SEQ_SELECT_LR_RIGHT:
+        x = CFRA + 1.0f;
+        break;
+      case SEQ_SELECT_LR_UNDER_PLAYHEAD:
       default:
         x = CFRA;
         break;
     }
 
     SEQP_BEGIN (ed, seq) {
-      if (((x < CFRA) && (seq->enddisp <= CFRA)) || ((x >= CFRA) && (seq->startdisp >= CFRA))) {
+      /* Select under playhead. */
+      if ((x == CFRA) && (seq->startdisp <= CFRA) && (seq->enddisp >= CFRA)) {
+        seq->flag = SELECT;
+        recurs_sel_seq(seq);
+      }
+      /* Select left or right. */
+      else if ((x < CFRA && seq->enddisp <= CFRA) || (x > CFRA && seq->startdisp >= CFRA)) {
         seq->flag |= SELECT;
         recurs_sel_seq(seq);
       }
@@ -627,8 +642,9 @@ void SEQUENCER_OT_select(wmOperatorType *ot)
   static const EnumPropertyItem sequencer_select_left_right_types[] = {
       {SEQ_SELECT_LR_NONE, "NONE", 0, "None", "Don't do left-right selection"},
       {SEQ_SELECT_LR_MOUSE, "MOUSE", 0, "Mouse", "Use mouse position for selection"},
-      {SEQ_SELECT_LR_LEFT, "LEFT", 0, "Left", "Select left"},
-      {SEQ_SELECT_LR_RIGHT, "RIGHT", 0, "Right", "Select right"},
+      {SEQ_SELECT_LR_LEFT, "LEFT", 0, "Left", "Select to the left of the playhead"},
+      {SEQ_SELECT_LR_RIGHT, "RIGHT", 0, "Right", "Select to the right of the playhead"},
+      {SEQ_SELECT_LR_UNDER_PLAYHEAD, "UNDER", 0, "Under", "Select under the playhead"},
       {0, NULL, 0, NULL, NULL},
   };
   PropertyRNA *prop;



More information about the Bf-blender-cvs mailing list