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:
authorJulian Eisel <julian@blender.org>2021-03-11 17:42:22 +0300
committerJulian Eisel <julian@blender.org>2021-03-11 19:43:33 +0300
commited2c4825d3e23441444e5d371278588c946e7551 (patch)
treea0b510c292e0ada6c4684d8a9c6f4317194858bd /source/blender/editors/space_file
parenta1b01edf459e8c656174fab9e63e4d9b64a29388 (diff)
Fix Asset Browser showing oudated list for changes done while browser is hidden
Steps to reproduce were: * Open an Asset Browser * "Mark Asset" on some data-block * Change the Asset Browser into a different editor (not File Browser!) * "Clear Asset" on the data-block again, or mark another asset * Change back to the Asset Browser, it will show an outdated list Now the file-browser reloads local file data after spaces were changed. Note that the current notifier code doesn't limit the space-change notifiers to the affected spaces, so changing any visible space will trigger this. That's an issue to be fixed separately.
Diffstat (limited to 'source/blender/editors/space_file')
-rw-r--r--source/blender/editors/space_file/space_file.c32
1 files changed, 20 insertions, 12 deletions
diff --git a/source/blender/editors/space_file/space_file.c b/source/blender/editors/space_file/space_file.c
index 039ab3d6907..993b1d9b69c 100644
--- a/source/blender/editors/space_file/space_file.c
+++ b/source/blender/editors/space_file/space_file.c
@@ -420,6 +420,15 @@ static void file_on_reload_callback_call(SpaceFile *sfile)
sfile->runtime->on_reload_custom_data = NULL;
}
+static void file_reset_filelist_showing_main_data(ScrArea *area, SpaceFile *sfile)
+{
+ if (sfile->files && filelist_needs_reset_on_main_changes(sfile->files)) {
+ /* Full refresh of the file list if local asset data was changed. Refreshing this view
+ * is cheap and users expect this to be updated immediately. */
+ file_tag_reset_list(area, sfile);
+ }
+}
+
static void file_listener(const wmSpaceTypeListenerParams *params)
{
ScrArea *area = params->area;
@@ -446,6 +455,11 @@ static void file_listener(const wmSpaceTypeListenerParams *params)
ED_area_tag_refresh(area);
}
break;
+ case ND_SPACE_CHANGED:
+ /* If the space was just turned into a file/asset browser, the file-list may need to be
+ * updated to reflect latest changes in main data. */
+ file_reset_filelist_showing_main_data(area, sfile);
+ break;
}
switch (wmn->action) {
case NA_JOB_FINISHED:
@@ -462,11 +476,7 @@ static void file_listener(const wmSpaceTypeListenerParams *params)
case NA_ADDED:
case NA_REMOVED:
case NA_EDITED:
- if (sfile->files && filelist_needs_reset_on_main_changes(sfile->files)) {
- /* Full refresh of the file list if local asset data was changed. Refreshing this view
- * is cheap and users expect this to be updated immediately. */
- file_tag_reset_list(area, sfile);
- }
+ file_reset_filelist_showing_main_data(area, sfile);
break;
}
break;
@@ -890,13 +900,11 @@ static void file_id_remap(ScrArea *area, SpaceLink *sl, ID *UNUSED(old_id), ID *
{
SpaceFile *sfile = (SpaceFile *)sl;
- /* If the file shows main data (IDs), tag it for reset. */
- if (sfile->files && filelist_needs_reset_on_main_changes(sfile->files)) {
- /* Full refresh of the file list if main data was changed, don't even attempt remap pointers.
- * We could give file list types a id-remap callback, but it's probably not worth it.
- * Refreshing local file lists is relatively cheap. */
- file_tag_reset_list(area, sfile);
- }
+ /* If the file shows main data (IDs), tag it for reset.
+ * Full reset of the file list if main data was changed, don't even attempt remap pointers.
+ * We could give file list types a id-remap callback, but it's probably not worth it.
+ * Refreshing local file lists is relatively cheap. */
+ file_reset_filelist_showing_main_data(area, sfile);
}
/* only called once, from space/spacetypes.c */