Fix for missing case of numeric sorting (#597)

Commit 76a7a2228f added "numeric sorting for all trees" (#597) but missed a case - for root items in RevisionFileTreeNode tree, which was still using ordinal string.Compare().
Fixed by refactoring the node sorting into a separate method, to make sure it's done the same way in both instances.
This commit is contained in:
Göran W 2025-06-05 13:39:12 +02:00
parent 7bba40d03f
commit 4fd921ea87

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,12 +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 +355,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;