[Bf-blender-cvs] [43325e98da8] blender2.8: Tools: add Select tool, with transform tweak on drag and no click delay.

Brecht Van Lommel noreply at git.blender.org
Sun Nov 25 20:44:47 CET 2018


Commit: 43325e98da8849029aad111915443654b686fd24
Author: Brecht Van Lommel
Date:   Thu Nov 22 16:05:28 2018 +0100
Branches: blender2.8
https://developer.blender.org/rB43325e98da8849029aad111915443654b686fd24

Tools: add Select tool, with transform tweak on drag and no click delay.

For users that want the 2.7 LMB keymap behavior, this provides a way of
working without tools interfering. For RMB select this operator is quite
redundant with the Cursor tool, we may have to find a solution for that.

Note that we also might later add transform tweak to the transform tools,
when nothing is selected. But this is important for existing users who
preferred the existing workflow.

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

M	release/scripts/presets/keyconfig/keymap_data/blender_default.py
M	release/scripts/startup/bl_ui/space_toolsystem_toolbar.py
M	source/blender/windowmanager/intern/wm_toolsystem.c

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

diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
index 3e481d84096..77e9993ad86 100644
--- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py
+++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
@@ -133,6 +133,10 @@ def op_tool(tool, kmi_args):
     return ("wm.tool_set_by_name", kmi_args, {"properties": [("name", tool)]})
 
 
+def op_tool_cycle(tool, kmi_args):
+    return ("wm.tool_set_by_name", kmi_args, {"properties": [("name", tool), ("cycle", True)]})
+
+
 # ------------------------------------------------------------------------------
 # Keymap Templates
 
@@ -211,6 +215,19 @@ def _template_items_proportional_editing(*, connected=False):
 
 # Tool System Templates
 
+def _template_items_tool_select(params, operator, cursor_operator):
+    if params.select_mouse == 'LEFTMOUSE':
+        # Immediate select without quick delay.
+        return [(operator, {"type": 'LEFTMOUSE', "value": 'PRESS'}, None)]
+    else:
+        # For right mouse, set the cursor.
+        return [
+            (cursor_operator, {"type": 'LEFTMOUSE', "value": 'PRESS'}, None),
+            ("transform.translate", {"type": 'EVT_TWEAK_L', "value": 'ANY'},
+             {"properties": [("release_confirm", True), ("cursor_transform", True)]}),
+        ]
+
+
 def _template_items_tool_select_actions(operator, *, type, value):
     kmi_args = {"type": type, "value": value}
     return [
@@ -767,7 +784,7 @@ def km_uv_editor(params):
         # Quick switch to select tool, since left select can't easily
         # select with any tool active.
         items.extend([
-            op_tool("Select Box", {"type": 'W', "value": 'PRESS'}),
+            op_tool_cycle("Select", {"type": 'W', "value": 'PRESS'}),
         ])
 
     return keymap
@@ -1116,7 +1133,7 @@ def km_view3d(params):
         # Quick switch to select tool, since left select can't easily
         # select with any tool active.
         items.extend([
-            op_tool("Select Box", {"type": 'W', "value": 'PRESS'}),
+            op_tool_cycle("Select", {"type": 'W', "value": 'PRESS'}),
         ])
 
     return keymap
@@ -4928,6 +4945,14 @@ def km_image_editor_tool_uv_cursor(params):
     )
 
 
+def km_image_editor_tool_uv_select(params):
+    return (
+        "Image Editor Tool: Uv, Select",
+        {"space_type": 'IMAGE_EDITOR', "region_type": 'WINDOW'},
+        {"items": _template_items_tool_select(params, "uv.select", "uv.cursor_set")},
+    )
+
+
 def km_image_editor_tool_uv_select_box(params):
     return (
         "Image Editor Tool: Uv, Select Box",
@@ -5019,6 +5044,14 @@ def km_3d_view_tool_object_cursor(params):
     )
 
 
+def km_3d_view_tool_object_select(params):
+    return (
+        "3D View Tool: Object, Select",
+        {"space_type": 'VIEW_3D', "region_type": 'WINDOW'},
+        {"items": _template_items_tool_select(params, "view3d.select", "view3d.cursor3d")},
+    )
+
+
 def km_3d_view_tool_object_select_box(params):
     return (
         "3D View Tool: Object, Select Box",
@@ -5688,6 +5721,14 @@ def km_3d_view_tool_gpencil_paint_circle(params):
     )
 
 
