]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/dirctrlg.cpp
several mac fixes (Mark Newsams patches)
[wxWidgets.git] / src / generic / dirctrlg.cpp
index b5559d65b441c1f997877128a0f90840ab7eecae..d00e4d958b61fa62117a7ade6ad82d7bb707c2a5 100644 (file)
@@ -20,7 +20,7 @@
 #pragma hdrstop
 #endif
 
-#include "wx/defs.h"
+#if wxUSE_DIRDLG
 
 #include "wx/utils.h"
 #include "wx/dialog.h"
 
 #endif // __WXPM__
 
+#if defined(__WXMAC__) && !defined(__UNIX__)
+#include "moreextr.h"
+#endif
+
 #ifdef __BORLANDC__
 #include "dos.h"
 #endif
@@ -308,15 +312,19 @@ static const int ID_NEW = 1004;
 #if defined(__WXMSW__) || defined(__WXPM__)
 int setdrive(int drive)
 {
-       char  newdrive[3];
+       wxChar  newdrive[3];
 
        if (drive < 1 || drive > 31)
                return -1;
-       newdrive[0] = (char)('A' + (char)drive - (char)1);
-       newdrive[1] = ':';
-       newdrive[2] = '\0';
+       newdrive[0] = (wxChar)(wxT('A') + drive - 1);
+       newdrive[1] = wxT(':');
+       newdrive[2] = wxT('\0');
 #if defined(__WXMSW__)
-       if (SetCurrentDirectory((LPSTR)newdrive))
+#ifdef __WIN16__
+    if (wxSetWorkingDirectory(newdrive))
+#else
+       if (::SetCurrentDirectory(newdrive))
+#endif
 #else
     // VA doesn't know what LPSTR is and has its own set
        if (DosSetCurrentDir((PSZ)newdrive))
@@ -589,7 +597,17 @@ void wxGenericDirCtrl::SetupSections()
         }
     }
 #endif
-
+#elif defined(__WXMAC__) && !defined(__UNIX__)
+    FSSpec volume ;
+    short index = 1 ;
+    while(1) {
+      short actualCount = 0 ;
+      if ( OnLine( &volume , 1 , &actualCount , &index ) != noErr || actualCount == 0 )
+        break ;
+
+      wxString name = wxMacFSSpec2MacFilename( &volume ) ;
+      AddSection(name+":", name, 0);
+    }
 #else
   AddSection(wxT("/"), _("The Computer"), 0);
   AddSection(wxGetHomeDir(), _("My Home"), 0 );
@@ -1382,3 +1400,5 @@ void wxGenericDirDialog::OnNew( wxCommandEvent& WXUNUSED(event) )
     m_dirCtrl->GetTreeCtrl()->EnsureVisible( new_id );
     m_dirCtrl->GetTreeCtrl()->EditLabel( new_id );
 }
+
+#endif // wxUSE_DIRDLG