From bff467d03a0a0e61f4703e495359301da84c7952 Mon Sep 17 00:00:00 2001 From: Vic <10308169+VictoriousRaptor@users.noreply.github.com> Date: Tue, 18 Apr 2023 20:12:22 +0800 Subject: [PATCH] Preserve program shortcut in start menu --- Plugins/Flow.Launcher.Plugin.Program/Programs/Win32.cs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Plugins/Flow.Launcher.Plugin.Program/Programs/Win32.cs b/Plugins/Flow.Launcher.Plugin.Program/Programs/Win32.cs index 4afedb9e4..2f1646b0e 100644 --- a/Plugins/Flow.Launcher.Plugin.Program/Programs/Win32.cs +++ b/Plugins/Flow.Launcher.Plugin.Program/Programs/Win32.cs @@ -603,13 +603,20 @@ namespace Flow.Launcher.Plugin.Program.Programs private static IEnumerable ProgramsHasher(IEnumerable programs) { + var startMenuPaths = GetStartMenuPaths(); return programs.GroupBy(p => p.ExecutablePath.ToLowerInvariant()) .AsParallel() .SelectMany(g => { + // is shortcut and in start menu + var startMenu = g.Where(g => g.LnkResolvedPath != null && startMenuPaths.Any(x => FilesFolders.PathContains(x, g.FullPath))).ToList(); + if (startMenu.Any()) + return startMenu.Take(1); + + // distinct by description var temp = g.Where(g => !string.IsNullOrEmpty(g.Description)).ToList(); if (temp.Any()) - return DistinctBy(temp, x => x.Description); + return temp.Take(1); return g.Take(1); }); }