[Bf-blender-cvs] [3b1b625eadd] blender2.8: UI: use spacebar for toolbar
Campbell Barton
noreply at git.blender.org
Mon May 21 12:46:33 CEST 2018
Commit: 3b1b625eadd02024d2d82b0fc42e0263c1654799
Author: Campbell Barton
Date: Mon May 21 11:54:47 2018 +0200
Branches: blender2.8
https://developer.blender.org/rB3b1b625eadd02024d2d82b0fc42e0263c1654799
UI: use spacebar for toolbar
- This allows quick, consistent toolbar access
w/o conflicting w/ the keymap.
Where pressing space before a key activates that operator as a tool
instead of running immediately.
- Search can still be accessed by pressing spacebar again.
- When there is no toolbar for a space, operator search still opens.
===================================================================
M release/scripts/startup/bl_operators/wm.py
M release/scripts/startup/bl_ui/space_toolsystem_common.py
M source/blender/editors/screen/screen_ops.c
M source/blender/windowmanager/intern/wm_operators.c
===================================================================
diff --git a/release/scripts/startup/bl_operators/wm.py b/release/scripts/startup/bl_operators/wm.py
index 83a5eefcbe5..f18464a6614 100644
--- a/release/scripts/startup/bl_operators/wm.py
+++ b/release/scripts/startup/bl_operators/wm.py
@@ -2369,7 +2369,9 @@ class WM_OT_toolbar(Operator):
cls = ToolSelectPanelHelper._tool_class_from_space_type(space_type)
if cls is None:
- self.report({'WARNING'}, f"Toolbar not found for {space_type!r}")
+ # self.report({'WARNING'}, f"Toolbar not found for {space_type!r}")
+ # Passthrough to running search directly.
+ bpy.ops.wm.search_menu('INVOKE_DEFAULT')
return {'CANCELLED'}
wm = context.window_manager
@@ -2379,7 +2381,9 @@ class WM_OT_toolbar(Operator):
layout = popover.layout
cls.draw_cls(layout, context, detect_layout=False)
- # wm.popup_menu(draw_menu) # this also works
+ layout.operator_context = 'INVOKE_DEFAULT'
+ layout.operator("wm.search_menu")
+
wm.popover(draw_menu, keymap=keymap)
return {'FINISHED'}
diff --git a/release/scripts/startup/bl_ui/space_toolsystem_common.py b/release/scripts/startup/bl_ui/space_toolsystem_common.py
index fd2300dab22..137e60450d5 100644
--- a/release/scripts/startup/bl_ui/space_toolsystem_common.py
+++ b/release/scripts/startup/bl_ui/space_toolsystem_common.py
@@ -598,6 +598,9 @@ def keymap_from_context(context, space_type):
keymap.keymap_items.remove(kmi)
+ kmi_search = wm.keyconfigs.find_item_from_operator(idname="wm.toolbar")[1]
+ kmi_search_type = None if not kmi_search else kmi_search.type
+
items = []
cls = ToolSelectPanelHelper._tool_class_from_space_type(space_type)
for i, item in enumerate(
@@ -613,10 +616,10 @@ def keymap_from_context(context, space_type):
if item.keymap:
kmi_first = item.keymap[0].keymap_items[0]
- keymap_found, kmi_found = wm.keyconfigs.find_item_from_operator(
+ kmi_found = wm.keyconfigs.find_item_from_operator(
idname=kmi_first.idname,
# properties=kmi_first.properties, # prevents matches, don't use.
- )
+ )[1]
if kmi_found is not None:
kmi_found_type = kmi_found.type
# Only for single keys.
@@ -633,6 +636,15 @@ def keymap_from_context(context, space_type):
key_modifier=kmi_found.key_modifier,
)
kmi.properties.name = item.text
+
+ # Disallow overlap
+ if kmi_search_type == kmi_found_type:
+ kmi_search_type = None
+
+ # Support double-tap for search.
+ if kmi_search_type:
+ keymap.keymap_items.new("wm.search_menu", type=kmi_search_type, value='PRESS')
+
wm.keyconfigs.update()
return keymap
diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c
index 68c05900520..db8a38c6f3c 100644
--- a/source/blender/editors/screen/screen_ops.c
+++ b/source/blender/editors/screen/screen_ops.c
@@ -4637,7 +4637,7 @@ void ED_keymap_screen(wmKeyConfig *keyconf)
RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_screen_set", LEFTARROWKEY, KM_PRESS, KM_CTRL, 0)->ptr, "delta", -1);
WM_keymap_add_item(keymap, "SCREEN_OT_screen_full_area", UPARROWKEY, KM_PRESS, KM_CTRL, 0);
WM_keymap_add_item(keymap, "SCREEN_OT_screen_full_area", DOWNARROWKEY, KM_PRESS, KM_CTRL, 0);
- /* we already have two keys for this, disabled for use by WM_OT_toolbar */
+ /* we already have two keys for this. */
#if 0
WM_keymap_add_item(keymap, "SCREEN_OT_screen_full_area", SPACEKEY, KM_PRESS, KM_SHIFT, 0);
#endif
diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c
index 70be609dba3..6b7ca4ae2e5 100644
--- a/source/blender/windowmanager/intern/wm_operators.c
+++ b/source/blender/windowmanager/intern/wm_operators.c
@@ -3954,12 +3954,16 @@ void wm_window_keymap(wmKeyConfig *keyconf)
WM_keymap_verify_item(keymap, "WM_OT_debug_menu", DKEY, KM_PRESS, KM_ALT | KM_CTRL, 0);
/* menus that can be accessed anywhere in blender */
+
+#if 0 /* Now double-tap via toolbar. */
WM_keymap_verify_item(keymap, "WM_OT_search_menu", SPACEKEY, KM_PRESS, 0, 0);
+#endif
+
#ifdef WITH_INPUT_NDOF
WM_keymap_add_menu(keymap, "USERPREF_MT_ndof_settings", NDOF_BUTTON_MENU, KM_PRESS, 0, 0);
#endif
- WM_keymap_add_item(keymap, "WM_OT_toolbar", SPACEKEY, KM_PRESS, KM_SHIFT, 0);
+ WM_keymap_add_item(keymap, "WM_OT_toolbar", SPACEKEY, KM_PRESS, 0, 0);
/* Space switching */
kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F3KEY, KM_PRESS, KM_SHIFT, 0);
More information about the Bf-blender-cvs
mailing list