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
path: root/source
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2018-07-12 11:37:20 +0300
committerCampbell Barton <ideasman42@gmail.com>2018-07-12 11:37:20 +0300
commit864a4cf64becfd63864832c9019a79b8926f2d39 (patch)
treeba7cf458e6c2681b6fe2122a09e1c6cc6bbe23a2 /source
parent21b6983b9d2ea41e596071e73056442adc658b3d (diff)
Keymap: Modifiers to control mesh elem switching
Shift/Ctrl control extend/expand when number keys are used to switch modes.
Diffstat (limited to 'source')
-rw-r--r--source/blender/editors/mesh/mesh_ops.c32
1 files changed, 15 insertions, 17 deletions
diff --git a/source/blender/editors/mesh/mesh_ops.c b/source/blender/editors/mesh/mesh_ops.c
index 910076011d4..2bfc0634f1e 100644
--- a/source/blender/editors/mesh/mesh_ops.c
+++ b/source/blender/editors/mesh/mesh_ops.c
@@ -336,23 +336,21 @@ void ED_keymap_mesh(wmKeyConfig *keyconf)
RNA_boolean_set(kmi->ptr, "vertex_only", true);
/* selecting */
-
- kmi = WM_keymap_add_item(keymap, "MESH_OT_select_mode", ONEKEY, KM_PRESS, 0, 0);
- RNA_enum_set(kmi->ptr, "type", SCE_SELECT_VERTEX);
- kmi = WM_keymap_add_item(keymap, "MESH_OT_select_mode", TWOKEY, KM_PRESS, 0, 0);
- RNA_enum_set(kmi->ptr, "type", SCE_SELECT_EDGE);
- kmi = WM_keymap_add_item(keymap, "MESH_OT_select_mode", THREEKEY, KM_PRESS, 0, 0);
- RNA_enum_set(kmi->ptr, "type", SCE_SELECT_FACE);
-
- kmi = WM_keymap_add_item(keymap, "MESH_OT_select_mode", ONEKEY, KM_PRESS, KM_SHIFT, 0);
- RNA_enum_set(kmi->ptr, "type", SCE_SELECT_VERTEX);
- RNA_boolean_set(kmi->ptr, "use_extend", true);
- kmi = WM_keymap_add_item(keymap, "MESH_OT_select_mode", TWOKEY, KM_PRESS, KM_SHIFT, 0);
- RNA_enum_set(kmi->ptr, "type", SCE_SELECT_EDGE);
- RNA_boolean_set(kmi->ptr, "use_extend", true);
- kmi = WM_keymap_add_item(keymap, "MESH_OT_select_mode", THREEKEY, KM_PRESS, KM_SHIFT, 0);
- RNA_enum_set(kmi->ptr, "type", SCE_SELECT_FACE);
- RNA_boolean_set(kmi->ptr, "use_extend", true);
+ for (int i = 0; i < 4; i++) {
+ const bool is_extend = (i & 1);
+ const bool is_expand = (i & 2);
+ const int key_modifier = (is_extend ? KM_SHIFT : 0) | (is_expand ? KM_CTRL : 0);
+ for (int j = 0; j < 3; j++) {
+ kmi = WM_keymap_add_item(keymap, "MESH_OT_select_mode", ONEKEY + j, KM_PRESS, key_modifier, 0);
+ RNA_enum_set(kmi->ptr, "type", SCE_SELECT_VERTEX << j);
+ if (is_extend) {
+ RNA_boolean_set(kmi->ptr, "use_extend", true);
+ }
+ if (is_expand) {
+ RNA_boolean_set(kmi->ptr, "use_expand", true);
+ }
+ }
+ }
/* standard mouse selection goes via space_view3d */
kmi = WM_keymap_add_item(keymap, "MESH_OT_loop_select", SELECTMOUSE, KM_PRESS, KM_ALT, 0);