]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/dirdlg.cpp
non owned window implementation
[wxWidgets.git] / src / mac / carbon / dirdlg.cpp
index ec2ef163c554cd153d687f43743833939d5d12c6..5caa7f6b4bb218fc37308e82dfdbe19e22f721e5 100644 (file)
 
 #ifndef WX_PRECOMP
     #include "wx/utils.h"
+    #include "wx/dialog.h"
+    #include "wx/cmndata.h"
 #endif // WX_PRECOMP
 
-#include "wx/dialog.h"
-
-#include "wx/cmndata.h"
 #include "wx/filename.h"
 
 #include "wx/mac/private.h"
@@ -53,11 +52,11 @@ static pascal void NavEventProc(
         {
             // Set default location for the modern Navigation APIs
             // Apple Technical Q&A 1151
-            FSSpec theFSSpec;
-            wxMacFilename2FSSpec(data->GetPath(), &theFSSpec);
+            FSRef theFile;
+            wxMacPathToFSRef(data->GetPath(), &theFile);
             AEDesc theLocation = { typeNull, NULL };
-            if (noErr == ::AECreateDesc(typeFSS, &theFSSpec, sizeof(FSSpec), &theLocation))
-                ::NavCustomControl(ioParams->context, kNavCtlSetLocation, (void *) &theLocation);
+            if (noErr == ::AECreateDesc(typeFSRef, &theFile, sizeof(FSRef), &theLocation))
+                 ::NavCustomControl(ioParams->context, kNavCtlSetLocation, (void *) &theLocation);
         }
     }
 }
@@ -65,7 +64,7 @@ static pascal void NavEventProc(
 wxDirDialog::wxDirDialog(wxWindow *parent,
                          const wxString& message,
                          const wxString& defaultPath,
-                         long style,
+                         long WXUNUSED(style),
                          const wxPoint& WXUNUSED(pos),
                          const wxSize& WXUNUSED(size),
                          const wxString& WXUNUSED(name))
@@ -78,16 +77,17 @@ wxDirDialog::wxDirDialog(wxWindow *parent,
 
 int wxDirDialog::ShowModal()
 {
-    NavDialogRef dialog;
+    NavDialogRef dialog = NULL;
     NavDialogCreationOptions options;
     NavReplyRecord reply ;
     bool disposeReply = false ;
     OSStatus err = noErr;
 
     err = NavGetDefaultDialogCreationOptions(&options);
+    options.optionFlags &= ~kNavAllowMultipleFiles;
     if (err == noErr)
     {
-        wxMacCFStringHolder message(m_message, m_font.GetEncoding());
+        wxCFStringRef message(m_message, GetFont().GetEncoding());
         options.message = message;
         err = NavCreateChooseFolderDialog(&options, sStandardNavEventFilter , NULL,  this , &dialog);
         if (err == noErr)
@@ -136,6 +136,9 @@ int wxDirDialog::ShowModal()
     if ( err != noErr && err != userCanceledErr )
         m_path = wxEmptyString ;
 
+       if ( dialog )
+       ::NavDialogDispose(dialog);
+
     return (err == noErr) ? wxID_OK : wxID_CANCEL ;
 }