From: Rejean Loyer Date: Sat, 10 Sep 2011 07:27:36 +0000 (-0400) Subject: libede:FileSystemBox : added navigateFolders feature and NotifyNodeOpen X-Git-Url: http://ecere.com/cgi-bin/gitweb.cgi?p=ede;a=commitdiff_plain;h=88434e545c380050786849466ff681423278188c;ds=sidebyside libede:FileSystemBox : added navigateFolders feature and NotifyNodeOpen --- diff --git a/libede/src/FileSystemBox.ec b/libede/src/FileSystemBox.ec index 1a32a80..8a4fad1 100644 --- a/libede/src/FileSystemBox.ec +++ b/libede/src/FileSystemBox.ec @@ -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