@@ -41,6 +41,23 @@ public class FolderSearch
41
41
42
42
public EventHandler SearchTick ;
43
43
44
+ private bool IsAQSQuery => Query is not null && ( Query . StartsWith ( "$" ) || Query . Contains ( ":" ) ) ;
45
+
46
+ private string QueryWithWildcard
47
+ {
48
+ get
49
+ {
50
+ if ( ! string . IsNullOrEmpty ( Query ) && Query . Contains ( '.' ) ) // ".docx" -> "*.docx"
51
+ {
52
+ var split = Query . Split ( '.' ) ;
53
+ var leading = string . Join ( '.' , split . SkipLast ( 1 ) ) ;
54
+ var query = $ "{ leading } *.{ split . Last ( ) } ";
55
+ return $ "{ query } *";
56
+ }
57
+ return $ "{ Query } *";
58
+ }
59
+ }
60
+
44
61
public string AQSQuery
45
62
{
46
63
get
@@ -56,7 +73,7 @@ public string AQSQuery
56
73
}
57
74
else
58
75
{
59
- return $ "System.FileName:\" { Query } \" ";
76
+ return $ "System.FileName:\" { QueryWithWildcard } \" ";
60
77
}
61
78
}
62
79
}
@@ -245,20 +262,12 @@ private async Task AddItemsAsync(string folder, IList<ListedItem> results, Cance
245
262
if ( workingFolder )
246
263
{
247
264
await SearchAsync ( workingFolder , results , token ) ;
248
- //foreach (var item in await SearchAsync(workingFolder))
249
- //{
250
- // results.Add(item);
251
- //}
252
- hiddenOnlyFromWin32 = true ;
265
+ hiddenOnlyFromWin32 = ( results . Count != 0 ) ;
253
266
}
254
267
255
- if ( ! hiddenOnlyFromWin32 || UserSettingsService . FilesAndFoldersSettingsService . AreHiddenItemsVisible )
268
+ if ( ! IsAQSQuery && ( ! hiddenOnlyFromWin32 || UserSettingsService . FilesAndFoldersSettingsService . AreHiddenItemsVisible ) )
256
269
{
257
270
await SearchWithWin32Async ( folder , hiddenOnlyFromWin32 , UsedMaxItemCount - ( uint ) results . Count , results , token ) ;
258
- //foreach (var item in)
259
- //{
260
- // results.Add(item);
261
- //}
262
271
}
263
272
}
264
273
}
@@ -269,7 +278,7 @@ private async Task SearchWithWin32Async(string folder, bool hiddenOnly, uint max
269
278
( IntPtr hFile , WIN32_FIND_DATA findData ) = await Task . Run ( ( ) =>
270
279
{
271
280
int additionalFlags = FIND_FIRST_EX_LARGE_FETCH ;
272
- IntPtr hFileTsk = FindFirstFileExFromApp ( $ "{ folder } \\ * { Query } *.* ", FINDEX_INFO_LEVELS . FindExInfoBasic ,
281
+ IntPtr hFileTsk = FindFirstFileExFromApp ( $ "{ folder } \\ { QueryWithWildcard } ", FINDEX_INFO_LEVELS . FindExInfoBasic ,
273
282
out WIN32_FIND_DATA findDataTsk , FINDEX_SEARCH_OPS . FindExSearchNameMatch , IntPtr . Zero , additionalFlags ) ;
274
283
return ( hFileTsk , findDataTsk ) ;
275
284
} ) . WithTimeoutAsync ( TimeSpan . FromSeconds ( 5 ) ) ;
0 commit comments