Produce NFD in wxConvFileName::FromWChar() on macOS
This ensures that fn_str() returns the string in the expected, decomposed, format. Also simplify the code by removing workarounds for old systems which are not supported any more and make explicit the fact that under macOS ToWChar() always produced NFC.
This commit is contained in:
committed by
Vadim Zeitlin
parent
47cc0b8946
commit
ab858b5805
@@ -290,35 +290,44 @@ inline CFStringEncoding wxCFStringEncFromFontEnc(wxFontEncoding encoding)
|
||||
class wxMBConv_cf : public wxMBConv
|
||||
{
|
||||
public:
|
||||
enum NormalizationForm
|
||||
{
|
||||
None = 0x00,
|
||||
FromWChar_D = 0x01,
|
||||
ToWChar_C = 0x02
|
||||
};
|
||||
|
||||
wxMBConv_cf()
|
||||
{
|
||||
Init(CFStringGetSystemEncoding()) ;
|
||||
Init(CFStringGetSystemEncoding(), ToWChar_C) ;
|
||||
}
|
||||
|
||||
wxMBConv_cf(const wxMBConv_cf& conv) : wxMBConv()
|
||||
{
|
||||
m_encoding = conv.m_encoding;
|
||||
m_normalization = conv.m_normalization;
|
||||
}
|
||||
|
||||
#if wxUSE_FONTMAP
|
||||
wxMBConv_cf(const char* name)
|
||||
wxMBConv_cf(const char* name, NormalizationForm normalization = ToWChar_C)
|
||||
{
|
||||
Init( wxCFStringEncFromFontEnc(wxFontMapperBase::Get()->CharsetToEncoding(name, false) ) ) ;
|
||||
Init( wxCFStringEncFromFontEnc(wxFontMapperBase::Get()->CharsetToEncoding(name, false) ) , normalization) ;
|
||||
}
|
||||
#endif
|
||||
|
||||
wxMBConv_cf(wxFontEncoding encoding)
|
||||
wxMBConv_cf(wxFontEncoding encoding, NormalizationForm normalization = ToWChar_C )
|
||||
{
|
||||
Init( wxCFStringEncFromFontEnc(encoding) );
|
||||
Init( wxCFStringEncFromFontEnc(encoding) , normalization);
|
||||
}
|
||||
|
||||
virtual ~wxMBConv_cf()
|
||||
{
|
||||
}
|
||||
|
||||
void Init( CFStringEncoding encoding)
|
||||
void Init( CFStringEncoding encoding, NormalizationForm normalization )
|
||||
{
|
||||
m_encoding = encoding ;
|
||||
m_normalization = normalization;
|
||||
}
|
||||
|
||||
virtual size_t ToWChar(wchar_t * dst, size_t dstSize, const char * src, size_t srcSize = wxNO_LEN) const wxOVERRIDE;
|
||||
@@ -333,9 +342,19 @@ public:
|
||||
}
|
||||
|
||||
private:
|
||||
NormalizationForm m_normalization ;
|
||||
CFStringEncoding m_encoding ;
|
||||
};
|
||||
|
||||
// This "decomposing" converter is used as wxConvFileName in wxOSX.
|
||||
class wxMBConvD_cf : public wxMBConv_cf
|
||||
{
|
||||
public:
|
||||
wxMBConvD_cf(wxFontEncoding encoding) : wxMBConv_cf(encoding, (NormalizationForm) (ToWChar_C | FromWChar_D) )
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
// corresponding class for holding UniChars (native unicode characters)
|
||||
|
||||
class WXDLLIMPEXP_BASE wxMacUniCharBuffer
|
||||
|
Reference in New Issue
Block a user