Commit: 87518faa20566eb3d9b51cb37356e803908b7804
Author: Bastien Montagne
Date:   Thu Jan 1 15:30:02 2015 +0100
Branches: asset-experiments
https://developer.blender.org/rB87518faa20566eb3d9b51cb37356e803908b7804

Use new BLI fnmatch helpers to fix wrong update in some cases when editing
string search filter.

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

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 e765414..61af5e4 100644
--- a/source/blender/editors/space_file/filelist.c
+++ b/source/blender/editors/space_file/filelist.c
@@ -666,12 +666,12 @@ void filelist_filter(FileList *filelist)
 void filelist_setfilter_options(FileList *filelist, const bool hide_dot, const 
bool hide_parent, const unsigned int filter,
                                 const unsigned int filter_id, const char 
*filter_glob, const char *filter_search)
 {
-       if (filelist->filter_data.hide_dot != hide_dot ||
+       if ((filelist->filter_data.hide_dot != hide_dot) ||
            (filelist->filter_data.hide_parent != hide_parent) ||
-           filelist->filter_data.filter != filter ||
-           filelist->filter_data.filter_id != filter_id ||
+           (filelist->filter_data.filter != filter) ||
+           (filelist->filter_data.filter_id != filter_id) ||
            !STREQ(filelist->filter_data.filter_glob, filter_glob) ||
-           !(filter_search[0] == '*' ? 
STRPREFIX(filelist->filter_data.filter_search, filter_search) : 
STRPREFIX(filelist->filter_data.filter_search + 1, filter_search)))
+           
(BLI_fnmatch_strcmp_ignore_endswildcards(filelist->filter_data.filter_search, 
filter_search) != 0))
        {
                filelist->filter_data.hide_dot = hide_dot;
                filelist->filter_data.hide_parent = hide_parent;
@@ -679,28 +679,8 @@ void filelist_setfilter_options(FileList *filelist, const 
bool hide_dot, const b
                filelist->filter_data.filter = filter;
                filelist->filter_data.filter_id = filter_id;
                BLI_strncpy(filelist->filter_data.filter_glob, filter_glob, 
sizeof(filelist->filter_data.filter_glob));
-
-               {
-                       int idx = 0;
-                       const size_t max_search_len = 
sizeof(filelist->filter_data.filter_search) - 2;
-                       const size_t slen = 
(size_t)min_ii((int)strlen(filter_search), (int)max_search_len);
-
-                       if (slen == 0) {
-                               filelist->filter_data.filter_search[0] = '\0';
-                       }
-                       else {
-                               /* Implicitly add heading/trailing wildcards if 
needed. */
-                               if (filter_search[idx] != '*') {
-                                       
filelist->filter_data.filter_search[idx++] = '*';
-                               }
-                               
memcpy(&filelist->filter_data.filter_search[idx], filter_search, slen);
-                               idx += slen;
-                               if (filelist->filter_data.filter_search[idx - 
1] != '*') {
-                                       
filelist->filter_data.filter_search[idx++] = '*';
-                               }
-                               filelist->filter_data.filter_search[idx] = '\0';
-                       }
-               }
+               
BLI_fnmatch_strncpy_add_endswildcards(filelist->filter_data.filter_search, 
filter_search,
+                                                     
sizeof(filelist->filter_data.filter_search));
 
                /* And now, free filtered data so that we now we have to filter 
again. */
                filelist_filter_clear(filelist);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to