X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e3c7fd79d081ccd02dc1a4ed601f4f1ea7b62e69..2049d9b54bce5282ae4cfcfbdb48aecf05426140:/src/html/winpars.cpp diff --git a/src/html/winpars.cpp b/src/html/winpars.cpp index 66b8871b72..bf62ed1893 100644 --- a/src/html/winpars.cpp +++ b/src/html/winpars.cpp @@ -201,6 +201,7 @@ void wxHtmlWinParser::AddText(const wxChar* txt) lng = wxStrlen(txt); register wxChar d; int templen = 0; + wxChar nbsp = GetEntitiesParser()->GetCharForCode(160 /* nbsp */); if (lng+1 > m_tmpStrBufSize) { @@ -233,22 +234,34 @@ void wxHtmlWinParser::AddText(const wxChar* txt) { temp[templen-1] = wxT(' '); temp[templen] = 0; + if (templen == 1) continue; templen = 0; if (m_EncConv) m_EncConv->Convert(temp); - c = new wxHtmlWordCell(GetEntitiesParser()->Parse(temp), *(GetDC())); + wxString str = GetEntitiesParser()->Parse(temp); + size_t len = str.Len(); + for (size_t j = 0; j < len; j++) + if (str.GetChar(j) == nbsp) + str[j] = wxT(' '); + c = new wxHtmlWordCell(str, *(GetDC())); if (m_UseLink) c->SetLink(m_Link); m_Container->InsertCell(c); m_tmpLastWasSpace = TRUE; } } - if (templen) + + if (templen && (templen > 1 || temp[0] != wxT(' '))) { temp[templen] = 0; if (m_EncConv) m_EncConv->Convert(temp); - c = new wxHtmlWordCell(GetEntitiesParser()->Parse(temp), *(GetDC())); + wxString str = GetEntitiesParser()->Parse(temp); + size_t len = str.Len(); + for (size_t j = 0; j < len; j++) + if (str.GetChar(j) == nbsp) + str[j] = wxT(' '); + c = new wxHtmlWordCell(str, *(GetDC())); if (m_UseLink) c->SetLink(m_Link); m_Container->InsertCell(c);