diff --git a/Flow.Launcher.Plugin/SharedCommands/FilesFolders.cs b/Flow.Launcher.Plugin/SharedCommands/FilesFolders.cs
index 97d8c25d3..c59f05598 100644
--- a/Flow.Launcher.Plugin/SharedCommands/FilesFolders.cs
+++ b/Flow.Launcher.Plugin/SharedCommands/FilesFolders.cs
@@ -1,7 +1,6 @@
using System;
using System.Diagnostics;
using System.IO;
-using System.Windows;
namespace Flow.Launcher.Plugin.SharedCommands
{
@@ -243,16 +242,17 @@ namespace Flow.Launcher.Plugin.SharedCommands
}
///
- /// Returns if is a sub path of .
+ /// Returns if contains .
/// From https://stackoverflow.com/a/66877016
///
- ///
- ///
+ /// Parent path
+ /// Sub path
+ /// If , when and are equal, returns
///
- public static bool IsSubPathOf(string subPath, string basePath)
+ public static bool PathContains(string parentPath, string subPath, bool allowEqual = false)
{
- var rel = Path.GetRelativePath(basePath, subPath);
- return rel != "."
+ var rel = Path.GetRelativePath(parentPath, subPath);
+ return (rel != "." || allowEqual)
&& rel != ".."
&& !rel.StartsWith("../")
&& !rel.StartsWith(@"..\")
diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Search/SearchManager.cs b/Plugins/Flow.Launcher.Plugin.Explorer/Search/SearchManager.cs
index 324832990..3a1dc3726 100644
--- a/Plugins/Flow.Launcher.Plugin.Explorer/Search/SearchManager.cs
+++ b/Plugins/Flow.Launcher.Plugin.Explorer/Search/SearchManager.cs
@@ -121,7 +121,7 @@ namespace Flow.Launcher.Plugin.Explorer.Search
}
results.RemoveWhere(r => Settings.IndexSearchExcludedSubdirectoryPaths.Any(
- excludedPath => FilesFolders.IsSubPathOf(r.SubTitle, excludedPath.Path)));
+ excludedPath => FilesFolders.PathContains(excludedPath.Path, r.SubTitle)));
return results.ToList();
}
diff --git a/Plugins/Flow.Launcher.Plugin.Program/Programs/Win32.cs b/Plugins/Flow.Launcher.Plugin.Program/Programs/Win32.cs
index 28eb9832f..e0079967b 100644
--- a/Plugins/Flow.Launcher.Plugin.Program/Programs/Win32.cs
+++ b/Plugins/Flow.Launcher.Plugin.Program/Programs/Win32.cs
@@ -470,8 +470,8 @@ namespace Flow.Launcher.Plugin.Program.Programs
}
var paths = pathEnv.Split(";", StringSplitOptions.RemoveEmptyEntries).DistinctBy(p => p.ToLowerInvariant());
-
- var toFilter = paths.Where(x => commonParents.All(parent => !FilesFolders.IsSubPathOf(x, parent)))
+
+ var toFilter = paths.Where(x => commonParents.All(parent => !FilesFolders.PathContains(parent, x)))
.AsParallel()
.SelectMany(p => EnumerateProgramsInDir(p, suffixes, recursive: false));
@@ -774,8 +774,7 @@ namespace Flow.Launcher.Plugin.Program.Programs
HashSet parents = group.ToHashSet();
foreach (var source in group)
{
- if (parents.Any(p => FilesFolders.IsSubPathOf(source.Location, p.Location) &&
- source != p))
+ if (parents.Any(p => FilesFolders.PathContains(p.Location, source.Location)))
{
parents.Remove(source);
}