From 5096757411fa0869e7ca6d1a45949df54f1c155c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=A1clav=20Slav=C3=ADk?= Date: Mon, 5 May 2008 10:52:30 +0000 Subject: [PATCH] fixed   handling in wxHtmlWinParser, broken by TAB-handling changes (bug #1957041) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@53456 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/html/winpars.cpp | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/html/winpars.cpp b/src/html/winpars.cpp index 9b5adbdfb1..f21cf9e8fb 100644 --- a/src/html/winpars.cpp +++ b/src/html/winpars.cpp @@ -345,17 +345,20 @@ wxFSFile *wxHtmlWinParser::OpenURL(wxHtmlURLType type, return GetFS()->OpenFile(myurl, flags); } -void wxHtmlWinParser::AddText(const wxString& txt) -{ - #define NBSP_UNICODE_VALUE (wxChar(160)) +#define NBSP_UNICODE_VALUE (wxChar(160)) #if !wxUSE_UNICODE - if ( m_nbsp == 0 ) - m_nbsp = GetEntitiesParser()->GetCharForCode(NBSP_UNICODE_VALUE); #define CUR_NBSP_VALUE m_nbsp #else #define CUR_NBSP_VALUE NBSP_UNICODE_VALUE #endif +void wxHtmlWinParser::AddText(const wxString& txt) +{ +#if !wxUSE_UNICODE + if ( m_nbsp == 0 ) + m_nbsp = GetEntitiesParser()->GetCharForCode(NBSP_UNICODE_VALUE); +#endif + if ( m_whitespaceMode == Whitespace_Normal ) { int templen = 0; @@ -385,7 +388,7 @@ void wxHtmlWinParser::AddText(const wxString& txt) while (i < end) { size_t x = 0; - wxChar d = *i; + const wxChar d = temp[templen++] = *i; if ((d == wxT('\n')) || (d == wxT('\r')) || (d == wxT(' ')) || (d == wxT('\t'))) { ++i, ++x; @@ -402,11 +405,6 @@ void wxHtmlWinParser::AddText(const wxString& txt) ++i; } - if (d == CUR_NBSP_VALUE) - d = ' '; - - temp[templen++] = d; - if (x) { temp[templen-1] = wxT(' '); @@ -445,6 +443,12 @@ void wxHtmlWinParser::FlushWordBuf(wxChar *buf, int& len) { buf[len] = 0; + for ( int i = 0; i < len; i++ ) + { + if ( buf[i] == CUR_NBSP_VALUE ) + buf[i] = ' '; + } + #if !wxUSE_UNICODE if (m_EncConv) m_EncConv->Convert(buf);