Refactor: Use asset representation for asset browser context query

There's no need to use the asset handle type here anymore, it can just
use the asset representation type that is supposed to replace it.

Part of #102877 and #108806.
This commit is contained in:
Julian Eisel
2023-09-19 15:56:11 +02:00
parent f73adee453
commit ca58f97cda
2 changed files with 9 additions and 12 deletions

View File

@@ -20,7 +20,7 @@ const char *file_context_dir[] = {
"active_file", "active_file",
"selected_files", "selected_files",
"asset_library_ref", "asset_library_ref",
"selected_asset_files", "selected_assets",
"id", "id",
"selected_ids", "selected_ids",
nullptr, nullptr,
@@ -79,17 +79,14 @@ int /*eContextResult*/ file_context(const bContext *C,
result, &screen->id, &RNA_AssetLibraryReference, &asset_params->asset_library_ref); result, &screen->id, &RNA_AssetLibraryReference, &asset_params->asset_library_ref);
return CTX_RESULT_OK; return CTX_RESULT_OK;
} }
/** TODO temporary AssetHandle design: For now this returns the file entry. Would be better if it if (CTX_data_equals(member, "selected_assets")) {
* was `"selected_assets"` and returned the assets (e.g. as `AssetHandle`) directly. See comment
* for #AssetHandle for more info. */
if (CTX_data_equals(member, "selected_asset_files")) {
const int num_files_filtered = filelist_files_ensure(sfile->files); const int num_files_filtered = filelist_files_ensure(sfile->files);
for (int file_index = 0; file_index < num_files_filtered; file_index++) { for (int file_index = 0; file_index < num_files_filtered; file_index++) {
if (filelist_entry_is_selected(sfile->files, file_index)) { if (filelist_entry_is_selected(sfile->files, file_index)) {
FileDirEntry *entry = filelist_file(sfile->files, file_index); FileDirEntry *entry = filelist_file(sfile->files, file_index);
if (entry->asset) { if (entry->asset) {
CTX_data_list_add(result, &screen->id, &RNA_FileSelectEntry, entry); CTX_data_list_add(result, nullptr, &RNA_AssetRepresentation, entry->asset);
} }
} }
} }

View File

@@ -211,13 +211,13 @@ wmDrag *WM_drag_data_create(
/* The asset-list case is special: We get multiple assets from context and attach them to the /* The asset-list case is special: We get multiple assets from context and attach them to the
* drag item. */ * drag item. */
case WM_DRAG_ASSET_LIST: { case WM_DRAG_ASSET_LIST: {
ListBase asset_file_links = CTX_data_collection_get(C, "selected_asset_files"); ListBase asset_links = CTX_data_collection_get(C, "selected_assets");
LISTBASE_FOREACH (const CollectionPointerLink *, link, &asset_file_links) { LISTBASE_FOREACH (const CollectionPointerLink *, link, &asset_links) {
const FileDirEntry *asset_file = static_cast<const FileDirEntry *>(link->ptr.data); const AssetRepresentationHandle *asset = static_cast<const AssetRepresentationHandle *>(
const AssetHandle asset_handle = {asset_file}; link->ptr.data);
WM_drag_add_asset_list_item(drag, ED_asset_handle_get_representation(&asset_handle)); WM_drag_add_asset_list_item(drag, asset);
} }
BLI_freelistN(&asset_file_links); BLI_freelistN(&asset_links);
break; break;
} }
default: default: