applied SourceForge patch # 854330 for Filedialog Unicode fixes

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@24718 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Gilles Depeyrot 2003-12-07 21:20:35 +00:00
parent bc93670d3b
commit 878973f1fa
2 changed files with 38 additions and 40 deletions

View File

@ -360,9 +360,9 @@ int wxFileDialog::ShowModal()
// tried using wxMacCFStringHolder in the code below, but it seems
// the CFStrings were being released before the save dialog was called,
// causing a crash - open dialog works fine with or without wxMacCFStringHolder
CFStringRef titleRef = ::CFStringCreateWithCString(NULL,
m_message.wc_str(),
kCFStringEncodingUnicode);
CFStringRef titleRef = ::CFStringCreateWithCharacters( kCFAllocatorDefault,
(const unsigned short*)m_message.wc_str(),
m_message.Len() );
#else
CFStringRef titleRef = ::CFStringCreateWithCString(NULL,
m_message.c_str(),
@ -370,9 +370,9 @@ int wxFileDialog::ShowModal()
#endif
dialogCreateOptions.windowTitle = titleRef;
#if wxUSE_UNICODE
CFStringRef defaultFileNameRef = ::CFStringCreateWithCString(NULL,
m_fileName.wc_str(),
kCFStringEncodingUnicode);
CFStringRef defaultFileNameRef = ::CFStringCreateWithCharacters( kCFAllocatorDefault,
(const unsigned short*)m_fileName.wc_str(),
m_fileName.Len() );
#else
CFStringRef defaultFileNameRef = ::CFStringCreateWithCString(NULL,
m_fileName.c_str(),
@ -459,8 +459,7 @@ int wxFileDialog::ShowModal()
DescType actualType;
Size actualSize;
FSRef theFSRef;
char thePath[FILENAME_MAX];
wxString thePath ;
long count;
::AECountItems(&navReply.selection , &count);
for (long i = 1; i <= count; ++i)
@ -472,7 +471,6 @@ int wxFileDialog::ShowModal()
if (m_dialogStyle & wxSAVE)
{
thePath[0] = '\0';
CFURLRef parentURLRef = ::CFURLCreateFromFSRef(NULL, &theFSRef);
if (parentURLRef)
@ -500,23 +498,23 @@ int wxFileDialog::ShowModal()
if (cfStringUnescaped)
{
Size len = CFStringGetLength( cfStringUnescaped ) ;
wxChar* buf = thePath.GetWriteBuf( len ) ;
//buf[0] = '\0';
#if wxUSE_UNICODE
::CFStringGetCString(cfStringUnescaped,
thePath,
FILENAME_MAX,
kCFStringEncodingUnicode);
CFStringGetCharacters(cfStringUnescaped , CFRangeMake( 0 , len ) , (UniChar*) buf ) ;
#else
::CFStringGetCString(cfStringUnescaped,
thePath,
FILENAME_MAX,
CFStringGetSystemEncoding());
CFStringGetCString( cfStringUnescaped , buf , len+1 , CFStringGetSystemEncoding() ) ;
#endif
buf[len] = 0 ;
wxMacConvertNewlines10To13( buf ) ;
thePath.UngetWriteBuf() ;
::CFRelease(cfStringUnescaped);
}
}
}
}
if (!thePath[0])
if (!thePath)
{
::NavDisposeReply(&navReply);
return wxID_CANCEL;
@ -524,8 +522,9 @@ int wxFileDialog::ShowModal()
}
else
{
err = ::FSRefMakePath(&theFSRef,
(UInt8 *)thePath, sizeof(thePath));
const short maxpath = 1024 ;
::FSRefMakePath( &theFSRef , (UInt8*) thePath.GetWriteBuf(maxpath+1),maxpath) ;
thePath.UngetWriteBuf() ;
if (err != noErr)
break;
}

View File

@ -360,9 +360,9 @@ int wxFileDialog::ShowModal()
// tried using wxMacCFStringHolder in the code below, but it seems
// the CFStrings were being released before the save dialog was called,
// causing a crash - open dialog works fine with or without wxMacCFStringHolder
CFStringRef titleRef = ::CFStringCreateWithCString(NULL,
m_message.wc_str(),
kCFStringEncodingUnicode);
CFStringRef titleRef = ::CFStringCreateWithCharacters( kCFAllocatorDefault,
(const unsigned short*)m_message.wc_str(),
m_message.Len() );
#else
CFStringRef titleRef = ::CFStringCreateWithCString(NULL,
m_message.c_str(),
@ -370,9 +370,9 @@ int wxFileDialog::ShowModal()
#endif
dialogCreateOptions.windowTitle = titleRef;
#if wxUSE_UNICODE
CFStringRef defaultFileNameRef = ::CFStringCreateWithCString(NULL,
m_fileName.wc_str(),
kCFStringEncodingUnicode);
CFStringRef defaultFileNameRef = ::CFStringCreateWithCharacters( kCFAllocatorDefault,
(const unsigned short*)m_fileName.wc_str(),
m_fileName.Len() );
#else
CFStringRef defaultFileNameRef = ::CFStringCreateWithCString(NULL,
m_fileName.c_str(),
@ -459,8 +459,7 @@ int wxFileDialog::ShowModal()
DescType actualType;
Size actualSize;
FSRef theFSRef;
char thePath[FILENAME_MAX];
wxString thePath ;
long count;
::AECountItems(&navReply.selection , &count);
for (long i = 1; i <= count; ++i)
@ -472,7 +471,6 @@ int wxFileDialog::ShowModal()
if (m_dialogStyle & wxSAVE)
{
thePath[0] = '\0';
CFURLRef parentURLRef = ::CFURLCreateFromFSRef(NULL, &theFSRef);
if (parentURLRef)
@ -500,23 +498,23 @@ int wxFileDialog::ShowModal()
if (cfStringUnescaped)
{
Size len = CFStringGetLength( cfStringUnescaped ) ;
wxChar* buf = thePath.GetWriteBuf( len ) ;
//buf[0] = '\0';
#if wxUSE_UNICODE
::CFStringGetCString(cfStringUnescaped,
thePath,
FILENAME_MAX,
kCFStringEncodingUnicode);
CFStringGetCharacters(cfStringUnescaped , CFRangeMake( 0 , len ) , (UniChar*) buf ) ;
#else
::CFStringGetCString(cfStringUnescaped,
thePath,
FILENAME_MAX,
CFStringGetSystemEncoding());
CFStringGetCString( cfStringUnescaped , buf , len+1 , CFStringGetSystemEncoding() ) ;
#endif
buf[len] = 0 ;
wxMacConvertNewlines10To13( buf ) ;
thePath.UngetWriteBuf() ;
::CFRelease(cfStringUnescaped);
}
}
}
}
if (!thePath[0])
if (!thePath)
{
::NavDisposeReply(&navReply);
return wxID_CANCEL;
@ -524,8 +522,9 @@ int wxFileDialog::ShowModal()
}
else
{
err = ::FSRefMakePath(&theFSRef,
(UInt8 *)thePath, sizeof(thePath));
const short maxpath = 1024 ;
::FSRefMakePath( &theFSRef , (UInt8*) thePath.GetWriteBuf(maxpath+1),maxpath) ;
thePath.UngetWriteBuf() ;
if (err != noErr)
break;
}