X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e40298d54ecd5b109222a7c60aa2ef084a304d69..917ae499da53826e9b154a786eae1b563317f47f:/src/mac/carbon/dirdlg.cpp diff --git a/src/mac/carbon/dirdlg.cpp b/src/mac/carbon/dirdlg.cpp index 6864054234..96cbb64de2 100644 --- a/src/mac/carbon/dirdlg.cpp +++ b/src/mac/carbon/dirdlg.cpp @@ -9,11 +9,14 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma implementation "dirdlg.h" #endif -#include "wx/defs.h" +#include "wx/wxprec.h" + +#if wxUSE_DIRDLG + #include "wx/utils.h" #include "wx/dialog.h" #include "wx/dirdlg.h" @@ -40,7 +43,7 @@ wxDirDialog::wxDirDialog(wxWindow *parent, const wxSize& WXUNUSED(size), const wxString& WXUNUSED(name)) { - wxASSERT_MSG( NavServicesAvailable() , "Navigation Services are not running" ) ; + wxASSERT_MSG( NavServicesAvailable() , wxT("Navigation Services are not running") ) ; m_message = message; m_dialogStyle = style; m_parent = parent; @@ -92,55 +95,29 @@ int wxDirDialog::ShowModal() 0L); // User Data if ( (err != noErr) && (err != userCanceledErr) ) { - m_path = "" ; + m_path = wxT("") ; return wxID_CANCEL ; } if (mNavReply.validRecord) { // User chose a folder - FSSpec folderInfo; - FSSpec outFileSpec ; + FSRef folderInfo; AEDesc specDesc ; - OSErr err = ::AECoerceDesc( &mNavReply.selection , typeFSS, &specDesc); + OSErr err = ::AECoerceDesc( &mNavReply.selection , typeFSRef, &specDesc); if ( err != noErr ) { - m_path = "" ; + m_path = wxT("") ; return wxID_CANCEL ; } - folderInfo = **(FSSpec**) specDesc.dataHandle; + folderInfo = **(FSRef**) specDesc.dataHandle; if (specDesc.dataHandle != nil) { ::AEDisposeDesc(&specDesc); } -// mNavReply.GetFileSpec(folderInfo); - - // The FSSpec from NavChooseFolder is NOT the file spec - // for the folder. The parID field is actually the DirID - // of the folder itself, not the folder's parent, and - // the name field is empty. We must call PBGetCatInfo - // to get the parent DirID and folder name - - Str255 name; - CInfoPBRec thePB; // Directory Info Parameter Block - thePB.dirInfo.ioCompletion = nil; - thePB.dirInfo.ioVRefNum = folderInfo.vRefNum; // Volume is right - thePB.dirInfo.ioDrDirID = folderInfo.parID; // Folder's DirID - thePB.dirInfo.ioNamePtr = name; - thePB.dirInfo.ioFDirIndex = -1; // Lookup using Volume and DirID - - err = ::PBGetCatInfoSync(&thePB); - if ( err != noErr ) { - m_path = "" ; - return wxID_CANCEL ; - } - // Create cannonical FSSpec - ::FSMakeFSSpec(thePB.dirInfo.ioVRefNum, thePB.dirInfo.ioDrParID, - name, &outFileSpec); - - // outFolderDirID = thePB.dirInfo.ioDrDirID; - m_path = wxMacFSSpec2MacFilename( &outFileSpec ) ; + m_path = wxMacFSRefToPath( &folderInfo ) ; return wxID_OK ; } return wxID_CANCEL; } +#endif