X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e388dc214c74a5ac2d3c4d5f810fcfbd5f7fa01a..9a6aafe0039fef580ca1bfcf0e87c1ba8e2953ba:/src/html/m_tables.cpp?ds=sidebyside diff --git a/src/html/m_tables.cpp b/src/html/m_tables.cpp index c5d63e6020..8540af13f2 100644 --- a/src/html/m_tables.cpp +++ b/src/html/m_tables.cpp @@ -666,10 +666,12 @@ TAG_HANDLER_BEGIN(TABLE, "TABLE,TR,TD,TH") TAG_HANDLER_VARS wxHtmlTableCell* m_Table; wxString m_tAlign, m_rAlign; + wxHtmlContainerCell *m_enclosingContainer; TAG_HANDLER_CONSTR(TABLE) { m_Table = NULL; + m_enclosingContainer = NULL; m_tAlign = m_rAlign = wxEmptyString; } @@ -682,9 +684,8 @@ TAG_HANDLER_BEGIN(TABLE, "TABLE,TR,TD,TH") if (tag.GetName() == wxT("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()); @@ -718,11 +719,12 @@ TAG_HANDLER_BEGIN(TABLE, "TABLE,TR,TD,TH") ParseInner(tag); m_WParser->SetAlign(oldAlign); - m_WParser->SetContainer(oldcont); + m_WParser->SetContainer(m_enclosingContainer); m_WParser->CloseContainer(); m_Table = oldt; - return true; + + return true; // ParseInner() called } @@ -764,8 +766,19 @@ TAG_HANDLER_BEGIN(TABLE, "TABLE,TR,TD,TH") m_WParser->SetAlign(wxHTML_ALIGN_CENTER); m_WParser->OpenContainer(); + + ParseInner(tag); + + // set the current container back to the enclosing one so that + // text outside of and isn't included in any cell + // (this happens often enough in practice because it's common + // to use whitespace between and the next ): + m_WParser->SetContainer(m_enclosingContainer); + + return true; // ParseInner() called } } + return false; }