From 150f9613dc452f0ee5f26c4afff4db7a6e313dc9 Mon Sep 17 00:00:00 2001 From: Matt Parker <61717342+MattParkerDev@users.noreply.github.com> Date: Fri, 31 Oct 2025 18:07:58 +1000 Subject: [PATCH] sort Properties and wwwroot above other folders --- .../SharpIdeModelComparers.cs | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/SharpIDE.Application/Features/SolutionDiscovery/SharpIdeModelComparers.cs b/src/SharpIDE.Application/Features/SolutionDiscovery/SharpIdeModelComparers.cs index 9e3f476..81fe855 100644 --- a/src/SharpIDE.Application/Features/SolutionDiscovery/SharpIdeModelComparers.cs +++ b/src/SharpIDE.Application/Features/SolutionDiscovery/SharpIdeModelComparers.cs @@ -15,6 +15,7 @@ public class SharpIdeFileComparer : IComparer } } +// AI public class SharpIdeFolderComparer : IComparer { public static readonly SharpIdeFolderComparer Instance = new SharpIdeFolderComparer(); @@ -24,8 +25,24 @@ public class SharpIdeFolderComparer : IComparer if (x is null) return -1; if (y is null) return 1; - int result = string.Compare(x.Path, y.Path, StringComparison.OrdinalIgnoreCase); + // Special folders priority: Properties > wwwroot > others + int xPriority = GetFolderPriority(x.Name); + int yPriority = GetFolderPriority(y.Name); - return result; + int priorityComparison = xPriority.CompareTo(yPriority); + if (priorityComparison != 0) return priorityComparison; + + // Default alphabetical compare for same priority + return string.Compare(x.Name, y.Name, StringComparison.OrdinalIgnoreCase); + } + + private static int GetFolderPriority(string? name) + { + if (string.Equals(name, "Properties", StringComparison.OrdinalIgnoreCase)) + return 0; + if (string.Equals(name, "wwwroot", StringComparison.OrdinalIgnoreCase)) + return 1; + + return 2; // all others } }