From cf9f0b35be1b489c03f015b5ee78d0042fa4c9fb Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 9 Jul 2018 17:36:25 +0200 Subject: UI: add search to popup toolbar Add for convenience only. --- release/scripts/startup/bl_operators/wm.py | 4 ++++ .../scripts/startup/bl_ui/space_toolsystem_common.py | 17 +++++++++++++++++ 2 files changed, 21 insertions(+) (limited to 'release/scripts') diff --git a/release/scripts/startup/bl_operators/wm.py b/release/scripts/startup/bl_operators/wm.py index 30a90fb11d4..a01298f5696 100644 --- a/release/scripts/startup/bl_operators/wm.py +++ b/release/scripts/startup/bl_operators/wm.py @@ -2398,6 +2398,10 @@ class WM_OT_toolbar(Operator): def draw_menu(popover, context): layout = popover.layout + + layout.operator_context = 'INVOKE_DEFAULT' + layout.operator("wm.search_menu", text="Search Commands...", icon='VIEWZOOM') + cls.draw_cls(layout, context, detect_layout=False, scale_y=1.0) wm.popover(draw_menu, ui_units_x=8, keymap=keymap) diff --git a/release/scripts/startup/bl_ui/space_toolsystem_common.py b/release/scripts/startup/bl_ui/space_toolsystem_common.py index 2d7afb7a56a..7fe8360b4da 100644 --- a/release/scripts/startup/bl_ui/space_toolsystem_common.py +++ b/release/scripts/startup/bl_ui/space_toolsystem_common.py @@ -624,7 +624,10 @@ def keymap_from_context(context, space_type): """ Keymap for popup toolbar, currently generated each time. """ + + use_search = False # allows double tap use_simple_keymap = False + km_name = "Toolbar Popup" wm = context.window_manager keyconf = wm.keyconfigs.active @@ -634,6 +637,10 @@ def keymap_from_context(context, space_type): for kmi in keymap.keymap_items: keymap.keymap_items.remove(kmi) + if use_search: + 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( @@ -679,6 +686,16 @@ def keymap_from_context(context, space_type): ) kmi.properties.name = item.text + if use_search: + # Disallow overlap + if kmi_search_type == kmi_found_type: + kmi_search_type = None + + if use_search: + # 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 -- cgit v1.2.3