libede: fixed windows file system root listing for tree
authorRejean Loyer <rejean.loyer@gmail.com>
Wed, 14 Sep 2011 07:54:52 +0000 (03:54 -0400)
committerRejean Loyer <rejean.loyer@gmail.com>
Wed, 14 Sep 2011 22:55:30 +0000 (18:55 -0400)
libede/src/FileSystemBox.ec

index 201b508..4d20d0e 100644 (file)
@@ -536,6 +536,7 @@ private:
 
    void LoadTree()
    {
+      bool isRoot = !strcmp(path, "/");
       //char startPath[MAX_LOCATION];
       FileSystemNode parent;
       FileSystemNode node;
@@ -550,53 +551,58 @@ private:
 
       delete root;
    #ifdef __WIN32__
-      root = FileSystemNode { type = computer, loaded = true, childrenLoaded = true };
-      root.name = rootName;
-      AddTreeNode(root, true, false, null);
-   #else
-      root = MakeFileSystemNode(FileStats { attribs = FileExists(path)}, path, path, bits.previewPictures, displaySystem);
-      //root.name = "/";
-      root.type = computer;
-      AddTreeNode(root, false, true, null);
-   #endif
-
-   #ifdef __WIN32__
-      while(listing.Find())
+      if(isRoot)
       {
-         int len = strlen(listing.name);
-         char info[MAX_LOCATION];
-         char name[MAX_LOCATION];
-         if(listing.stats.attribs.isDrive && 
-               len > 3 && !strncmp(&listing.name[1], ": [", 3))
-         {
-            strncpy(name, listing.name, 2);
-            name[2] = 0;
-            strncpy(info, &listing.name[4], len - 5);
-            info[len - 5] = 0;
-         }
-         else
+         root = FileSystemNode { loaded = true, childrenLoaded = true };
+         AddTreeNode(root, true, false, null);
+         while(listing.Find())
          {
-            strcpy(name, listing.name);
-            info[0] = 0;
+            int len = strlen(listing.name);
+            char info[MAX_LOCATION];
+            char name[MAX_LOCATION];
+            if(listing.stats.attribs.isDrive &&
+                  len > 3 && !strncmp(&listing.name[1], ": [", 3))
+            {
+               strncpy(name, listing.name, 2);
+               name[2] = 0;
+               strncpy(info, &listing.name[4], len - 5);
+               info[len - 5] = 0;
+            }
+            else
+            {
+               strcpy(name, listing.name);
+               info[0] = 0;
+            }
+
+            parent = MakeFileSystemNode(listing.stats, name, listing.path, bits.previewPictures, displaySystem);
+            if(info[0])
+               parent.info = CopyString(info);
+            parent.loaded = true;
+            AddTreeNode(parent, !listing.stats.attribs.isDirectory, listing.stats.attribs.isDirectory, root);
+            if(!listing.stats.attribs.isDirectory)
+               parent.childrenLoaded = true;
          }
 
-         parent = MakeFileSystemNode(listing.stats, name);
-         if(info[0])
-            parent.info = CopyString(info);
-         parent.loaded = true;
-         AddTreeNode(parent, !listing.stats.attribs.isDirectory, listing.stats.attribs.isDirectory, root, this);
-         if(!listing.stats.attribs.isDirectory)
-            parent.childrenLoaded = true;
+         node = FileSystemNode { name = msNetwork, type = network };
+         AddTreeNode(node, false, true, null);
+         node.row.collapsed = true;
       }
-
-      node = FileSystemNode { name = msNetwork, type = network };
-      AddTreeNode(node, false, true, null, this);
-      node.row.collapsed = true;
-      Sort(nameField, 1);
-      SelectRow(root.row);
+      else
    #endif
-      LoadTreeNode(root);
+      {
+         root = MakeFileSystemNode(FileStats { attribs = FileExists(path)}, path, path, bits.previewPictures, displaySystem);
+         AddTreeNode(root, false, true, null);
+         LoadTreeNode(root);
+      }
+
+      if(isRoot)
+      {
+         root.type = computer;
+         root.name = rootName;
+      }
+
       list.Sort(nameField, 1);
+      list.SelectRow(root.row);
    }
 
    void LoadTreeNode(FileSystemNode node)
@@ -1802,11 +1808,11 @@ public:
          }
       }
       else
-#ifdef __WIN32__
+/*#ifdef __WIN32__
          strcpy(outputPath, "/");
-#else
+#else*/
          strcpy(outputPath, name);
-#endif
+//#endif
 
    }