[Bf-blender-cvs] [951dbff] asset-experiments: Moar fixes to sorting code and such.

Bastien Montagne noreply at git.blender.org
Sat Dec 6 15:58:11 CET 2014


Commit: 951dbff60e9f91d4a19f53b924d61ecfbec006f0
Author: Bastien Montagne
Date:   Sat Dec 6 15:40:00 2014 +0100
Branches: asset-experiments
https://developer.blender.org/rB951dbff60e9f91d4a19f53b924d61ecfbec006f0

Moar fixes to sorting code and such.

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

M	source/blender/blenloader/intern/readfile.c
M	source/blender/editors/space_file/filelist.c

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

diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index bec5276..91e3890 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -1172,7 +1172,7 @@ bool BLO_library_path_explode(const char *path, char *r_dir, char *r_group, char
 		prev_slash = slash;
 	}
 
-	if (r_dir[0] == '\0') {
+	if (!slash) {
 		return false;
 	}
 
diff --git a/source/blender/editors/space_file/filelist.c b/source/blender/editors/space_file/filelist.c
index f6fa6c4..dd68271 100644
--- a/source/blender/editors/space_file/filelist.c
+++ b/source/blender/editors/space_file/filelist.c
@@ -455,6 +455,11 @@ static bool is_filtered_file(struct direntry *file, const char *UNUSED(root), Fi
 		else if ((file->type & S_IFDIR) && ((filter->filter & FOLDERFILE) || FILENAME_IS_BREADCRUMBS(file->relname))) {
 			is_filtered = true;
 		}
+		if (is_filtered && (filter->filter_search[0] != '\0')) {
+			if (fnmatch(filter->filter_search, file->relname, FNM_CASEFOLD) != 0) {
+				is_filtered = false;
+			}
+		}
 	}
 	else {
 		is_filtered = true;
@@ -462,11 +467,6 @@ static bool is_filtered_file(struct direntry *file, const char *UNUSED(root), Fi
 	if (is_filtered) {
 		is_filtered = !is_hidden_file(file->relname, filter->hide_dot);
 	}
-	if (is_filtered && (filter->filter_search[0] != '\0')) {
-		if (fnmatch(filter->filter_search, file->relname, FNM_CASEFOLD) != 0) {
-			is_filtered = false;
-		}
-	}
 
 	return is_filtered;
 }
@@ -474,19 +474,23 @@ static bool is_filtered_file(struct direntry *file, const char *UNUSED(root), Fi
 static bool is_filtered_lib(struct direntry *file, const char *root, FileListFilter *filter)
 {
 	bool is_filtered = false;
-	char path[FILE_MAX_LIBEXTRA], dir[FILE_MAXDIR], group[BLO_GROUP_MAX];
+	char path[FILE_MAX_LIBEXTRA], dir[FILE_MAXDIR];
 
-	BLI_join_dirfile(path, sizeof(path), dir, file->relname);
+	BLI_join_dirfile(path, sizeof(path), root, file->relname);
 
-	if (BLO_library_path_explode(path, dir, group, NULL)) {
+	if (BLO_library_path_explode(path, dir, NULL, NULL)) {
 		is_filtered = !is_hidden_file(file->relname, filter->hide_dot);
-		if (is_filtered && (file->type & S_IFDIR) && !(filter->filter & FOLDERFILE) && !FILENAME_IS_BREADCRUMBS(file->relname)) {
-			is_filtered = false;
-		}
-		if (is_filtered && (filter->filter_search[0] != '\0')) {
-			if (fnmatch(filter->filter_search, file->relname, FNM_CASEFOLD) != 0) {
+		if (filter->filter) {
+			if (is_filtered && (file->type & S_IFDIR) && !(filter->filter & FOLDERFILE) &&
+			    !FILENAME_IS_BREADCRUMBS(file->relname))
+			{
 				is_filtered = false;
 			}
+			if (is_filtered && (filter->filter_search[0] != '\0')) {
+				if (fnmatch(filter->filter_search, file->relname, FNM_CASEFOLD) != 0) {
+					is_filtered = false;
+				}
+			}
 		}
 	}
 	else {
@@ -1035,7 +1039,7 @@ static void filelist_setfiletypes(struct FileList *filelist)
 		}
 #endif
 		file->flags = file_extension_type(filelist->dir, file->relname);
-		
+
 		if (filelist->filter_data.filter_glob[0] &&
 		    BLI_testextensie_glob(file->relname, filelist->filter_data.filter_glob))
 		{
@@ -1258,6 +1262,9 @@ static void filelist_read_library(struct FileList *filelist)
 		filelist->numfiles = final_filelist_size;
 	}
 
+	if (filelist->use_recursion) {
+		filelist_setfiletypes(filelist);
+	}
 	filelist_sort(filelist, FILE_SORT_ALPHA);
 	filelist_filter(filelist);
 }




More information about the Bf-blender-cvs mailing list