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:
Diffstat (limited to 'source/blender/editors/space_file/filelist.c')
-rw-r--r--source/blender/editors/space_file/filelist.c12
1 files changed, 10 insertions, 2 deletions
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);