diff options
-rw-r--r-- | source/blender/editors/asset/ED_asset_list.hh | 2 | ||||
-rw-r--r-- | source/blender/editors/asset/intern/asset_list.cc | 8 | ||||
-rw-r--r-- | source/blender/editors/interface/interface_template_asset_view.cc | 5 |
3 files changed, 11 insertions, 4 deletions
diff --git a/source/blender/editors/asset/ED_asset_list.hh b/source/blender/editors/asset/ED_asset_list.hh index 7f41fba3457..fee34d929c2 100644 --- a/source/blender/editors/asset/ED_asset_list.hh +++ b/source/blender/editors/asset/ED_asset_list.hh @@ -34,5 +34,5 @@ std::string ED_assetlist_asset_filepath_get(const bContext *C, const AssetHandle &asset_handle); /* Can return false to stop iterating. */ -using AssetListIterFn = blender::FunctionRef<bool(FileDirEntry &)>; +using AssetListIterFn = blender::FunctionRef<bool(AssetHandle)>; void ED_assetlist_iterate(const AssetLibraryReference *library_reference, AssetListIterFn fn); diff --git a/source/blender/editors/asset/intern/asset_list.cc b/source/blender/editors/asset/intern/asset_list.cc index 445269d563e..d94a2bbf438 100644 --- a/source/blender/editors/asset/intern/asset_list.cc +++ b/source/blender/editors/asset/intern/asset_list.cc @@ -215,7 +215,13 @@ void AssetList::iterate(AssetListIterFn fn) const for (int i = 0; i < numfiles; i++) { FileDirEntry *file = filelist_file(files, i); - if (!fn(*file)) { + if ((file->typeflag & FILE_TYPE_ASSET) == 0) { + continue; + } + + AssetHandle asset_handle = {file}; + if (!fn(asset_handle)) { + /* If the callback returns false, we stop iterating. */ break; } } diff --git a/source/blender/editors/interface/interface_template_asset_view.cc b/source/blender/editors/interface/interface_template_asset_view.cc index a691fff4963..fe2c660f2d0 100644 --- a/source/blender/editors/interface/interface_template_asset_view.cc +++ b/source/blender/editors/interface/interface_template_asset_view.cc @@ -170,11 +170,12 @@ static void asset_view_template_refresh_asset_collection( RNA_property_collection_clear(&assets_dataptr, assets_prop); - ED_assetlist_iterate(&asset_library, [&](FileDirEntry &file) { + ED_assetlist_iterate(&asset_library, [&](AssetHandle asset) { PointerRNA itemptr, fileptr; RNA_property_collection_add(&assets_dataptr, assets_prop, &itemptr); - RNA_pointer_create(nullptr, &RNA_FileSelectEntry, &file, &fileptr); + RNA_pointer_create( + nullptr, &RNA_FileSelectEntry, const_cast<FileDirEntry *>(asset.file_data), &fileptr); RNA_pointer_set(&itemptr, "file_data", fileptr); /* Copy name from file to asset-handle name ID-property. */ |