Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSybren A. Stüvel <sybren@blender.org>2021-10-19 19:07:22 +0300
committerSybren A. Stüvel <sybren@blender.org>2021-10-19 19:07:22 +0300
commit823996b0342b7352fc5b2e24eceb6204612438cd (patch)
tree08dca1ce5386c2b06ab01fad1f2f1ac5c236047a /source/blender/blenkernel/intern/asset_library_service.cc
parentb6c3b41d413813d8059476f2c0357b7a4e51ad22 (diff)
Asset Browser: Improved workflow for asset catalog saving
No longer save asset catalogs on blendfile save. Instead: - extend the confirmation prompt for unsaved changes to show unsaved catalogs. - In the confirmation prompt, make catalog saving explicit & optional, just like we do it for external images. {F10881736} - In the Asset Browser catalog tree, show an operator icon to save the catalogs to disk. It's grayed out if there are no changes to save, or if the .blend wasn't saved yet (required to know where to save the catalog definitions to). {F10881743} Much of the work was done by @Severin and reviewed by me, then we swapped roles. Reviewed By: Severin Differential Revision: https://developer.blender.org/D12796
Diffstat (limited to 'source/blender/blenkernel/intern/asset_library_service.cc')
-rw-r--r--source/blender/blenkernel/intern/asset_library_service.cc19
1 files changed, 17 insertions, 2 deletions
diff --git a/source/blender/blenkernel/intern/asset_library_service.cc b/source/blender/blenkernel/intern/asset_library_service.cc
index c5447de645b..aeded0bc128 100644
--- a/source/blender/blenkernel/intern/asset_library_service.cc
+++ b/source/blender/blenkernel/intern/asset_library_service.cc
@@ -83,7 +83,7 @@ AssetLibrary *AssetLibraryService::get_asset_library_on_disk(StringRefNull top_l
AssetLibraryPtr lib_uptr = std::make_unique<AssetLibrary>();
AssetLibrary *lib = lib_uptr.get();
- lib->on_save_handler_register();
+ lib->on_blend_save_handler_register();
lib->load(top_dir_trailing_slash);
on_disk_libraries_.add_new(top_dir_trailing_slash, std::move(lib_uptr));
@@ -99,7 +99,7 @@ AssetLibrary *AssetLibraryService::get_asset_library_current_file()
else {
CLOG_INFO(&LOG, 2, "get current file lib (loaded)");
current_file_library_ = std::make_unique<AssetLibrary>();
- current_file_library_->on_save_handler_register();
+ current_file_library_->on_blend_save_handler_register();
}
AssetLibrary *lib = current_file_library_.get();
@@ -148,4 +148,19 @@ void AssetLibraryService::app_handler_unregister()
on_load_callback_store_.arg = nullptr;
}
+bool AssetLibraryService::has_any_unsaved_catalogs() const
+{
+ if (current_file_library_ && current_file_library_->catalog_service->has_unsaved_changes()) {
+ return true;
+ }
+
+ for (const auto &asset_lib_uptr : on_disk_libraries_.values()) {
+ if (asset_lib_uptr->catalog_service->has_unsaved_changes()) {
+ return true;
+ }
+ }
+
+ return false;
+}
+
} // namespace blender::bke