Keymap: Modifiers to control mesh elem switching

Shift/Ctrl control extend/expand when number keys are used
to switch modes.
This commit is contained in:
Campbell Barton 2018-07-12 10:37:20 +02:00
parent 21b6983b9d
commit 864a4cf64b
1 changed files with 15 additions and 17 deletions

View File

@ -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);