wxHTML: don't include extra whitespace in table cells

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_8_BRANCH@56590 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Václav Slavík
2008-10-30 07:25:18 +00:00
parent 133932137d
commit 3a23d484e3
2 changed files with 19 additions and 5 deletions

View File

@@ -102,7 +102,8 @@ All (GUI):
Polish Pro input. Polish Pro input.
- Fixed wxHtmlWindow::SelectionToText() to correctly insert newlines after - Fixed wxHtmlWindow::SelectionToText() to correctly insert newlines after
single-cell paragraphs. single-cell paragraphs.
- Fixed wxHTML's line breaks handling in <pre> blocks broken in 2.8.8 (#10120) - Fixed wxHTML's line breaks handling in <pre> blocks broken in 2.8.8 (#10120).
- wxHTML: don't include extra whitespace in table cells.
All (Unix): All (Unix):

View File

@@ -665,10 +665,12 @@ TAG_HANDLER_BEGIN(TABLE, "TABLE,TR,TD,TH")
TAG_HANDLER_VARS TAG_HANDLER_VARS
wxHtmlTableCell* m_Table; wxHtmlTableCell* m_Table;
wxString m_tAlign, m_rAlign; wxString m_tAlign, m_rAlign;
wxHtmlContainerCell *m_enclosingContainer;
TAG_HANDLER_CONSTR(TABLE) TAG_HANDLER_CONSTR(TABLE)
{ {
m_Table = NULL; m_Table = NULL;
m_enclosingContainer = NULL;
m_tAlign = m_rAlign = wxEmptyString; m_tAlign = m_rAlign = wxEmptyString;
} }
@@ -681,9 +683,8 @@ TAG_HANDLER_BEGIN(TABLE, "TABLE,TR,TD,TH")
if (tag.GetName() == wxT("TABLE")) if (tag.GetName() == wxT("TABLE"))
{ {
wxHtmlTableCell *oldt = m_Table; wxHtmlTableCell *oldt = m_Table;
wxHtmlContainerCell *oldcont;
oldcont = c = m_WParser->OpenContainer(); m_enclosingContainer = c = m_WParser->OpenContainer();
m_Table = new wxHtmlTableCell(c, tag, m_WParser->GetPixelScale()); m_Table = new wxHtmlTableCell(c, tag, m_WParser->GetPixelScale());
@@ -717,11 +718,12 @@ TAG_HANDLER_BEGIN(TABLE, "TABLE,TR,TD,TH")
ParseInner(tag); ParseInner(tag);
m_WParser->SetAlign(oldAlign); m_WParser->SetAlign(oldAlign);
m_WParser->SetContainer(oldcont); m_WParser->SetContainer(m_enclosingContainer);
m_WParser->CloseContainer(); m_WParser->CloseContainer();
m_Table = oldt; m_Table = oldt;
return true;
return true; // ParseInner() called
} }
@@ -763,8 +765,19 @@ TAG_HANDLER_BEGIN(TABLE, "TABLE,TR,TD,TH")
m_WParser->SetAlign(wxHTML_ALIGN_CENTER); m_WParser->SetAlign(wxHTML_ALIGN_CENTER);
m_WParser->OpenContainer(); m_WParser->OpenContainer();
ParseInner(tag);
// set the current container back to the enclosing one so that
// text outside of <th> and <td> isn't included in any cell
// (this happens often enough in practice because it's common
// to use whitespace between </td> and the next <td>):
m_WParser->SetContainer(m_enclosingContainer);
return true; // ParseInner() called
} }
} }
return false; return false;
} }