refactor: now all filesystem related trees/lists are sorted in case-insensitive mode

Signed-off-by: leo <longshuang@msn.cn>
This commit is contained in:
leo 2025-06-11 15:20:50 +08:00
parent c3c7d32167
commit 5494093261
No known key found for this signature in database
6 changed files with 22 additions and 19 deletions

View file

@ -270,12 +270,7 @@ namespace SourceGit.Views
foreach (var obj in objects)
_tree.Add(new ViewModels.RevisionFileTreeNode { Backend = obj });
_tree.Sort((l, r) =>
{
if (l.IsFolder == r.IsFolder)
return string.Compare(l.Name, r.Name, StringComparison.Ordinal);
return l.IsFolder ? -1 : 1;
});
SortNodes(_tree);
var topTree = new List<ViewModels.RevisionFileTreeNode>();
MakeRows(topTree, _tree, 0);
@ -341,13 +336,7 @@ namespace SourceGit.Views
foreach (var obj in objects)
node.Children.Add(new ViewModels.RevisionFileTreeNode() { Backend = obj });
node.Children.Sort((l, r) =>
{
if (l.IsFolder == r.IsFolder)
return Models.NumericSort.Compare(l.Name, r.Name);
return l.IsFolder ? -1 : 1;
});
SortNodes(node.Children);
return node.Children;
}
@ -365,6 +354,16 @@ namespace SourceGit.Views
}
}
private void SortNodes(List<ViewModels.RevisionFileTreeNode> nodes)
{
nodes.Sort((l, r) =>
{
if (l.IsFolder == r.IsFolder)
return Models.NumericSort.Compare(l.Name, r.Name);
return l.IsFolder ? -1 : 1;
});
}
private List<ViewModels.RevisionFileTreeNode> _tree = [];
private AvaloniaList<ViewModels.RevisionFileTreeNode> _rows = [];
private bool _disableSelectionChangingEvent = false;