support for default location added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@37307 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -18,6 +18,7 @@
|
|||||||
#include "wx/dirdlg.h"
|
#include "wx/dirdlg.h"
|
||||||
|
|
||||||
#include "wx/cmndata.h"
|
#include "wx/cmndata.h"
|
||||||
|
#include "wx/filename.h"
|
||||||
|
|
||||||
#include "wx/mac/private.h"
|
#include "wx/mac/private.h"
|
||||||
|
|
||||||
@@ -29,6 +30,34 @@
|
|||||||
|
|
||||||
IMPLEMENT_CLASS(wxDirDialog, wxDialog)
|
IMPLEMENT_CLASS(wxDirDialog, wxDialog)
|
||||||
|
|
||||||
|
static pascal void NavEventProc(
|
||||||
|
NavEventCallbackMessage inSelector,
|
||||||
|
NavCBRecPtr ioParams,
|
||||||
|
NavCallBackUserData ioUserData );
|
||||||
|
|
||||||
|
static NavEventUPP sStandardNavEventFilter = NewNavEventUPP(NavEventProc);
|
||||||
|
|
||||||
|
static pascal void NavEventProc(
|
||||||
|
NavEventCallbackMessage inSelector,
|
||||||
|
NavCBRecPtr ioParams,
|
||||||
|
NavCallBackUserData ioUserData )
|
||||||
|
{
|
||||||
|
wxDirDialog * data = ( wxDirDialog *) ioUserData ;
|
||||||
|
if ( inSelector == kNavCBStart )
|
||||||
|
{
|
||||||
|
if (data && !data->GetPath().IsEmpty() )
|
||||||
|
{
|
||||||
|
// Set default location for the modern Navigation APIs
|
||||||
|
// Apple Technical Q&A 1151
|
||||||
|
FSSpec theFSSpec;
|
||||||
|
wxMacFilename2FSSpec(data->GetPath(), &theFSSpec);
|
||||||
|
AEDesc theLocation = { typeNull, NULL };
|
||||||
|
if (noErr == ::AECreateDesc(typeFSS, &theFSSpec, sizeof(FSSpec), &theLocation))
|
||||||
|
::NavCustomControl(ioParams->context, kNavCtlSetLocation, (void *) &theLocation);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
wxDirDialog::wxDirDialog(wxWindow *parent,
|
wxDirDialog::wxDirDialog(wxWindow *parent,
|
||||||
const wxString& message,
|
const wxString& message,
|
||||||
const wxString& defaultPath,
|
const wxString& defaultPath,
|
||||||
@@ -57,7 +86,7 @@ int wxDirDialog::ShowModal()
|
|||||||
{
|
{
|
||||||
wxMacCFStringHolder message(m_message, m_font.GetEncoding());
|
wxMacCFStringHolder message(m_message, m_font.GetEncoding());
|
||||||
options.message = message;
|
options.message = message;
|
||||||
err = NavCreateChooseFolderDialog(&options, NULL, NULL, NULL, &dialog);
|
err = NavCreateChooseFolderDialog(&options, sStandardNavEventFilter , NULL, this , &dialog);
|
||||||
if (err == noErr)
|
if (err == noErr)
|
||||||
{
|
{
|
||||||
err = NavDialogRun(dialog);
|
err = NavDialogRun(dialog);
|
||||||
|
Reference in New Issue
Block a user