]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/dir.cpp
make the second parameter to wxTreeCtrl.GetFirstChild optional
[wxWidgets.git] / src / msw / dir.cpp
index 2ed4f0e02e3c6671bd79b24a5e77c88ae78bc2a6..7d505e56bc4531ca9b987010aac9bbf220f2059a 100644 (file)
     #pragma hdrstop
 #endif
 
+// For _A_SUBDIR, etc.
+#if defined(__BORLANDC__) && defined(__WIN16__)
+#include <dos.h>
+#endif
+
 #ifndef WX_PRECOMP
     #include "wx/intl.h"
     #include "wx/log.h"
     static inline FIND_DATA FindFirst(const wxString& spec,
                                       FIND_STRUCT *finddata)
     {
-        return ::FindFirstFile(filespec, &finddata);
+        return ::FindFirstFile(spec, finddata);
     }
 
     static inline bool FindNext(FIND_DATA fd, FIND_STRUCT *finddata)
@@ -210,6 +215,8 @@ public:
     void Rewind();
     bool Read(wxString *filename);
 
+    const wxString& GetName() const { return m_dirname; }
+
 private:
     FIND_DATA m_finddata;
 
@@ -267,9 +274,12 @@ bool wxDirData::Read(wxString *filename)
     if ( !IsFindDataOk(m_finddata) )
     {
         // open first
-        wxString filespec;
-        filespec << m_dirname << _T('\\')
-                 << (!m_filespec ? _T("*.*") : m_filespec.c_str());
+        wxString filespec = m_dirname;
+        if ( !wxEndsWithPathSeparator(filespec) )
+        {
+            filespec += _T('\\');
+        }
+        filespec += (!m_filespec ? _T("*.*") : m_filespec.c_str());
 
         m_finddata = FindFirst(filespec, PTR_TO_FINDDATA);
 
@@ -395,6 +405,28 @@ bool wxDir::IsOpened() const
     return m_data != NULL;
 }
 
+wxString wxDir::GetName() const
+{
+    wxString name;
+    if ( m_data )
+    {
+        name = M_DIR->GetName();
+        if ( !name.empty() )
+        {
+            // bring to canonical Windows form
+            name.Replace(_T("/"), _T("\\"));
+
+            if ( name.Last() == _T('\\') )
+            {
+                // chop off the last (back)slash
+                name.Truncate(name.length() - 1);
+            }
+        }
+    }
+
+    return name;
+}
+
 wxDir::~wxDir()
 {
     delete M_DIR;