[Bf-blender-cvs] [cc636db8f2f] master: Fix T91823: Regression not showing idblocks when recursion is set to `Blend file`

Julian Eisel noreply at git.blender.org
Mon Oct 4 15:27:42 CEST 2021


Commit: cc636db8f2ff2e14b912e8c3998b5042f59c5a42
Author: Julian Eisel
Date:   Mon Oct 4 15:21:25 2021 +0200
Branches: master
https://developer.blender.org/rBcc636db8f2ff2e14b912e8c3998b5042f59c5a42

Fix T91823: Regression not showing idblocks when recursion is set to `Blend file`

Introduced by fc7beac8d6f4. During code review it wasn't clear why this
branch was needed, so we removed it. Now it is clear why it is needed
so we added it back and added a comment why the branch is needed.

Patch provided by @Severin.

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

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

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

diff --git a/source/blender/editors/space_file/filelist.c b/source/blender/editors/space_file/filelist.c
index b58a04d6d4f..a927b62fd6e 100644
--- a/source/blender/editors/space_file/filelist.c
+++ b/source/blender/editors/space_file/filelist.c
@@ -3295,6 +3295,7 @@ typedef struct FileListReadJob {
 } FileListReadJob;
 
 static bool filelist_readjob_should_recurse_into_entry(const int max_recursion,
+                                                       const bool is_lib,
                                                        const int current_recursion_level,
                                                        FileListInternEntry *entry)
 {
@@ -3302,10 +3303,16 @@ static bool filelist_readjob_should_recurse_into_entry(const int max_recursion,
     /* Recursive loading is disabled. */
     return false;
   }
-  if (current_recursion_level >= max_recursion) {
+  if (!is_lib && current_recursion_level > max_recursion) {
     /* No more levels of recursion left. */
     return false;
   }
+  /* Show entries when recursion is set to `Blend file` even when `current_recursion_level` exceeds
+   * `max_recursion`. */
+  if (!is_lib && (current_recursion_level >= max_recursion) &&
+      ((entry->typeflag & (FILE_TYPE_BLENDER | FILE_TYPE_BLENDER_BACKUP)) == 0)) {
+    return false;
+  }
   if (entry->typeflag & FILE_TYPE_BLENDERLIB) {
     /* Libraries are already loaded recursively when recursive loaded is used. No need to add
      * them another time. This loading is done with the `LIST_LIB_RECURSIVE` option. */
@@ -3421,7 +3428,8 @@ static void filelist_readjob_do(const bool do_lib,
       entry->name = fileentry_uiname(root, entry->relpath, entry->typeflag, dir);
       entry->free_name = true;
 
-      if (filelist_readjob_should_recurse_into_entry(max_recursion, recursion_level, entry)) {
+      if (filelist_readjob_should_recurse_into_entry(
+              max_recursion, is_lib, recursion_level, entry)) {
         /* We have a directory we want to list, add it to todo list! */
         BLI_join_dirfile(dir, sizeof(dir), root, entry->relpath);
         BLI_path_normalize_dir(job_params->main_name, dir);



More information about the Bf-blender-cvs mailing list