From 05b125f399ced4cf8f60c069bcf1acdfe3447f43 Mon Sep 17 00:00:00 2001 From: Julian Eisel Date: Thu, 2 May 2024 12:56:53 -0400 Subject: [PATCH] Asset Shelf: Add default preview size option Allow changing the size of previews in a new asset shelf when registering a new asset shelf type. Pull Request: https://projects.blender.org/blender/blender/pulls/121358 --- scripts/startup/bl_ui/space_view3d.py | 1 + source/blender/blenkernel/BKE_screen.hh | 2 ++ source/blender/editors/asset/intern/asset_shelf.cc | 3 ++- source/blender/makesrna/intern/rna_ui.cc | 7 +++++++ 4 files changed, 12 insertions(+), 1 deletion(-) diff --git a/scripts/startup/bl_ui/space_view3d.py b/scripts/startup/bl_ui/space_view3d.py index e599c0c45f1..e9af9b13e19 100644 --- a/scripts/startup/bl_ui/space_view3d.py +++ b/scripts/startup/bl_ui/space_view3d.py @@ -9088,6 +9088,7 @@ class VIEW3D_AST_sculpt_brushes(bpy.types.AssetShelf): # enabled. bl_space_type = 'VIEW_3D' + bl_default_preview_size = 48 @classmethod def poll(cls, context): diff --git a/source/blender/blenkernel/BKE_screen.hh b/source/blender/blenkernel/BKE_screen.hh index a178947a6c9..90bae65272f 100644 --- a/source/blender/blenkernel/BKE_screen.hh +++ b/source/blender/blenkernel/BKE_screen.hh @@ -535,6 +535,8 @@ struct AssetShelfType { AssetShelfTypeFlag flag; + short default_preview_size; + /** Determine if asset shelves of this type should be available in current context or not. */ bool (*poll)(const bContext *C, const AssetShelfType *shelf_type); diff --git a/source/blender/editors/asset/intern/asset_shelf.cc b/source/blender/editors/asset/intern/asset_shelf.cc index 33f48a347ae..6994e0d329f 100644 --- a/source/blender/editors/asset/intern/asset_shelf.cc +++ b/source/blender/editors/asset/intern/asset_shelf.cc @@ -88,7 +88,8 @@ AssetShelf *create_shelf_from_type(AssetShelfType &type) { AssetShelf *shelf = MEM_new(__func__); *shelf = dna::shallow_zero_initialize(); - shelf->settings.preview_size = DEFAULT_TILE_SIZE; + shelf->settings.preview_size = type.default_preview_size ? type.default_preview_size : + DEFAULT_TILE_SIZE; shelf->settings.asset_library_reference = asset_system::all_library_reference(); shelf->type = &type; shelf->preferred_row_count = 1; diff --git a/source/blender/makesrna/intern/rna_ui.cc b/source/blender/makesrna/intern/rna_ui.cc index 0f35e8cb3ac..b43ba106eff 100644 --- a/source/blender/makesrna/intern/rna_ui.cc +++ b/source/blender/makesrna/intern/rna_ui.cc @@ -2303,6 +2303,13 @@ static void rna_def_asset_shelf(BlenderRNA *brna) RNA_def_property_flag(prop, PROP_REGISTER_OPTIONAL | PROP_ENUM_FLAG); RNA_def_property_ui_text(prop, "Options", "Options for this asset shelf type"); + prop = RNA_def_property(srna, "bl_default_preview_size", PROP_INT, PROP_UNSIGNED); + RNA_def_property_int_sdna(prop, nullptr, "type->default_preview_size"); + RNA_def_property_range(prop, 32, 256); + RNA_def_property_flag(prop, PROP_REGISTER_OPTIONAL); + RNA_def_property_ui_text( + prop, "Default Preview Size", "Default size of the asset preview thumbnails in pixels"); + PropertyRNA *parm; FunctionRNA *func;