[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