浏览代码

Bug 1737: Do not scan unvisited network folders for subfolders

https://winscp.net/tracker/1737
(cherry picked from commit 1c37da16c40de080a86ef3973dac98f86121a048)

Source commit: 996203ab9b04f90fffb3795224781e7a3c1f95d6
Martin Prikryl 6 年之前
父节点
当前提交
5426360d8a
共有 1 个文件被更改,包括 7 次插入2 次删除
  1. 7 2
      source/packages/filemng/DriveView.pas

+ 7 - 2
source/packages/filemng/DriveView.pas

@@ -1417,6 +1417,7 @@ function TDriveView.AddChildNode(ParentNode: TTreeNode; SRec: TSearchRec): TTree
 var
   NewNode: TTreeNode;
   NodeData: TNodeData;
+  ContentMask: Boolean;
 begin
   NodeData := TNodeData.Create;
   NodeData.Attr := SRec.Attr;
@@ -1431,12 +1432,16 @@ begin
   { query content attributes ("has subfolder") only if tree view is visible }
   { to avoid unnecessary scan of subfolders (which may take some time) }
   { if tree view is not visible anyway }
+  ContentMask :=
+    Visible and
+    (GetDriveTypeToNode(ParentNode) <> DRIVE_REMOTE);
+
   if not Assigned(TNodeData(ParentNode.Data).ShellFolder) then
   begin
-    GetNodeShellAttr(FDesktop, TNodeData(ParentNode.Data), NodePathName(ParentNode), Visible);
+    GetNodeShellAttr(FDesktop, TNodeData(ParentNode.Data), NodePathName(ParentNode), ContentMask);
   end;
 
-  GetNodeShellAttr(TNodeData(ParentNode.Data).ShellFolder, NodeData, SRec.Name, Visible);
+  GetNodeShellAttr(TNodeData(ParentNode.Data).ShellFolder, NodeData, SRec.Name, ContentMask);
 
   NewNode := Self.Items.AddChildObject(ParentNode, '', NodeData);
   NewNode.Text := GetDisplayName(NewNode);