From 1780c50f85eedb507ef22d80ba94f7ed4fef0212 Mon Sep 17 00:00:00 2001 From: Ansgar Becker Date: Mon, 27 Oct 2025 13:54:41 +0100 Subject: [PATCH] fix: sort empty session folders like non-empty ones Refs #1828 --- source/connections.pas | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/source/connections.pas b/source/connections.pas index be6bc24d..0c09d29e 100644 --- a/source/connections.pas +++ b/source/connections.pas @@ -354,7 +354,11 @@ begin Params := TConnectionParameters.Create(RegKey+SessionNames[i]); SessNode := ListSessions.AddChild(ParentNode, PConnectionParameters(Params)); if Params.IsFolder then begin + SessNode.Dummy := 1; // We use this Byte value later in CompareNodes RefreshSessions(SessNode); + end + else begin + SessNode.Dummy := 0; end; end; if not Assigned(ParentNode) then begin @@ -873,9 +877,9 @@ begin if Assigned(Node1) and Assigned(Node2) then begin // This marker when set to -1 ensures folders are at the top DirectionMarker := IfThen(VT.Header.SortDirection = sdAscending, 1, -1); - if menuFoldersAtTop.Checked and VT.HasChildren[Node1] and (not VT.HasChildren[Node2]) then + if menuFoldersAtTop.Checked and (Node1.Dummy=1) and (Node2.Dummy<>1) then Result := -1 * DirectionMarker - else if menuFoldersAtTop.Checked and (not VT.HasChildren[Node1]) and VT.HasChildren[Node2] then + else if menuFoldersAtTop.Checked and (Node1.Dummy<>1) and (Node2.Dummy=1) then Result := 1 * DirectionMarker else Result := CompareAnyNode(VT.Text[Node1, Column], VT.Text[Node2, Column]);