diff --git a/scripts/presets/keyconfig/keymap_data/blender_default.py b/scripts/presets/keyconfig/keymap_data/blender_default.py index a07641c6050..14098c5326c 100644 --- a/scripts/presets/keyconfig/keymap_data/blender_default.py +++ b/scripts/presets/keyconfig/keymap_data/blender_default.py @@ -611,7 +611,7 @@ def _template_items_tool_select( else: # For right mouse, set the cursor. return [ - (cursor_operator, {"type": 'LEFTMOUSE', "value": 'PRESS'}, None), + (cursor_operator, {"type": 'LEFTMOUSE', "value": 'PRESS'}, None) if cursor_operator is not None else (), ("transform.translate", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG'}, {"properties": [("release_confirm", True), ("cursor_transform", True)]}), ] @@ -8781,26 +8781,37 @@ def km_3d_view_tool_sculpt_gpencil_select_lasso(params): # ------------------------------------------------------------------------------ # Tool System (Sequencer, Generic) -def km_sequencer_editor_tool_generic_select(params, *, fallback): +def km_sequencer_editor_tool_generic_select_timeline_rcs(params, fallback): + return [ + *_template_items_change_frame(params), + # Frame change can be cancelled if click happens on strip handle. In such case move the handle. + ("transform.seq_slide", {"type": 'LEFTMOUSE', "value": 'PRESS'}, + {"properties": [("view2d_edge_pan", True)]}), + ] + + +def km_sequencer_editor_tool_generic_select_timeline_lcs(params, fallback): + return [ + *_template_items_tool_select( + params, "sequencer.select", None, cursor_prioritize=True, fallback=fallback), + *_template_items_change_frame(params), + ] + + +def km_sequencer_editor_tool_generic_select_timeline(params, *, fallback): return ( - _fallback_id("Sequencer Tool: Tweak", fallback), + _fallback_id("Sequencer Timeline Tool: Tweak", fallback), {"space_type": 'SEQUENCE_EDITOR', "region_type": 'WINDOW'}, {"items": [ - *([] if (fallback and (params.select_mouse == 'RIGHTMOUSE')) else _template_items_tool_select( - params, "sequencer.select", "sequencer.cursor_set", cursor_prioritize=True, fallback=fallback)), - - *([] if params.use_fallback_tool_select_handled else - _template_sequencer_preview_select( - type=params.select_mouse, value=params.select_mouse_value, legacy=params.legacy)), - # Ignored for preview. - *_template_items_change_frame(params), + *(km_sequencer_editor_tool_generic_select_timeline_rcs(params, fallback) if (params.select_mouse == 'RIGHTMOUSE') + else km_sequencer_editor_tool_generic_select_timeline_lcs(params, fallback)), ]}, ) -def km_sequencer_editor_tool_generic_select_box(params, *, fallback): +def km_sequencer_editor_tool_generic_select_box_timeline(params, *, fallback): return ( - _fallback_id("Sequencer Tool: Select Box", fallback), + _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. @@ -8809,7 +8820,6 @@ def km_sequencer_editor_tool_generic_select_box(params, *, fallback): **(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) @@ -8818,6 +8828,36 @@ def km_sequencer_editor_tool_generic_select_box(params, *, fallback): ) +def km_sequencer_editor_tool_generic_select_preview(params, *, fallback): + return ( + _fallback_id("Sequencer Preview Tool: Tweak", fallback), + {"space_type": 'SEQUENCE_EDITOR', "region_type": 'WINDOW'}, + {"items": [ + *([] if (fallback and (params.select_mouse == 'RIGHTMOUSE')) else _template_items_tool_select( + params, "sequencer.select", "sequencer.cursor_set", cursor_prioritize=True, fallback=fallback)), + + *([] if params.use_fallback_tool_select_handled else + _template_sequencer_preview_select( + type=params.select_mouse, value=params.select_mouse_value, legacy=params.legacy)), + ]}, + ) + + +def km_sequencer_editor_tool_generic_select_box_preview(params, *, fallback): + return ( + _fallback_id("Sequencer Preview 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')])), + ]}, + ) + + def km_sequencer_editor_tool_generic_cursor(params): return ( "Sequencer Tool: Cursor", @@ -9179,9 +9219,11 @@ def generate_keymaps(params=None): km_3d_view_tool_sculpt_gpencil_select_box(params), km_3d_view_tool_sculpt_gpencil_select_circle(params), 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) for fallback in (False, True)), km_3d_view_tool_paint_grease_pencil_cutter(params), - *(km_sequencer_editor_tool_generic_select(params, fallback=fallback) for fallback in (False, True)), - *(km_sequencer_editor_tool_generic_select_box(params, fallback=fallback) for fallback in (False, True)), km_sequencer_editor_tool_generic_cursor(params), km_sequencer_editor_tool_blade(params), km_sequencer_editor_tool_sample(params), diff --git a/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py b/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py index e659f84b72f..afb616717b4 100644 --- a/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py +++ b/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py @@ -4386,9 +4386,16 @@ def km_3d_view_tool_edit_gpencil_select(params): ) -def km_sequencer_editor_tool_generic_select(params): +def km_sequencer_editor_tool_select_preview(params): return ( - "Sequencer Tool: Tweak", + "Sequencer Preview Tool: Tweak", + {"space_type": 'SEQUENCE_EDITOR', "region_type": 'WINDOW'}, + {"items": []} + ) + +def km_sequencer_editor_tool_select_timeline(params): + return ( + "Sequencer Timeline Tool: Tweak", {"space_type": 'SEQUENCE_EDITOR', "region_type": 'WINDOW'}, {"items": []} ) @@ -4582,7 +4589,8 @@ def generate_keymaps_impl(params=None): km_3d_view_tool_select(params), km_image_editor_tool_uv_select(params), km_3d_view_tool_edit_gpencil_select(params), - km_sequencer_editor_tool_generic_select(params), + km_sequencer_editor_tool_select_preview(params), + km_sequencer_editor_tool_select_timeline(params), km_3d_view_tool_interactive_add(params), ] diff --git a/scripts/startup/bl_ui/space_toolsystem_toolbar.py b/scripts/startup/bl_ui/space_toolsystem_toolbar.py index 167ba3967b9..3dad4fcc400 100644 --- a/scripts/startup/bl_ui/space_toolsystem_toolbar.py +++ b/scripts/startup/bl_ui/space_toolsystem_toolbar.py @@ -2997,17 +2997,17 @@ class _defs_sequencer_generic: class _defs_sequencer_select: @ToolDef.from_fn - def select(): + def select_timeline(): return dict( idname="builtin.select", label="Tweak", icon="ops.generic.select", widget=None, - keymap="Sequencer Tool: Tweak", + keymap="Sequencer Timeline Tool: Tweak", ) @ToolDef.from_fn - def box(): + def box_timeline(): def draw_settings(_context, layout, tool): props = tool.operator_properties("sequencer.select_box") row = layout.row() @@ -3018,7 +3018,33 @@ class _defs_sequencer_select: label="Select Box", icon="ops.generic.select_box", widget=None, - keymap="Sequencer Tool: Select Box", + keymap="Sequencer Timeline Tool: Select Box", + draw_settings=draw_settings, + ) + + @ToolDef.from_fn + def select_preview(): + return dict( + idname="builtin.select", + label="Tweak", + icon="ops.generic.select", + widget=None, + keymap="Sequencer Preview Tool: Tweak", + ) + + @ToolDef.from_fn + def box_preview(): + 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 Preview Tool: Select Box", draw_settings=draw_settings, ) @@ -3628,13 +3654,6 @@ class SEQUENCER_PT_tools_active(ToolSelectPanelHelper, Panel): yield from cls._tools.items() # Private tool lists for convenient reuse in `_tools`. - - _tools_select = ( - ( - _defs_sequencer_select.select, - _defs_sequencer_select.box, - ), - ) _tools_annotate = ( ( _defs_annotate.scribble, @@ -3651,7 +3670,10 @@ class SEQUENCER_PT_tools_active(ToolSelectPanelHelper, Panel): None: [ ], 'PREVIEW': [ - *_tools_select, + ( + _defs_sequencer_select.select_preview, + _defs_sequencer_select.box_preview, + ), _defs_sequencer_generic.cursor, None, _defs_sequencer_generic.translate, @@ -3663,12 +3685,13 @@ class SEQUENCER_PT_tools_active(ToolSelectPanelHelper, Panel): *_tools_annotate, ], 'SEQUENCER': [ - *_tools_select, + ( + _defs_sequencer_select.select_timeline, + _defs_sequencer_select.box_timeline, + ), _defs_sequencer_generic.blade, ], 'SEQUENCER_PREVIEW': [ - *_tools_select, - None, *_tools_annotate, None, _defs_sequencer_generic.blade,