Applied fix for patch #846732 'filedalog long filename support'. File dialog now returns ':' separated paths again with Classic/Carbon builds. The fix is attached to the same patch.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@24789 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Dimitri Schoolwerth 2003-12-12 02:19:00 +00:00
parent ffafd8a55b
commit a449f8407b
2 changed files with 30 additions and 86 deletions

View File

@ -469,64 +469,36 @@ int wxFileDialog::ShowModal()
if (err != noErr)
break;
CFURLRef fullURLRef;
if (m_dialogStyle & wxSAVE)
{
CFURLRef parentURLRef = ::CFURLCreateFromFSRef(NULL, &theFSRef);
if (parentURLRef)
{
CFURLRef fullURLRef =
fullURLRef =
::CFURLCreateCopyAppendingPathComponent(NULL,
parentURLRef,
navReply.saveFileName,
false);
::CFRelease(parentURLRef);
if (fullURLRef)
{
CFStringRef cfString = ::CFURLCopyPath(fullURLRef);
::CFRelease(fullURLRef);
if (cfString)
{
// unescape the URL for
// "file name" instead of "file%20name"
CFStringRef cfStringUnescaped =
::CFURLCreateStringByReplacingPercentEscapes(NULL,
cfString,
CFSTR(""));
::CFRelease(cfString);
if (cfStringUnescaped)
{
Size len = CFStringGetLength( cfStringUnescaped ) ;
wxChar* buf = thePath.GetWriteBuf( len ) ;
//buf[0] = '\0';
#if wxUSE_UNICODE
CFStringGetCharacters(cfStringUnescaped , CFRangeMake( 0 , len ) , (UniChar*) buf ) ;
#else
CFStringGetCString( cfStringUnescaped , buf , len+1 , CFStringGetSystemEncoding() ) ;
#endif
buf[len] = 0 ;
wxMacConvertNewlines10To13( buf ) ;
thePath.UngetWriteBuf() ;
::CFRelease(cfStringUnescaped);
}
}
}
}
if (!thePath)
{
::NavDisposeReply(&navReply);
return wxID_CANCEL;
}
}
else
{
const short maxpath = 1024 ;
::FSRefMakePath( &theFSRef , (UInt8*) thePath.GetWriteBuf(maxpath+1),maxpath) ;
thePath.UngetWriteBuf() ;
if (err != noErr)
break;
fullURLRef = ::CFURLCreateFromFSRef(NULL, &theFSRef);
}
#ifdef __UNIX__
CFURLPathStyle pathstyle = kCFURLPOSIXPathStyle;
#else
CFURLPathStyle pathstyle = kCFURLHFSPathStyle;
#endif
CFStringRef cfString = CFURLCopyFileSystemPath(fullURLRef, pathstyle);
thePath = wxMacCFStringHolder(cfString).AsString();
if (!thePath)
{
::NavDisposeReply(&navReply);
return wxID_CANCEL;
}
m_path = thePath;
m_paths.Add(m_path);

View File

@ -469,64 +469,36 @@ int wxFileDialog::ShowModal()
if (err != noErr)
break;
CFURLRef fullURLRef;
if (m_dialogStyle & wxSAVE)
{
CFURLRef parentURLRef = ::CFURLCreateFromFSRef(NULL, &theFSRef);
if (parentURLRef)
{
CFURLRef fullURLRef =
fullURLRef =
::CFURLCreateCopyAppendingPathComponent(NULL,
parentURLRef,
navReply.saveFileName,
false);
::CFRelease(parentURLRef);
if (fullURLRef)
{
CFStringRef cfString = ::CFURLCopyPath(fullURLRef);
::CFRelease(fullURLRef);
if (cfString)
{
// unescape the URL for
// "file name" instead of "file%20name"
CFStringRef cfStringUnescaped =
::CFURLCreateStringByReplacingPercentEscapes(NULL,
cfString,
CFSTR(""));
::CFRelease(cfString);
if (cfStringUnescaped)
{
Size len = CFStringGetLength( cfStringUnescaped ) ;
wxChar* buf = thePath.GetWriteBuf( len ) ;
//buf[0] = '\0';
#if wxUSE_UNICODE
CFStringGetCharacters(cfStringUnescaped , CFRangeMake( 0 , len ) , (UniChar*) buf ) ;
#else
CFStringGetCString( cfStringUnescaped , buf , len+1 , CFStringGetSystemEncoding() ) ;
#endif
buf[len] = 0 ;
wxMacConvertNewlines10To13( buf ) ;
thePath.UngetWriteBuf() ;
::CFRelease(cfStringUnescaped);
}
}
}
}
if (!thePath)
{
::NavDisposeReply(&navReply);
return wxID_CANCEL;
}
}
else
{
const short maxpath = 1024 ;
::FSRefMakePath( &theFSRef , (UInt8*) thePath.GetWriteBuf(maxpath+1),maxpath) ;
thePath.UngetWriteBuf() ;
if (err != noErr)
break;
fullURLRef = ::CFURLCreateFromFSRef(NULL, &theFSRef);
}
#ifdef __UNIX__
CFURLPathStyle pathstyle = kCFURLPOSIXPathStyle;
#else
CFURLPathStyle pathstyle = kCFURLHFSPathStyle;
#endif
CFStringRef cfString = CFURLCopyFileSystemPath(fullURLRef, pathstyle);
thePath = wxMacCFStringHolder(cfString).AsString();
if (!thePath)
{
::NavDisposeReply(&navReply);
return wxID_CANCEL;
}
m_path = thePath;
m_paths.Add(m_path);