libede:FileSystemBox: fixed right click menu crash. used proper guiApp initialization...
[ede] / libede / src / FileSystemBox.ec
index 09466a9..feebf15 100644 (file)
@@ -8,7 +8,7 @@ static char * rootName = "File System";
 #endif
 
 private:
-define guiApp = ((GuiApplication)__thisModule);  // how to do this in a dll?
+define guiApp = (GuiApplication)((__thisModule).application);
 define selectionColor = guiApp.currentSkin.selectionColor; //Color { 10, 36, 106 };
 
 static char * fileIconNames[] = 
@@ -202,6 +202,7 @@ public:
       get { return bits.treeBranches; }
    };
    property bool navigateFolders { set { bits.navigateFolders = value; bits.filesOnly = !value; } get { return bits.navigateFolders; } };
+   property bool multiSelect { set { list.multiSelect = value; } get { return list.multiSelect; } };
    
    property FileSystemNode node
    {
@@ -518,7 +519,7 @@ private:
       {
          if((!bits.foldersOnly && !bits.filesOnly) ||
             (bits.foldersOnly && listing.stats.attribs.isDirectory) ||
-            (bits.filesOnly && !listing.stats.attribs.isDirectory/*listing.stats.attribs.isFile*/)) // TOCHECK: isFile broken?
+            (bits.filesOnly && listing.stats.attribs.isFile))
          {
             FileSystemNode node = MakeFileSystemNode(listing.stats, listing.name, listing.path, bits.previewPictures, displaySystem);
             DataRow row = list.AddRow();
@@ -614,13 +615,13 @@ private:
          {
             FileListing listing { path, extensions = extensions };
             if(node.children.count == 1)
-            DeleteNode(node.children.first);
+               DeleteNode(node.children.first);
 
             while(listing.Find())
             {
-               if((!bits.foldersOnly && !bits.filesOnly) ||
+               if(!listing.stats.attribs.isRemovable && ((!bits.foldersOnly && !bits.filesOnly) ||
                   (bits.foldersOnly && listing.stats.attribs.isDirectory) ||
-                  (bits.filesOnly && !listing.stats.attribs.isDirectory/*listing.stats.attribs.isFile*/)) // TOCHECK: isFile broken?
+                  (bits.filesOnly && listing.stats.attribs.isFile)))
                {
                   FileSystemNode child = MakeFileSystemNode(listing.stats, listing.name, listing.path, bits.previewPictures, displaySystem);
                   AddTreeNode(child, true, false, node);
@@ -661,7 +662,7 @@ private:
          {
             if((!bits.foldersOnly && !bits.filesOnly) ||
                (bits.foldersOnly && listing.stats.attribs.isDirectory) ||
-               (bits.filesOnly && !listing.stats.attribs.isDirectory/*listing.stats.attribs.isFile*/)) // TOCHECK: isFile broken?
+               (bits.filesOnly && listing.stats.attribs.isFile))
             {
                FileSystemNode child = MakeFileSystemNode(listing.stats, listing.name, listing.path, bits.previewPictures, displaySystem);
                AddTreeNode(child, true, false, parent);
@@ -1704,7 +1705,7 @@ ExplorerFileItem MakeFileItem(const FileAttribs attribs, const char * fileName,
    
    ExplorerFileItem item { };
 
-   //if(attribs.isFile) // TODO fix this in ecere
+   //if(stats.attribs.isFile) // -- should work now
    if(attribs.isDirectory)
    {
       extension[0] = 0;
@@ -1929,7 +1930,7 @@ public:
       //surface.WriteTextDots(alignment, x + textOffset, y + 2, width - textOffset, name, strlen(name));
       surface.WriteTextDots(alignment, xStart, y + 2, width, label, len);
 
-      //if(!guiApp.textMode) -- how to do this in a dll?
+      if(!guiApp.textMode)
       {
          if(displayFlags.current)
          {