瀏覽代碼

Bug 1736: Some numerical folders are duplicated in remote directory tree

https://winscp.net/tracker/1736
(cherry picked from commit 45183c8bb7fd6bf604c6aa35acf69b8067d99e2d)

Source commit: 50ab8c337585cc803e736d9f72a6d4e257a5dd26
Martin Prikryl 6 年之前
父節點
當前提交
817512d204
共有 2 個文件被更改,包括 8 次插入3 次删除
  1. 1 2
      source/components/UnixDriveView.cpp
  2. 7 1
      source/packages/filemng/CustomDriveView.pas

+ 1 - 2
source/components/UnixDriveView.cpp

@@ -758,8 +758,7 @@ TTreeNode * __fastcall TCustomUnixDriveView::FindNodeToPath(UnicodeString Path)
       {
         int Index = (StartIndex + EndIndex) / 2;
         UnicodeString NodeDir = Parent->Item[Index]->Text;
-        // lstrcmp is used by AlphaSort()
-        int C = lstrcmp(DirName.c_str(), NodeDir.c_str());
+        int C = DoCompareText(DirName, NodeDir);
         if (C == 0)
         {
           Result = Parent->Item[Index];

+ 7 - 1
source/packages/filemng/CustomDriveView.pas

@@ -84,6 +84,7 @@ type
       Stage: TCustomDrawStage; var PaintImages: Boolean): Boolean; override;
     procedure NeedImageLists(Recreate: Boolean);
     procedure DoCompare(Sender: TObject; Node1, Node2: TTreeNode; Data: Integer; var Compare: Integer);
+    function DoCompareText(Text1, Text2: string): Integer;
 
     procedure CNNotify(var Msg: TWMNotify); message CN_NOTIFY;
     procedure CMColorChanged(var Msg: TMessage); message CM_COLORCHANGED;
@@ -1096,9 +1097,14 @@ begin
   end;
 end; {CenterNode}
 
+function TCustomDriveView.DoCompareText(Text1, Text2: string): Integer;
+begin
+  Result := CompareLogicalTextPas(Text1, Text2, NaturalOrderNumericalSorting);
+end;
+
 procedure TCustomDriveView.DoCompare(Sender: TObject; Node1, Node2: TTreeNode; Data: Integer; var Compare: Integer);
 begin
-  Compare := CompareLogicalTextPas(Node1.Text, Node2.Text, NaturalOrderNumericalSorting);
+  Compare := DoCompareText(Node1.Text, Node2.Text);
 end;
 
 function TCustomDriveView.SortChildren(ParentNode: TTreeNode; Recurse: Boolean): Boolean;