Corrected code that re-encodes the book title.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73762 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Julian Smart
2013-04-01 19:38:54 +00:00
parent f75b1bd31c
commit 6a63bdc860

View File

@@ -500,6 +500,18 @@ bool wxHtmlHelpData::AddBookParam(const wxFSFile& bookfile,
const wxString& indexfile, const wxString& deftopic,
const wxString& path)
{
#if wxUSE_WCHAR_T
#if wxUSE_UNICODE
#define CORRECT_STR(str, conv) \
str = wxString((str).mb_str(wxConvISO8859_1), conv)
#else
#define CORRECT_STR(str, conv) \
str = wxString((str).wc_str(conv), wxConvLocal)
#endif
#else
#define CORRECT_STR(str, conv)
#endif
wxFileSystem fsys;
wxFSFile *fi;
wxHtmlBookRecord *bookr;
@@ -517,7 +529,16 @@ bool wxHtmlHelpData::AddBookParam(const wxFSFile& bookfile,
return true; // book is (was) loaded
}
bookr = new wxHtmlBookRecord(bookfile.GetLocation(), fsys.GetPath(), title, deftopic);
wxString title1 = title;
if (encoding != wxFONTENCODING_SYSTEM)
{
wxCSConv conv(encoding);
CORRECT_STR(title1, conv);
if (title1.IsEmpty() && !title.IsEmpty())
title1 = title;
}
bookr = new wxHtmlBookRecord(bookfile.GetLocation(), fsys.GetPath(), title1, deftopic);
wxHtmlHelpDataItem *bookitem = new wxHtmlHelpDataItem;
bookitem->level = 0;
@@ -574,13 +595,6 @@ bool wxHtmlHelpData::AddBookParam(const wxFSFile& bookfile,
// differences here and also convert to wxConvLocal in ANSI build
if (encoding != wxFONTENCODING_SYSTEM)
{
#if wxUSE_UNICODE
#define CORRECT_STR(str, conv) \
str = wxString((str).mb_str(wxConvISO8859_1), conv)
#else
#define CORRECT_STR(str, conv) \
str = wxString((str).wc_str(conv), wxConvLocal)
#endif
wxCSConv conv(encoding);
size_t IndexCnt = m_index.size();
size_t ContentsCnt = m_contents.size();
@@ -685,19 +699,6 @@ bool wxHtmlHelpData::AddBook(const wxString& book)
enc = wxFontMapper::Get()->CharsetToEncoding(charset);
#endif
// No conversion was done on the title yet; at least
// test for a common case.
if (charset == wxT("utf-8") && !title.IsEmpty())
{
char *buf = new char[title.Length()+1];
size_t i;
for (i = 0; i < title.Length(); i++)
buf[i] = (char) title[i];
buf[i] = 0;
title = wxString::FromUTF8(buf);
delete[] buf;
}
bool rtval = AddBookParam(*fi, enc,
title, contents, index, start, fsys.GetPath());
delete fi;