[Bf-blender-cvs] [bc290b47cd1] master: Keymap: experimental preference always use "Mouse Select & Move"

Campbell Barton noreply at git.blender.org
Thu Mar 24 10:47:48 CET 2022


Commit: bc290b47cd1f26aa493f2a910289877c96c4d3c4
Author: Campbell Barton
Date:   Thu Mar 24 20:39:03 2022 +1100
Branches: master
https://developer.blender.org/rBbc290b47cd1f26aa493f2a910289877c96c4d3c4

Keymap: experimental preference always use "Mouse Select & Move"

This was already as a preference for the tweak tool,
this preference enables the option for all selection
in the 3D view & UV editor.

This extends on changes from T96544.

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

M	release/scripts/presets/keyconfig/Blender.py
M	release/scripts/presets/keyconfig/keymap_data/blender_default.py
M	source/blender/editors/space_view3d/view3d_select.c

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

diff --git a/release/scripts/presets/keyconfig/Blender.py b/release/scripts/presets/keyconfig/Blender.py
index 8f9bea82358..7ce9a5650bd 100644
--- a/release/scripts/presets/keyconfig/Blender.py
+++ b/release/scripts/presets/keyconfig/Blender.py
@@ -86,6 +86,16 @@ class Prefs(bpy.types.KeyConfigPreferences):
         update=update_fn,
     )
 
