diff options
author | Campbell Barton <ideasman42@gmail.com> | 2018-07-12 11:37:20 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2018-07-12 11:37:20 +0300 |
commit | 864a4cf64becfd63864832c9019a79b8926f2d39 (patch) | |
tree | ba7cf458e6c2681b6fe2122a09e1c6cc6bbe23a2 /source/blender | |
parent | 21b6983b9d2ea41e596071e73056442adc658b3d (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/blender')
-rw-r--r-- | source/blender/editors/mesh/mesh_ops.c | 32 |
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); |