Revert "libede:FileSystemBox: added updating of path in supplied PathBox locationBox"
[ede] / libede / src / FileSystemBox.ec
index 1a32a80..8a4fad1 100644 (file)
@@ -459,7 +459,7 @@ static FileSystemNode MakeFileSystemNode(const FileStats stats,
 
 class FileSystemBoxBits
 {
-   bool foldersOnly:1, filesOnly:1, details:1, treeBranches:1, previewPictures:1;
+   bool foldersOnly:1, filesOnly:1, details:1, treeBranches:1, previewPictures:1, navigateFolders:1;
    //bool header:1, freeSelect:1, fullRowSelect:1, multiSelect:1, autoScroll:1, alwaysHL : 1, moveRows:1, resizable:1;
    //bool moveFields:1, clearHeader:1, alwaysEdit:1, collapse:1, treeBranch:1, rootCollapse:1, heightSet:1;
    //bool sortable:1, noDragging:1, fillLastField:1, expandOnAdd:1;
@@ -486,6 +486,7 @@ public:
    FileSystemNode selection;
 
    virtual bool Window::NotifyNodeSelect(FileSystemBox box, FileSystemNode node);
+   virtual bool Window::NotifyNodeOpen(FileSystemBox box, FileSystemNode node);
    
    property char * path
    {
@@ -518,6 +519,7 @@ public:
       }
       get { return bits.treeBranches; }
    };
+   property bool navigateFolders { set { bits.navigateFolders = value; bits.foldersOnly = !value; } get { return bits.navigateFolders; } };
    
    property FileSystemNode node
    {
@@ -719,8 +721,35 @@ private:
          return true;
       }
 
+      bool NotifyDoubleClick(ListBox listBox, int x, int y, Modifiers mods)
+      {
+         return OpenNode();
+      }
+
+      bool NotifyKeyDown(ListBox listBox, DataRow row, Key key, unichar ch)
+      {
+         bool result;
+         if((SmartKey)key == enter)
+            result = OpenNode();
+         else
+            result = true;
+         return true;
+      }
    };
 
+   bool OpenNode()
+   {
+      bool result;
+      if(selection && selection.type.isFolder && bits.navigateFolders)
+      {
+         property::path = selection.path;
+         result = true;
+      }
+      else
+         result = NotifyNodeOpen(this.master, this, selection);
+      return result;
+   }
+
    // Edit Menu
    Menu editMenu { menu, "Edit", e };
    MenuItem itemEditCut