Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@gmail.com>2018-11-25 20:59:58 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2018-11-25 22:07:47 +0300
commite840f0a90ba726663f8bd0f4df24baee6e4f7d80 (patch)
tree6652b727d607af7472bcde98f3d869302dd56a56 /release
parent7051a955166b47edc7bbc9cba91aa222da16f66f (diff)
Keymaps: add 3D view click empty space to deselect all.
The implementation of this operator was modified to be more efficient and ensure the undo history has the exact operator used.
Diffstat (limited to 'release')
-rw-r--r--release/scripts/presets/keyconfig/keymap_data/blender_default.py20
-rw-r--r--release/scripts/startup/bl_operators/view3d.py82
2 files changed, 56 insertions, 46 deletions
diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
index 182dfd0870b..3e481d84096 100644
--- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py
+++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
@@ -977,18 +977,18 @@ def km_view3d(params):
("view3d.view_axis", {"type": 'NDOF_BUTTON_TOP', "value": 'PRESS', "shift": True},
{"properties": [("type", 'TOP'), ("align_active", True)]}),
# Selection.
- *(("view3d.select",
+ *((operator,
{"type": params.select_mouse, "value": params.select_mouse_value, **{m: True for m in mods}},
{"properties": [(c, True) for c in props]},
- ) for props, mods in (
- ((), ()),
- (("toggle",), ("shift",)),
- (("center", "object"), ("ctrl",)),
- (("enumerate",), ("alt",)),
- (("extend", "toggle", "center"), ("shift", "ctrl")),
- (("center", "enumerate"), ("ctrl", "alt")),
- (("toggle", "enumerate"), ("shift", "alt")),
- (("toggle", "center", "enumerate"), ("shift", "ctrl", "alt")),
+ ) for operator, props, mods in (
+ ("view3d.select_or_deselect_all" if not params.legacy else "view3d.select", (), ()),
+ ("view3d.select", ("toggle",), ("shift",)),
+ ("view3d.select", ("center", "object"), ("ctrl",)),
+ ("view3d.select", ("enumerate",), ("alt",)),
+ ("view3d.select", ("extend", "toggle", "center"), ("shift", "ctrl")),
+ ("view3d.select", ("center", "enumerate"), ("ctrl", "alt")),
+ ("view3d.select", ("toggle", "enumerate"), ("shift", "alt")),
+ ("view3d.select", ("toggle", "center", "enumerate"), ("shift", "ctrl", "alt")),
)),
("view3d.select_box", {"type": 'B', "value": 'PRESS'}, None),
("view3d.select_lasso", {"type": params.action_tweak, "value": 'ANY', "ctrl": True},
diff --git a/release/scripts/startup/bl_operators/view3d.py b/release/scripts/startup/bl_operators/view3d.py
index b43f4446802..e8c56346ee9 100644
--- a/release/scripts/startup/bl_operators/view3d.py
+++ b/release/scripts/startup/bl_operators/view3d.py
@@ -141,42 +141,47 @@ class VIEW3D_OT_select_or_deselect_all(Operator):
"""Select element under the mouse, deselect everything is there's nothing under the mouse"""
bl_label = "Select or Deselect All"
bl_idname = "view3d.select_or_deselect_all"
- bl_options = {'UNDO'}
extend: BoolProperty(
name="Extend",
description="Extend selection instead of deselecting everything first",
default=False,
+ options={'SKIP_SAVE'},
)
toggle: BoolProperty(
name="Toggle",
description="Toggle the selection",
default=False,
+ options={'SKIP_SAVE'},
)
deselect: BoolProperty(
name="Deselect",
description="Remove from selection",
default=False,
+ options={'SKIP_SAVE'},
)
center: BoolProperty(
name="Center",
description="Use the object center when selecting, in editmode used to extend object selection",
default=False,
+ options={'SKIP_SAVE'},
)
enumerate: BoolProperty(
name="Enumerate",
description="List objects under the mouse (object mode only)",
default=False,
+ options={'SKIP_SAVE'},
)
object: BoolProperty(
name="Object",
description="Use object selection (editmode only)",
default=False,
+ options={'SKIP_SAVE'},
)
@classmethod
@@ -187,42 +192,47 @@ class VIEW3D_OT_select_or_deselect_all(Operator):
return True
def invoke(self, context, event):
- x = event.mouse_region_x
- y = event.mouse_region_y
-
- if self.extend is False and self.toggle is False and self.deselect is False:
- active_object = context.active_object
-
- if active_object:
- if active_object.mode == 'EDIT':
- if active_object.type == 'MESH':
- bpy.ops.mesh.select_all(action='DESELECT')
- elif active_object.type == 'CURVE':
- bpy.ops.curve.select_all(action='DESELECT')
- elif active_object.type == 'SURFACE':
- bpy.ops.curve.select_all(action='DESELECT')
- elif active_object.type == 'LATTICE':
- bpy.ops.lattice.select_all(action='DESELECT')
- elif active_object.type == 'META':
- bpy.ops.mball.select_all(action='DESELECT')
- elif active_object.type == 'ARMATURE':
- bpy.ops.armature.select_all(action='DESELECT')
- elif active_object.mode == 'POSE':
- bpy.ops.pose.select_all(action='DESELECT')
- elif active_object.mode == 'PARTICLE_EDIT':
- bpy.ops.particle.select_all(action='DESELECT')
- else:
- bpy.ops.object.select_all(action='DESELECT')
+ retval = bpy.ops.view3d.select('INVOKE_DEFAULT',
+ True, # undo push
+ extend=self.extend,
+ deselect=self.deselect,
+ toggle=self.toggle,
+ center=self.center,
+ enumerate=self.enumerate,
+ object=self.object)
+
+ # Finished means something was selected.
+ if 'FINISHED' in retval:
+ return retval
+ if self.extend or self.toggle or self.deselect:
+ return retval
+
+ active_object = context.active_object
+
+ if active_object:
+ if active_object.mode == 'EDIT':
+ if active_object.type == 'MESH':
+ select_all = bpy.ops.mesh.select_all
+ elif active_object.type == 'CURVE':
+ select_all = bpy.ops.curve.select_all
+ elif active_object.type == 'SURFACE':
+ select_all = bpy.ops.curve.select_all
+ elif active_object.type == 'LATTICE':
+ select_all = bpy.ops.lattice.select_all
+ elif active_object.type == 'META':
+ select_all = bpy.ops.mball.select_all
+ elif active_object.type == 'ARMATURE':
+ select_all = bpy.ops.armature.select_all
+ elif active_object.mode == 'POSE':
+ select_all = bpy.ops.pose.select_all
+ elif active_object.mode == 'PARTICLE_EDIT':
+ select_all = bpy.ops.particle.select_all
else:
- bpy.ops.object.select_all(action='DESELECT')
-
- return bpy.ops.view3d.select(extend=self.extend,
- deselect=self.deselect,
- toggle=self.toggle,
- center=self.center,
- enumerate=self.enumerate,
- object=self.object,
- location=(x, y))
+ select_all = bpy.ops.object.select_all
+ else:
+ select_all = bpy.ops.object.select_all
+
+ return select_all('INVOKE_DEFAULT', True, action='DESELECT')
classes = (