From: Rejean Loyer Date: Wed, 14 Sep 2011 07:54:52 +0000 (-0400) Subject: libede: fixed windows file system root listing for tree X-Git-Url: http://ecere.com/cgi-bin/gitweb.cgi?p=ede;a=commitdiff_plain;h=39ac950d76e2639fa795bd567b80d0fbbcd960e9 libede: fixed windows file system root listing for tree --- diff --git a/libede/src/FileSystemBox.ec b/libede/src/FileSystemBox.ec index 201b508..4d20d0e 100644 --- a/libede/src/FileSystemBox.ec +++ b/libede/src/FileSystemBox.ec @@ -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 }