[Bf-blender-cvs] [ed2c4825d3e] master: Fix Asset Browser showing oudated list for changes done while browser is hidden

Julian Eisel noreply at git.blender.org
Thu Mar 11 17:44:29 CET 2021


Commit: ed2c4825d3e23441444e5d371278588c946e7551
Author: Julian Eisel
Date:   Thu Mar 11 15:42:22 2021 +0100
Branches: master
https://developer.blender.org/rBed2c4825d3e23441444e5d371278588c946e7551

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.

===================================================================

M	source/blender/editors/space_file/space_file.c

===================================================================

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 */



More information about the Bf-blender-cvs mailing list