X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d3c7fc996a73e9f6a83067bc28a3c5581a3fee65..e828d3fc808bf4b76e256afe8da5d268fb684735:/src/html/m_tables.cpp diff --git a/src/html/m_tables.cpp b/src/html/m_tables.cpp index 7f965d7e0c..c5d63e6020 100644 --- a/src/html/m_tables.cpp +++ b/src/html/m_tables.cpp @@ -15,7 +15,8 @@ #if wxUSE_HTML && wxUSE_STREAMS -#ifndef WXPRECOMP +#ifndef WX_PRECOMP + #include "wx/wxcrtvararg.h" #endif #include "wx/html/forcelnk.h" @@ -136,7 +137,11 @@ wxHtmlTableCell::wxHtmlTableCell(wxHtmlContainerCell *parent, const wxHtmlTag& t /* scan params: */ if (tag.HasParam(wxT("BGCOLOR"))) + { tag.GetParamAsColour(wxT("BGCOLOR"), &m_tBkg); + if (m_tBkg.Ok()) + SetBackgroundColour(m_tBkg); + } if (tag.HasParam(wxT("VALIGN"))) m_tValign = tag.GetParam(wxT("VALIGN")); else @@ -277,14 +282,19 @@ void wxHtmlTableCell::AddCell(wxHtmlContainerCell *cell, const wxHtmlTag& tag) if (wd[wd.length()-1] == wxT('%')) { - wxSscanf(wd.c_str(), wxT("%i%%"), &m_ColsInfo[c].width); - m_ColsInfo[c].units = wxHTML_UNITS_PERCENT; + if ( wxSscanf(wd.c_str(), wxT("%i%%"), &m_ColsInfo[c].width) == 1 ) + { + m_ColsInfo[c].units = wxHTML_UNITS_PERCENT; + } } else { - wxSscanf(wd.c_str(), wxT("%i"), &m_ColsInfo[c].width); - m_ColsInfo[c].width = (int)(m_PixelScale * (double)m_ColsInfo[c].width); - m_ColsInfo[c].units = wxHTML_UNITS_PIXELS; + long width; + if ( wd.ToLong(&width) ) + { + m_ColsInfo[c].width = (int)(m_PixelScale * (double)width); + m_ColsInfo[c].units = wxHTML_UNITS_PIXELS; + } } } } @@ -571,6 +581,10 @@ void wxHtmlTableCell::Layout(int w) m_ColsInfo[i].leftpos = wpos; wpos += m_ColsInfo[i].pixwidth + m_Spacing; } + + // add the remaining space to the last column + if (m_NumCols > 0 && wpos < m_Width) + m_ColsInfo[m_NumCols-1].pixwidth += m_Width - wpos; } /* 3. sub-layout all cells: */ @@ -672,7 +686,7 @@ TAG_HANDLER_BEGIN(TABLE, "TABLE,TR,TD,TH") oldcont = c = m_WParser->OpenContainer(); - m_Table = new wxHtmlTableCell(c, tag); + m_Table = new wxHtmlTableCell(c, tag, m_WParser->GetPixelScale()); // width: {