- NavDialogOptions mNavOptions;
- NavObjectFilterUPP mNavFilterUPP = NULL;
- NavReplyRecord mNavReply;
-
- ::NavGetDefaultDialogOptions(&mNavOptions);
-
- mNavReply.validRecord = false;
- mNavReply.replacing = false;
- mNavReply.isStationery = false;
- mNavReply.translationNeeded = false;
- mNavReply.selection.descriptorType = typeNull;
- mNavReply.selection.dataHandle = nil;
- mNavReply.keyScript = smSystemScript;
- mNavReply.fileTranslation = nil;
-
- // Set default location, the location
- // that's displayed when the dialog
- // first appears
-
- OSErr err = ::NavChooseFolder(
- NULL,
- &mNavReply,
- &mNavOptions,
- NULL,
- mNavFilterUPP,
- 0L); // User Data
-
- if ( (err != noErr) && (err != userCanceledErr) ) {
- m_path = wxEmptyString ;
- return wxID_CANCEL ;
+ NavDialogRef dialog;
+ NavDialogCreationOptions options;
+ NavReplyRecord reply ;
+ bool disposeReply = false ;
+ OSStatus err = noErr;
+
+ err = NavGetDefaultDialogCreationOptions(&options);
+ if (err == noErr)
+ {
+ wxMacCFStringHolder message(m_message, m_font.GetEncoding());
+ options.message = message;
+ err = NavCreateChooseFolderDialog(&options, NULL, NULL, NULL, &dialog);
+ if (err == noErr)
+ {
+ err = NavDialogRun(dialog);
+ if ( err == noErr )
+ {
+ err = NavDialogGetReply(dialog, &reply);
+ disposeReply = true ;
+ }
+ }