VSE: Remove timeline box select
Remove the box select tool from the timeline to simplify selection
logic, avoid confusion for users, and make maintaining the code
easier in the future. It also brings the selection system closer
to other industry-standard NLEs.
It also fixes an issue caused by d2091b4b1.
More details in PR.
Pull Request: https://projects.blender.org/blender/blender/pulls/128051
This commit is contained in:
committed by
Pablo Vazquez
parent
177e2ac837
commit
d2a802d3c6
@@ -3015,13 +3015,13 @@ def km_sequencer(params):
|
||||
{"properties": [("extend", True)]}),
|
||||
("sequencer.select_linked", {"type": 'L', "value": 'PRESS', "ctrl": True}, None),
|
||||
("sequencer.select_box", {"type": params.select_mouse, "value": 'CLICK_DRAG'},
|
||||
{"properties": [("tweak", True), ("mode", 'SET')]}),
|
||||
{"properties": [("mode", 'SET')]}),
|
||||
("sequencer.select_box", {"type": params.select_mouse, "value": 'CLICK_DRAG', "shift": True},
|
||||
{"properties": [("tweak", True), ("mode", 'ADD')]}),
|
||||
{"properties": [("mode", 'ADD')]}),
|
||||
("sequencer.select_box", {"type": params.select_mouse, "value": 'CLICK_DRAG', "ctrl": True},
|
||||
{"properties": [("tweak", True), ("mode", 'SUB')]}),
|
||||
{"properties": [("mode", 'SUB')]}),
|
||||
("sequencer.select_box", {"type": params.select_mouse, "value": 'CLICK_DRAG', "alt": True},
|
||||
{"properties": [("tweak", True), ("ignore_connections", True), ("mode", 'SET')]}),
|
||||
{"properties": [("ignore_connections", True), ("mode", 'SET')]}),
|
||||
("sequencer.select_box", {"type": 'B', "value": 'PRESS'}, None),
|
||||
("sequencer.select_box", {"type": 'B', "value": 'PRESS', "ctrl": True},
|
||||
{"properties": [("include_handles", True)]}),
|
||||
@@ -8935,7 +8935,7 @@ def km_3d_view_tool_edit_grease_pencil_texture_gradient(params):
|
||||
# ------------------------------------------------------------------------------
|
||||
# Tool System (Sequencer, Generic)
|
||||
|
||||
def km_sequencer_editor_tool_generic_select_timeline_rcs(params, fallback):
|
||||
def km_sequencer_editor_tool_generic_select_timeline_rcs(params):
|
||||
return [
|
||||
("sequencer.select_handle", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None),
|
||||
("sequencer.select_handle", {"type": 'LEFTMOUSE', "value": 'PRESS',
|
||||
@@ -8949,10 +8949,11 @@ def km_sequencer_editor_tool_generic_select_timeline_rcs(params, fallback):
|
||||
]
|
||||
|
||||
|
||||
def km_sequencer_editor_tool_generic_select_timeline_lcs(params, fallback):
|
||||
def km_sequencer_editor_tool_generic_select_timeline_lcs(params):
|
||||
return [
|
||||
*_template_items_tool_select(
|
||||
params, "sequencer.select", None, cursor_prioritize=True, fallback=fallback),
|
||||
("sequencer.select", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None),
|
||||
("sequencer.select", {"type": 'LEFTMOUSE', "value": 'PRESS',
|
||||
"shift": True}, {"properties": [("toggle", True)]}),
|
||||
*_template_items_change_frame(params),
|
||||
]
|
||||
|
||||
@@ -8962,28 +8963,9 @@ def km_sequencer_editor_tool_generic_select_timeline(params, *, fallback):
|
||||
_fallback_id("Sequencer Timeline Tool: Tweak", fallback),
|
||||
{"space_type": 'SEQUENCE_EDITOR', "region_type": 'WINDOW'},
|
||||
{"items": [
|
||||
*(km_sequencer_editor_tool_generic_select_timeline_rcs(params, fallback)
|
||||
*(km_sequencer_editor_tool_generic_select_timeline_rcs(params)
|
||||
if (params.select_mouse == 'RIGHTMOUSE') else
|
||||
km_sequencer_editor_tool_generic_select_timeline_lcs(params, fallback)),
|
||||
]},
|
||||
)
|
||||
|
||||
|
||||
def km_sequencer_editor_tool_generic_select_box_timeline(params, *, fallback):
|
||||
return (
|
||||
_fallback_id("Sequencer Timeline Tool: Select Box", fallback),
|
||||
{"space_type": 'SEQUENCE_EDITOR', "region_type": 'WINDOW'},
|
||||
{"items": [
|
||||
# Don't use `tool_maybe_tweak_event`, see comment for this slot.
|
||||
*([] if (fallback and not params.use_fallback_tool) else _template_items_tool_select_actions_simple(
|
||||
"sequencer.select_box",
|
||||
**(params.select_tweak_event if (fallback and params.use_fallback_tool_select_mouse) else
|
||||
params.tool_tweak_event),
|
||||
properties=[("tweak", params.select_mouse == 'LEFTMOUSE')])),
|
||||
# RMB select can already set the frame, match the tweak tool.
|
||||
# Ignored for preview.
|
||||
*(_template_items_change_frame(params)
|
||||
if params.select_mouse == 'LEFTMOUSE' else []),
|
||||
km_sequencer_editor_tool_generic_select_timeline_lcs(params)),
|
||||
]},
|
||||
)
|
||||
|
||||
@@ -9012,8 +8994,7 @@ def km_sequencer_editor_tool_generic_select_box_preview(params, *, fallback):
|
||||
*([] if (fallback and not params.use_fallback_tool) else _template_items_tool_select_actions_simple(
|
||||
"sequencer.select_box",
|
||||
**(params.select_tweak_event if (fallback and params.use_fallback_tool_select_mouse) else
|
||||
params.tool_tweak_event),
|
||||
properties=[("tweak", params.select_mouse == 'LEFTMOUSE')])),
|
||||
params.tool_tweak_event))),
|
||||
]},
|
||||
)
|
||||
|
||||
@@ -9409,8 +9390,6 @@ def generate_keymaps(params=None):
|
||||
km_3d_view_tool_sculpt_gpencil_select_lasso(params),
|
||||
*(km_sequencer_editor_tool_generic_select_timeline(params, fallback=fallback)
|
||||
for fallback in (False, True)),
|
||||
*(km_sequencer_editor_tool_generic_select_box_timeline(params, fallback=fallback)
|
||||
for fallback in (False, True)),
|
||||
*(km_sequencer_editor_tool_generic_select_preview(params, fallback=fallback)
|
||||
for fallback in (False, True)),
|
||||
*(km_sequencer_editor_tool_generic_select_box_preview(params, fallback=fallback)
|
||||
|
||||
@@ -1859,11 +1859,11 @@ def km_sequencer(params):
|
||||
{"properties": [("extend", True)]}),
|
||||
("sequencer.select_linked", {"type": 'L', "value": 'PRESS', "ctrl": True}, None),
|
||||
("sequencer.select_box", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG'},
|
||||
{"properties": [("tweak", True), ("mode", 'SET')]}),
|
||||
{"properties": [("mode", 'SET')]}),
|
||||
("sequencer.select_box", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG', "shift": True},
|
||||
{"properties": [("tweak", True), ("mode", 'ADD')]}),
|
||||
{"properties": [("mode", 'ADD')]}),
|
||||
("sequencer.select_box", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG', "ctrl": True},
|
||||
{"properties": [("tweak", True), ("mode", 'SUB')]}),
|
||||
{"properties": [("mode", 'SUB')]}),
|
||||
("sequencer.select_grouped", {"type": 'G', "value": 'PRESS', "shift": True}, None),
|
||||
("sequencer.slip", {"type": 'R', "value": 'PRESS'}, None),
|
||||
("wm.context_set_int", {"type": 'O', "value": 'PRESS'},
|
||||
|
||||
@@ -3414,22 +3414,6 @@ class _defs_sequencer_select:
|
||||
keymap="Sequencer Timeline Tool: Tweak",
|
||||
)
|
||||
|
||||
@ToolDef.from_fn
|
||||
def box_timeline():
|
||||
def draw_settings(_context, layout, tool):
|
||||
props = tool.operator_properties("sequencer.select_box")
|
||||
row = layout.row()
|
||||
row.use_property_split = False
|
||||
row.prop(props, "mode", text="", expand=True, icon_only=True)
|
||||
return dict(
|
||||
idname="builtin.select_box",
|
||||
label="Select Box",
|
||||
icon="ops.generic.select_box",
|
||||
widget=None,
|
||||
keymap="Sequencer Timeline Tool: Select Box",
|
||||
draw_settings=draw_settings,
|
||||
)
|
||||
|
||||
@ToolDef.from_fn
|
||||
def select_preview():
|
||||
return dict(
|
||||
@@ -4175,17 +4159,11 @@ class SEQUENCER_PT_tools_active(ToolSelectPanelHelper, Panel):
|
||||
*_tools_annotate,
|
||||
],
|
||||
'SEQUENCER': [
|
||||
(
|
||||
_defs_sequencer_select.select_timeline,
|
||||
_defs_sequencer_select.box_timeline,
|
||||
),
|
||||
_defs_sequencer_select.select_timeline,
|
||||
_defs_sequencer_generic.blade,
|
||||
],
|
||||
'SEQUENCER_PREVIEW': [
|
||||
(
|
||||
_defs_sequencer_select.select_timeline,
|
||||
_defs_sequencer_select.box_timeline,
|
||||
),
|
||||
_defs_sequencer_select.select_timeline,
|
||||
*_tools_annotate,
|
||||
None,
|
||||
_defs_sequencer_generic.blade,
|
||||
|
||||
@@ -2183,32 +2183,15 @@ static int sequencer_box_select_invoke(bContext *C, wmOperator *op, const wmEven
|
||||
return OPERATOR_CANCELLED;
|
||||
}
|
||||
|
||||
const bool tweak = RNA_boolean_get(op->ptr, "tweak");
|
||||
int mval[2];
|
||||
float mouse_co[2];
|
||||
WM_event_drag_start_mval(event, region, mval);
|
||||
UI_view2d_region_to_view(v2d, mval[0], mval[1], &mouse_co[0], &mouse_co[1]);
|
||||
|
||||
if (tweak) {
|
||||
int mval[2];
|
||||
float mouse_co[2];
|
||||
WM_event_drag_start_mval(event, region, mval);
|
||||
UI_view2d_region_to_view(v2d, mval[0], mval[1], &mouse_co[0], &mouse_co[1]);
|
||||
StripSelection selection = ED_sequencer_pick_strip_and_handle(scene, v2d, mouse_co);
|
||||
|
||||
StripSelection selection = ED_sequencer_pick_strip_and_handle(scene, v2d, mouse_co);
|
||||
|
||||
if (selection.seq1 != nullptr) {
|
||||
if (selection.handle != SEQ_HANDLE_NONE) {
|
||||
SpaceSeq *sseq = CTX_wm_space_seq(C);
|
||||
sseq->flag |= SPACE_SEQ_DESELECT_STRIP_HANDLE;
|
||||
ED_sequencer_deselect_all(scene);
|
||||
|
||||
selection.seq1->flag |= (SELECT) | ((selection.handle == SEQ_HANDLE_RIGHT) ? SEQ_RIGHTSEL :
|
||||
SEQ_LEFTSEL);
|
||||
if (selection.seq2 != nullptr) {
|
||||
selection.seq2->flag |= (SELECT) |
|
||||
((selection.handle == SEQ_HANDLE_RIGHT) ? SEQ_LEFTSEL :
|
||||
SEQ_RIGHTSEL);
|
||||
}
|
||||
}
|
||||
return OPERATOR_CANCELLED | OPERATOR_PASS_THROUGH;
|
||||
}
|
||||
if (selection.seq1 != nullptr) {
|
||||
return OPERATOR_CANCELLED | OPERATOR_PASS_THROUGH;
|
||||
}
|
||||
|
||||
return WM_gesture_box_invoke(C, op, event);
|
||||
@@ -2238,9 +2221,6 @@ void SEQUENCER_OT_select_box(wmOperatorType *ot)
|
||||
WM_operator_properties_gesture_box(ot);
|
||||
WM_operator_properties_select_operation_simple(ot);
|
||||
|
||||
prop = RNA_def_boolean(
|
||||
ot->srna, "tweak", false, "Tweak", "Operator has been activated using a click-drag event");
|
||||
RNA_def_property_flag(prop, PROP_SKIP_SAVE);
|
||||
prop = RNA_def_boolean(
|
||||
ot->srna, "include_handles", false, "Select Handles", "Select the strips and their handles");
|
||||
RNA_def_property_flag(prop, PROP_SKIP_SAVE);
|
||||
|
||||
Reference in New Issue
Block a user