X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/314260fbd07ecebb43c60d147e1f4580a7159e42..0b72db08a78016b2cf89a454b307fb71942e8704:/src/html/htmlcell.cpp diff --git a/src/html/htmlcell.cpp b/src/html/htmlcell.cpp index 84b06fddf6..71633156ea 100644 --- a/src/html/htmlcell.cpp +++ b/src/html/htmlcell.cpp @@ -73,11 +73,27 @@ bool wxHtmlCell::AdjustPagebreak(int *pagebreak) wxHtmlWordCell::wxHtmlWordCell(const wxString& word, wxDC& dc) : wxHtmlCell() { m_Word = word; - m_Word.Replace(" ", " ", TRUE); - m_Word.Replace(""", "\"", TRUE); - m_Word.Replace("<", "<", TRUE); - m_Word.Replace(">", ">", TRUE); - m_Word.Replace("&", "&", TRUE); + + if (m_Word.Find(wxT('&')) != -1) + { + static wxChar* substitutions[][3] = + { + { wxT(" "), wxT("  "), wxT(" ") }, + { wxT("©"), wxT("© "), wxT("(c)") }, + { wxT("""), wxT("" "), wxT("\"") }, + { wxT("<"), wxT("< "), wxT("<") }, + { wxT(">"), wxT("> "), wxT(">") }, + { wxT("&"), wxT("& "), wxT("&") /*this one should be last one*/ }, + { NULL, NULL, NULL } + }; + + for (int i = 0; substitutions[i][0] != NULL; i++) + { + m_Word.Replace(substitutions[i][0], substitutions[i][2], TRUE); + m_Word.Replace(substitutions[i][1], substitutions[i][2], TRUE); + } + } + dc.GetTextExtent(m_Word, &m_Width, &m_Height, &m_Descent); SetCanLiveOnPagebreak(FALSE); } @@ -381,11 +397,11 @@ void wxHtmlContainerCell::SetWidthFloat(const wxHtmlTag& tag) wxString wd = tag.GetParam("WIDTH"); if (wd[wd.Length()-1] == '%') { - sscanf(wd.c_str(), "%i%%", &wdi); + wxSscanf(wd.c_str(), wxT("%i%%"), &wdi); SetWidthFloat(wdi, wxHTML_UNITS_PERCENT); } else { - sscanf(wd.c_str(), "%i", &wdi); + wxSscanf(wd.c_str(), wxT("%i"), &wdi); SetWidthFloat(wdi, wxHTML_UNITS_PIXELS); } }