Improve handling of wxUSE_FONTMAP==0 case with wxMSW

wxEncodingToCodepage() can be used when wxUSE_FONTMAP==0
Also avoid unreachable code warning with MSVC when using whole program optimization

(cherry picked from commit 64f1d760c6)
This commit is contained in:
Paul Cornett
2016-12-22 22:09:41 -08:00
parent f90b768ea0
commit e7443259de
2 changed files with 10 additions and 8 deletions

View File

@@ -2535,8 +2535,8 @@ bool wxMBConv_iconv::IsUTF8() const
// from utils.cpp
#if wxUSE_FONTMAP
extern WXDLLIMPEXP_BASE long wxCharsetToCodepage(const char *charset);
extern WXDLLIMPEXP_BASE long wxEncodingToCodepage(wxFontEncoding encoding);
#endif
extern WXDLLIMPEXP_BASE long wxEncodingToCodepage(wxFontEncoding encoding);
class wxMBConv_win32 : public wxMBConv
{
@@ -2560,13 +2560,13 @@ public:
m_CodePage = wxCharsetToCodepage(name);
m_minMBCharWidth = 0;
}
#endif // wxUSE_FONTMAP
wxMBConv_win32(wxFontEncoding encoding)
{
m_CodePage = wxEncodingToCodepage(encoding);
m_minMBCharWidth = 0;
}
#endif // wxUSE_FONTMAP
virtual size_t MB2WC(wchar_t *buf, const char *psz, size_t n) const
{
@@ -3185,13 +3185,13 @@ wxMBConv *wxCSConv::DoCreate() const
#if wxUSE_FONTMAP
wxMBConv_win32 *conv = m_name ? new wxMBConv_win32(m_name)
: new wxMBConv_win32(m_encoding);
#else
wxMBConv_win32* conv = new wxMBConv_win32(m_encoding);
#endif
if ( conv->IsOk() )
return conv;
delete conv;
#else
return NULL;
#endif
}
#endif // wxHAVE_WIN32_MB2WC

View File

@@ -36,6 +36,7 @@
#include "wx/dynload.h"
#include "wx/scopeguard.h"
#include "wx/filename.h"
#include "wx/fontenc.h"
#include "wx/confbase.h" // for wxExpandEnvVars()
@@ -1607,9 +1608,6 @@ extern WXDLLIMPEXP_BASE long wxEncodingToCharset(wxFontEncoding encoding)
// looks up the vlaues in the registry and the new one which is more
// politically correct and has more chances to work on other Windows versions
// as well but the old version is still needed for !wxUSE_FONTMAP case
#if wxUSE_FONTMAP
#include "wx/fontmap.h"
extern WXDLLIMPEXP_BASE long wxEncodingToCodepage(wxFontEncoding encoding)
{
@@ -1694,6 +1692,10 @@ extern WXDLLIMPEXP_BASE long wxEncodingToCodepage(wxFontEncoding encoding)
return (long) ret;
}
#if wxUSE_FONTMAP
#include "wx/fontmap.h"
extern long wxCharsetToCodepage(const char *name)
{
// first get the font encoding for this charset