Keymap: only use MMB workaround whe MMB is enabled

Using double-click with selection breaks selection cycling behavior
(making you have to wait to click again to cycle-select the next item).
This commit is contained in:
Campbell Barton 2018-12-06 10:02:25 +11:00
parent 095f9f26aa
commit 75b739c969
4 changed files with 30 additions and 9 deletions

View File

@ -105,14 +105,17 @@ blender_default = bpy.utils.execfile(os.path.join(dirname, "keymap_data", "blend
def load():
from bpy import context
from bl_keymap_utils.io import keyconfig_init_from_data
kc = bpy.context.window_manager.keyconfigs.new(idname)
prefs = context.user_preferences
kc = context.window_manager.keyconfigs.new(idname)
kc_prefs = kc.preferences
keyconfig_data = blender_default.generate_keymaps(
blender_default.Params(
select_mouse=kc_prefs.select_mouse,
use_mouse_emulate_3_button=prefs.inputs.use_mouse_emulate_3_button,
spacebar_action=kc_prefs.spacebar_action,
use_select_all_toggle=kc_prefs.use_select_all_toggle,
use_v3d_tab_menu=kc_prefs.use_v3d_tab_menu,

View File

@ -42,14 +42,17 @@ class Prefs(bpy.types.KeyConfigPreferences):
blender_default = bpy.utils.execfile(os.path.join(dirname, "keymap_data", "blender_default.py"))
def load():
from bpy import context
from bl_keymap_utils.io import keyconfig_init_from_data
kc = bpy.context.window_manager.keyconfigs.new(idname)
prefs = context.user_preferences
kc = context.window_manager.keyconfigs.new(idname)
kc_prefs = kc.preferences
keyconfig_data = blender_default.generate_keymaps(
blender_default.Params(
select_mouse=kc_prefs.select_mouse,
use_mouse_emulate_3_button=prefs.inputs.use_mouse_emulate_3_button,
spacebar_action='SEARCH',
use_select_all_toggle=True,
legacy=True,

View File

@ -34,6 +34,7 @@ class Params:
"context_menu_event",
"cursor_set_event",
"cursor_tweak_event",
"use_mouse_emulate_3_button",
# User preferences.
#
@ -52,6 +53,7 @@ class Params:
*,
legacy=False,
select_mouse='RIGHT',
use_mouse_emulate_3_button=False,
# User preferences.
spacebar_action='TOOL',
@ -97,6 +99,8 @@ class Params:
self.cursor_set_event = {"type": 'RIGHTMOUSE', "value": 'PRESS', "shift": True}
self.cursor_tweak_event = {"type": 'EVT_TWEAK_R', "value": 'ANY', "shift": True}
self.use_mouse_emulate_3_button = use_mouse_emulate_3_button
# User preferences
self.spacebar_action = spacebar_action
self.use_select_all_toggle = use_select_all_toggle
@ -3766,13 +3770,7 @@ def km_mesh(params):
{"properties": [("vertex_only", True)]}),
# Selection modes.
*_template_items_editmode_mesh_select_mode(),
# Loop Select with alt, and double click in case MMB emulation is on.
("mesh.loop_select", {"type": params.select_mouse, "value": 'DOUBLE_CLICK'},
{"properties": [("extend", False), ("deselect", False), ("toggle", False)]}),
("mesh.loop_select", {"type": params.select_mouse, "value": 'DOUBLE_CLICK', "shift": True},
{"properties": [("extend", True), ("deselect", False), ("toggle", False)]}),
("mesh.loop_select", {"type": params.select_mouse, "value": 'DOUBLE_CLICK', "alt": True},
{"properties": [("extend", False), ("deselect", True), ("toggle", False)]}),
# Loop Select with alt. Double click in case MMB emulation is on (below).
("mesh.loop_select", {"type": params.select_mouse, "value": params.select_mouse_value, "alt": True},
{"properties": [("extend", False), ("deselect", False), ("toggle", False)]}),
("mesh.loop_select", {"type": params.select_mouse, "value": params.select_mouse_value, "shift": True, "alt": True},
@ -3856,6 +3854,16 @@ def km_mesh(params):
*_template_items_proportional_editing(connected=True),
])
if params.use_mouse_emulate_3_button:
items.extend([
("mesh.loop_select", {"type": params.select_mouse, "value": 'DOUBLE_CLICK'},
{"properties": [("extend", False), ("deselect", False), ("toggle", False)]}),
("mesh.loop_select", {"type": params.select_mouse, "value": 'DOUBLE_CLICK', "shift": True},
{"properties": [("extend", True), ("deselect", False), ("toggle", False)]}),
("mesh.loop_select", {"type": params.select_mouse, "value": 'DOUBLE_CLICK', "alt": True},
{"properties": [("extend", False), ("deselect", True), ("toggle", False)]}),
])
if params.legacy:
items.extend([
("mesh.poke", {"type": 'P', "value": 'PRESS', "alt": True}, None),

View File

@ -244,6 +244,11 @@ static void rna_userdef_ndof_deadzone_update(Main *UNUSED(bmain), Scene *UNUSED(
}
#endif
static void rna_userdef_keyconfig_reload_update(bContext *C, Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *UNUSED(ptr))
{
WM_keyconfig_reload(C);
}
static void rna_userdef_timecode_style_set(PointerRNA *ptr, int value)
{
UserDef *userdef = (UserDef *)ptr->data;
@ -4772,6 +4777,8 @@ static void rna_def_userdef_input(BlenderRNA *brna)
RNA_def_property_boolean_sdna(prop, NULL, "flag", USER_TWOBUTTONMOUSE);
RNA_def_property_ui_text(prop, "Emulate 3 Button Mouse",
"Emulate Middle Mouse with Alt+Left Mouse (doesn't work with Left Mouse Select option)");
RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE);
RNA_def_property_update(prop, 0, "rna_userdef_keyconfig_reload_update");
prop = RNA_def_property(srna, "use_emulate_numpad", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", USER_NONUMPAD);