diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c index d60e2d0cdb6..f8232af5893 100644 --- a/source/blender/editors/interface/interface.c +++ b/source/blender/editors/interface/interface.c @@ -4615,6 +4615,9 @@ void UI_but_func_search_set( #endif UI_but_func_set(but, bfunc, arg, active); } + else { + UI_but_func_set(but, but->func, but->func_arg1, active); + } /* search buttons show red-alert if item doesn't exist, not for menus */ if (0 == (but->block->flag & UI_BLOCK_LOOP)) { diff --git a/source/blender/editors/interface/interface_layout.c b/source/blender/editors/interface/interface_layout.c index 6cd2ba0b924..b808fc3fe7f 100644 --- a/source/blender/editors/interface/interface_layout.c +++ b/source/blender/editors/interface/interface_layout.c @@ -2112,9 +2112,26 @@ void ui_but_add_search(uiBut *but, PointerRNA *ptr, PropertyRNA *prop, PointerRN but->str[0] = 0; } + /* setting initially selected item */ + void *data = NULL; + switch (RNA_property_type(prop)) { + case PROP_POINTER: { + PointerRNA pptr = RNA_property_pointer_get(ptr, prop); + data = pptr.data; + break; + } + case PROP_ENUM: { + data = RNA_property_enum_get(ptr, prop); + break; + } + case PROP_STRING: { + break; + } + } + UI_but_func_search_set( but, ui_searchbox_create_generic, ui_rna_collection_search_cb, - coll_search, NULL, NULL); + coll_search, NULL, data); but->free_search_arg = true; } else if (but->type == UI_BTYPE_SEARCH_MENU) {