diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c index 1df42659bf8..b2c1ceba36c 100644 --- a/source/blender/editors/interface/interface_templates.c +++ b/source/blender/editors/interface/interface_templates.c @@ -7109,9 +7109,11 @@ static void menu_types_add_from_keymap_items(bContext *C, if (STR_ELEM(kmi->idname, "WM_OT_call_menu", "WM_OT_call_menu_pie")) { char menu_idname[MAX_NAME]; RNA_string_get(kmi->ptr, "name", menu_idname); + bool can_search = RNA_boolean_get(kmi->ptr, "searchable"); MenuType *mt = WM_menutype_find(menu_idname, false); - if (mt && BLI_gset_add(menu_tagged, mt)) { + if ((mt && BLI_gset_add(menu_tagged, mt)) && (can_search == true)) { + /* Unlikely, but possible this will be included twice. */ BLI_linklist_prepend(menuid_stack_p, mt); @@ -7120,6 +7122,9 @@ static void menu_types_add_from_keymap_items(bContext *C, *kmi_p = kmi; } } + else if (!can_search) { + printf("Menu Delisted: '%s'\n", menu_idname); + } } } } diff --git a/source/blender/windowmanager/intern/wm_keymap_utils.c b/source/blender/windowmanager/intern/wm_keymap_utils.c index 5ab36b15666..7261837aabf 100644 --- a/source/blender/windowmanager/intern/wm_keymap_utils.c +++ b/source/blender/windowmanager/intern/wm_keymap_utils.c @@ -50,6 +50,7 @@ wmKeyMapItem *WM_keymap_add_menu( wmKeyMapItem *kmi = WM_keymap_add_item( keymap, "WM_OT_call_menu", type, val, modifier, keymodifier); RNA_string_set(kmi->ptr, "name", idname); + RNA_boolean_set(kmi->ptr, "searchable", 1); return kmi; } @@ -59,6 +60,7 @@ wmKeyMapItem *WM_keymap_add_menu_pie( wmKeyMapItem *kmi = WM_keymap_add_item( keymap, "WM_OT_call_menu_pie", type, val, modifier, keymodifier); RNA_string_set(kmi->ptr, "name", idname); + RNA_boolean_set(kmi->ptr, "searchable", 1); return kmi; } diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 96b2fcf92e7..9bc624f0a2e 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -1855,7 +1855,11 @@ static void WM_OT_call_menu(wmOperatorType *ot) ot->flag = OPTYPE_INTERNAL; + PropertyRNA *prop; + RNA_def_string(ot->srna, "name", NULL, BKE_ST_MAXNAME, "Name", "Name of the menu"); + prop = RNA_def_boolean(ot->srna, "searchable", 1, "Searchable", "Index this menu for search"); + RNA_def_property_flag(prop, PROP_EDITABLE); } static int wm_call_pie_menu_invoke(bContext *C, wmOperator *op, const wmEvent *event) @@ -1888,6 +1892,7 @@ static void WM_OT_call_menu_pie(wmOperatorType *ot) ot->flag = OPTYPE_INTERNAL; RNA_def_string(ot->srna, "name", NULL, BKE_ST_MAXNAME, "Name", "Name of the pie menu"); + RNA_def_boolean(ot->srna, "searchable", 1, "Searchable", "Index this menu for search"); } static int wm_call_panel_exec(bContext *C, wmOperator *op)