diff --git a/src/bonsai/bonsai/bim/helper.py b/src/bonsai/bonsai/bim/helper.py index e6c165cd22..c9aab88589 100644 --- a/src/bonsai/bonsai/bim/helper.py +++ b/src/bonsai/bonsai/bim/helper.py @@ -360,9 +360,17 @@ def prop_with_search( prop_name: str, should_click_ok: bool = False, original_operator_path: Optional[str] = None, + *, + button_kwargs: Union[dict[str, Any], None] = None, **kwargs: Any, ) -> bpy.types.UILayout: """ + Draw a row with enum prop and enum search operator. + + Search operator appears only in case if there's more than 10 item in enum. + + :arg button_kwargs: kwargs to pass to ``UILayout.operator()``. + :arg kwargs: kwargs to pass to ``UILayout.prop()``. :return: Added row. """ # kwargs are layout.prop arguments (text, icon, etc.) @@ -372,7 +380,7 @@ def prop_with_search( if len(get_enum_items(data, prop_name, original_operator_path=original_operator_path)) > 10: # Magick courtesy of https://blender.stackexchange.com/a/203443/86891 row.context_pointer_set(name="data", data=data) - op = row.operator("bim.enum_property_search", text="", icon="VIEWZOOM") + op = row.operator("bim.enum_property_search", text="", icon="VIEWZOOM", **(button_kwargs or {})) op.prop_name = prop_name op.should_click_ok = should_click_ok op.original_operator_path = original_operator_path or "" diff --git a/src/bonsai/bonsai/bim/module/model/workspace.py b/src/bonsai/bonsai/bim/module/model/workspace.py index 618d0db95b..cd1162c04c 100644 --- a/src/bonsai/bonsai/bim/module/model/workspace.py +++ b/src/bonsai/bonsai/bim/module/model/workspace.py @@ -654,7 +654,14 @@ class CreateObjectUI: row = box.row(align=True) thumbnail: int = AuthoringData.type_thumbnails.get(relating_type_data["id"], 0) row.template_icon(icon_value=thumbnail) - row.operator("bim.launch_type_manager", text=relating_type_data["name"], emboss=False) + prop_with_search( + row, + cls.props, + "relating_type_id", + text="", + button_kwargs={"emboss": False}, + emboss=True, + ) row.operator( "bim.launch_type_manager", icon=tool.Blender.TYPE_MANAGER_ICON,