+def km_3d_view_tool_gpencil_edit_select(params):
+    return (
+        "3D View Tool: Gpencil Edit, Select",
+        {"space_type": 'VIEW_3D', "region_type": 'WINDOW'},
+        {"items": _template_items_tool_select(params, "gpencil.select", "view3d.cursor3d")},
+    )
+
+
 def km_3d_view_tool_gpencil_edit_select_box(params):
     return (
         "3D View Tool: Gpencil Edit, Select Box",
@@ -5889,6 +5930,7 @@ def generate_keymaps(params=None):
 
         # Tool System.
         km_image_editor_tool_uv_cursor(params),
+        km_image_editor_tool_uv_select(params),
         km_image_editor_tool_uv_select_box(params),
         km_image_editor_tool_uv_select_circle(params),
         km_image_editor_tool_uv_select_lasso(params),
@@ -5897,6 +5939,7 @@ def generate_keymaps(params=None):
         km_image_editor_tool_uv_annotate_polygon(params),
         km_image_editor_tool_uv_annotate_eraser(params),
         km_3d_view_tool_object_cursor(params),
+        km_3d_view_tool_object_select(params),
         km_3d_view_tool_object_select_box(params),
         km_3d_view_tool_object_select_circle(params),
         km_3d_view_tool_object_select_lasso(params),
@@ -5953,6 +5996,7 @@ def generate_keymaps(params=None):
         km_3d_view_tool_gpencil_paint_line(params),
         km_3d_view_tool_gpencil_paint_box(params),
         km_3d_view_tool_gpencil_paint_circle(params),
+        km_3d_view_tool_gpencil_edit_select(params),
         km_3d_view_tool_gpencil_edit_select_box(params),
         km_3d_view_tool_gpencil_edit_select_circle(params),
         km_3d_view_tool_gpencil_edit_select_lasso(params),
diff --git a/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py b/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py
index 53b6a7d0956..4348efd75bd 100644
--- a/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py
+++ b/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py
@@ -279,7 +279,19 @@ class _defs_transform:
 class _defs_view3d_select:
 
     @ToolDef.from_fn
-    def border():
+    def select():
+        def draw_settings(context, layout, tool):
+            pass
+        return dict(
+            text="Select",
+            icon="ops.generic.select",
+            widget=None,
+            keymap=(),
+            draw_settings=draw_settings,
+        )
+
+    @ToolDef.from_fn
+    def box():
         def draw_settings(context, layout, tool):
             props = tool.operator_properties("view3d.select_box")
             layout.prop(props, "mode", expand=True)
@@ -960,7 +972,19 @@ class _defs_image_uv_transform:
 class _defs_image_uv_select:
 
     @ToolDef.from_fn
-    def border():
+    def select():
+        def draw_settings(context, layout, tool):
+            pass
+        return dict(
+            text="Select",
+            icon="ops.generic.select",
+            widget=None,
+            keymap=(),
+            draw_settings=draw_settings,
+        )
+
+    @ToolDef.from_fn
+    def box():
         def draw_settings(context, layout, tool):
             props = tool.operator_properties("uv.select_box")
             layout.prop(props, "mode", expand=True)
@@ -1066,6 +1090,18 @@ class _defs_gpencil_edit:
             keymap=(),
         )
 
+    @ToolDef.from_fn
+    def select():
+        def draw_settings(context, layout, tool):
+            pass
+        return dict(
+            text="Select",
+            icon="ops.generic.select",
+            widget=None,
+            keymap=(),
+            draw_settings=draw_settings,
+        )
+
     @ToolDef.from_fn
     def box_select():
         def draw_settings(context, layout, tool):
@@ -1220,7 +1256,8 @@ class IMAGE_PT_tools_active(ToolSelectPanelHelper, Panel):
 
     _tools_select = (
         (
-            _defs_image_uv_select.border,
+            _defs_image_uv_select.select,
+            _defs_image_uv_select.box,
             _defs_image_uv_select.circle,
             _defs_image_uv_select.lasso,
         ),
@@ -1301,7 +1338,8 @@ class VIEW3D_PT_tools_active(ToolSelectPanelHelper, Panel):
 
     _tools_select = (
         (
-            _defs_view3d_select.border,
+            _defs_view3d_select.select,
+            _defs_view3d_select.box,
             _defs_view3d_select.circle,
             _defs_view3d_select.lasso,
         ),
@@ -1319,6 +1357,7 @@ class VIEW3D_PT_tools_active(ToolSelectPanelHelper, Panel):
 
     _tools_gpencil_select = (
         (
+            _defs_gpencil_edit.select,
             _defs_gpencil_edit.box_select,
             _defs_gpencil_edit.circle_select,
             _defs_gpencil_edit.lasso_select,
diff --git a/source/blender/windowmanager/intern/wm_toolsystem.c b/source/blender/windowmanager/intern/wm_toolsystem.c
index d1173fccff8..3d1adab6645 100644
--- a/source/blender/windowmanager/intern/wm_toolsystem.c
+++ b/source/blender/windowmanager/intern/wm_toolsystem.c
@@ -814,7 +814,7 @@ static const char *toolsystem_default_tool(const bToolKey *tkey)
 			break;
 	}
 
-	return "Select Box";
+	return "Select";
 }
 
 /**



More information about the Bf-blender-cvs mailing list