Merge remote-tracking branch 'origin/blender-v3.0-release'

This commit is contained in:
Sybren A. Stüvel 2021-11-16 13:10:35 +01:00
commit 12a986c9b5
5 changed files with 32 additions and 6 deletions

@ -148,6 +148,8 @@ class ASSET_OT_open_containing_blend_file(Operator):
bpy.ops.file.refresh()
if bpy.ops.asset.list_refresh.poll():
bpy.ops.asset.list_refresh()
if bpy.ops.file.asset_library_refresh.poll():
bpy.ops.file.asset_library_refresh()
self.cancel(context)
return {'FINISHED'}

@ -33,6 +33,8 @@
#include "RNA_access.h"
#include "GHOST_Path-api.h"
namespace blender::bke::tests {
TEST(view_layer, aov_unique_names)
@ -94,6 +96,7 @@ TEST(view_layer, aov_unique_names)
IMB_exit();
BKE_appdir_exit();
CLG_exit();
GHOST_DisposeSystemPaths();
}
static void test_render_pass_conflict(Scene *scene,
@ -173,6 +176,7 @@ TEST(view_layer, aov_conflict)
IMB_exit();
BKE_appdir_exit();
CLG_exit();
GHOST_DisposeSystemPaths();
}
} // namespace blender::bke::tests

@ -34,6 +34,7 @@ set(INC
../sequencer
../windowmanager
../../../intern/clog
../../../intern/ghost
../../../intern/guardedalloc
# for writefile.c: dna_type_offsets.h

@ -48,6 +48,8 @@
#include "WM_api.h"
#include "wm.h"
#include "GHOST_Path-api.h"
#include "CLG_log.h"
void BlendfileLoadingBaseTest::SetUpTestCase()
@ -92,6 +94,7 @@ void BlendfileLoadingBaseTest::TearDownTestCase()
RNA_exit();
DEG_free_node_types();
GHOST_DisposeSystemPaths();
DNA_sdna_current_free();
BLI_threadapi_exit();

@ -122,6 +122,7 @@ class AssetCatalogDropController : public ui::AbstractTreeViewItemDropController
bool on_drop(const wmDrag &drag) override;
::AssetLibrary &get_asset_library() const;
AssetCatalog *get_drag_catalog(const wmDrag &drag) const;
static bool has_droppable_asset(const wmDrag &drag, const char **r_disabled_hint);
static bool drop_assets_into_catalog(const AssetCatalogTreeView &tree_view,
@ -343,7 +344,14 @@ AssetCatalogDropController::AssetCatalogDropController(AssetCatalogTreeView &tre
bool AssetCatalogDropController::can_drop(const wmDrag &drag, const char **r_disabled_hint) const
{
if (drag.type == WM_DRAG_ASSET_CATALOG) {
/* Always supported. */
const AssetCatalog *drag_catalog = get_drag_catalog(drag);
/* Note: Technically it's not an issue to allow this (the catalog will just receive a new
* path and the catalog system will generate missing parents from the path). But it does
* appear broken to users, so disabling entirely. */
if (catalog_item_.catalog_path().is_contained_in(drag_catalog->path)) {
*r_disabled_hint = "Catalog cannot be dropped into itself";
return false;
}
return true;
}
if (drag.type == WM_DRAG_ASSET_LIST) {
@ -363,11 +371,7 @@ std::string AssetCatalogDropController::drop_tooltip(const wmDrag &drag) const
std::string AssetCatalogDropController::drop_tooltip_asset_catalog(const wmDrag &drag) const
{
BLI_assert(drag.type == WM_DRAG_ASSET_CATALOG);
const ::AssetLibrary *asset_library = tree_view<AssetCatalogTreeView>().asset_library_;
bke::AssetCatalogService *catalog_service = BKE_asset_library_get_catalog_service(asset_library);
wmDragAssetCatalog *catalog_drag = WM_drag_get_asset_catalog_data(&drag);
AssetCatalog *src_catalog = catalog_service->find_catalog(catalog_drag->drag_catalog_id);
const AssetCatalog *src_catalog = get_drag_catalog(drag);
return std::string(TIP_("Move Catalog")) + " '" + src_catalog->path.name() + "' " +
TIP_("into") + " '" + catalog_item_.get_name() + "'";
@ -439,6 +443,18 @@ bool AssetCatalogDropController::drop_assets_into_catalog(const AssetCatalogTree
return true;
}
AssetCatalog *AssetCatalogDropController::get_drag_catalog(const wmDrag &drag) const
{
if (drag.type != WM_DRAG_ASSET_CATALOG) {
return nullptr;
}
const bke::AssetCatalogService *catalog_service = BKE_asset_library_get_catalog_service(
&get_asset_library());
const wmDragAssetCatalog *catalog_drag = WM_drag_get_asset_catalog_data(&drag);
return catalog_service->find_catalog(catalog_drag->drag_catalog_id);
}
bool AssetCatalogDropController::has_droppable_asset(const wmDrag &drag,
const char **r_disabled_hint)
{