+    # Experimental: only show with developer extras, see: T96544.
+    use_tweak_select_passthrough: BoolProperty(
+        name="Tweak Select: Mouse Select & Move",
+        description=(
+            "The tweak tool is activated immediately instead of placing the cursor. "
+            "This is an experimental preference and may be removed"
+        ),
+        default=False,
+        update=update_fn,
+    )
     # Experimental: only show with developer extras, see: T96544.
     use_tweak_tool_lmb_interaction: BoolProperty(
         name="Tweak Tool: Left Mouse Select & Move",
@@ -283,6 +293,9 @@ class Prefs(bpy.types.KeyConfigPreferences):
         row = sub.row()
         row.prop(self, "use_select_all_toggle")
 
+        if show_developer_ui:
+            row = sub.row()
+            row.prop(self, "use_tweak_select_passthrough")
         if show_developer_ui and (not is_select_left):
             row = sub.row()
             row.prop(self, "use_tweak_tool_lmb_interaction")
@@ -340,6 +353,7 @@ def load():
             use_gizmo_drag=(is_select_left and kc_prefs.gizmo_action == 'DRAG'),
             use_fallback_tool=True,
             use_fallback_tool_rmb=(False if is_select_left else kc_prefs.rmb_action == 'FALLBACK_TOOL'),
+            use_tweak_select_passthrough=(show_developer_ui and kc_prefs.use_tweak_select_passthrough),
             use_tweak_tool_lmb_interaction=(
                 False if is_select_left else
                 (show_developer_ui and kc_prefs.use_tweak_tool_lmb_interaction)
diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
index 69558ecb9f1..d307c3d0f0a 100644
--- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py
+++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
@@ -31,6 +31,7 @@ class Params:
         "context_menu_event",
         "cursor_set_event",
         "cursor_tweak_event",
+        "use_tweak_select_passthrough",
         "use_tweak_tool_lmb_interaction",
         "use_mouse_emulate_3_button",
 
@@ -103,6 +104,7 @@ class Params:
             use_gizmo_drag=True,
             use_fallback_tool=False,
             use_fallback_tool_rmb=False,
+            use_tweak_select_passthrough=False,
             use_tweak_tool_lmb_interaction=False,
             use_v3d_tab_menu=False,
             use_v3d_shade_ex_pie=False,
@@ -189,6 +191,8 @@ class Params:
 
         self.use_file_single_click = use_file_single_click
 
+        self.use_tweak_select_passthrough = use_tweak_select_passthrough
+
         self.use_fallback_tool = use_fallback_tool
         self.use_fallback_tool_rmb = use_fallback_tool_rmb
 
@@ -1185,7 +1189,12 @@ def km_uv_editor(params):
     items.extend([
         # Selection modes.
         *_template_items_uv_select_mode(params),
-        *_template_uv_select(type=params.select_mouse, value=params.select_mouse_value_fallback, legacy=params.legacy),
+        *_template_uv_select(
+            type=params.select_mouse,
+            value=params.select_mouse_value_fallback,
+            select_passthrough=params.use_tweak_select_passthrough,
+            legacy=params.legacy,
+        ),
         ("uv.mark_seam", {"type": 'E', "value": 'PRESS', "ctrl": True}, None),
         ("uv.select_loop",
          {"type": params.select_mouse, "value": params.select_mouse_value, "alt": True}, None),
@@ -1513,6 +1522,7 @@ def km_view3d(params):
             type=params.select_mouse,
             value=params.select_mouse_value_fallback,
             legacy=params.legacy,
+            select_passthrough=params.use_tweak_select_passthrough,
         ),
         op_tool_optional(
             ("view3d.select_box", {"type": 'B', "value": 'PRESS'}, None),
@@ -4677,7 +4687,7 @@ def _template_paint_radial_control(paint, rotation=False, secondary_rotation=Fal
     return items
 
 
-def _template_view3d_select(*, type, value, legacy, exclude_mod=None):
+def _template_view3d_select(*, type, value, legacy, select_passthrough, exclude_mod=None):
     # NOTE: `exclude_mod` is needed since we don't want this tool to exclude Control-RMB actions when this is used
     # as a tool key-map with RMB-select and `use_fallback_tool_rmb` is enabled. See T92467.
     return [(
@@ -4685,7 +4695,8 @@ def _template_view3d_select(*, type, value, legacy, exclude_mod=None):
         {"type": type, "value": value, **{m: True for m in mods}},
         {"properties": [(c, True) for c in props]},
     ) for props, mods in (
-        (("deselect_all",) if not legacy else (), ()),
+        ((("deselect_all", "select_passthrough") if select_passthrough else
+          ("deselect_all",)) if not legacy else (), ()),
         (("toggle",), ("shift",)),
         (("center", "object"), ("ctrl",)),
         (("enumerate",), ("alt",)),
@@ -4711,10 +4722,13 @@ def _template_view3d_gpencil_select(*, type, value, legacy, use_select_mouse=Tru
     ]
 
 
-def _template_uv_select(*, type, value, legacy):
+def _template_uv_select(*, type, value, select_passthrough, legacy):
     return [
         ("uv.select", {"type": type, "value": value},
-         {"properties": [("deselect_all", not legacy)]}),
+         {"properties": [
+             *((("deselect_all", True),) if not legacy else ()),
+             *((("select_passthrough", True),) if select_passthrough else ()),
+         ]}),
         ("uv.select", {"type": type, "value": value, "shift": True},
          {"properties": [("toggle", True)]}),
     ]
@@ -6308,7 +6322,11 @@ def km_image_editor_tool_uv_select(params, *, fallback):
             *([] if (fallback and (params.select_mouse == 'RIGHTMOUSE')) else _template_items_tool_select(
                 params, "uv.select", "uv.cursor_set", fallback)),
             *([] if (not params.use_fallback_tool_rmb) else _template_uv_select(
-                type=params.select_mouse, value=params.select_mouse_value, legacy=params.legacy)),
+                type=params.select_mouse,
+                value=params.select_mouse_value,
+                select_passthrough=params.use_tweak_select_passthrough,
+                legacy=params.legacy,
+            )),
         ]},
     )
 
@@ -6515,7 +6533,12 @@ def km_3d_view_tool_select(params, *, fallback):
             *([] if (fallback and (params.select_mouse == 'RIGHTMOUSE')) else _template_items_tool_select(
                 params, "view3d.select", "view3d.cursor3d", fallback)),
             *([] if (not params.use_fallback_tool_rmb) else _template_view3d_select(
-                type=params.select_mouse, value=params.select_mouse_value, legacy=params.legacy, exclude_mod="ctrl")),
+                type=params.select_mouse,
+                value=params.select_mouse_value,
+                legacy=params.legacy,
+                select_passthrough=params.use_tweak_select_passthrough,
+                exclude_mod="ctrl",
+            )),
         ]},
     )
 
diff --git a/source/blender/editors/space_view3d/view3d_select.c b/source/blender/editors/space_view3d/view3d_select.c
index 28d86f457ee..6ae9b463cfb 100644
--- a/source/blender/editors/space_view3d/view3d_select.c
+++ b/source/blender/editors/space_view3d/view3d_select.c
@@ -2745,6 +2745,11 @@ static bool ed_object_select_pick(bContext *C,
     if (params->sel_op == SEL_OP_SET) {
       if ((found && params->select_passthrough) && (basact->flag & BASE_SELECTED)) {
         found = false;
+        /* NOTE(@campbellbarton): Experimental behavior to set active even keeping the selection
+         * without this it's inconvenient to set the active object. */
+        if (basact != oldbasact) {
+          use_activate_selected_base = true;
+        }
       }
       else if (found || params->deselect_all) {
         /* Deselect everything. */



More information about the Bf-blender-cvs mailing list