]> git.saurik.com Git - wxWidgets.git/blobdiff - src/html/m_tables.cpp
add very simple (but already exposing many problems) wxIPC benchmark
[wxWidgets.git] / src / html / m_tables.cpp
index 54f62b5d108b3379a590a681674e694a054faba2..c5d63e602002617c15c584f880bf7b94904f0ba8 100644 (file)
@@ -137,7 +137,11 @@ wxHtmlTableCell::wxHtmlTableCell(wxHtmlContainerCell *parent, const wxHtmlTag& t
 
     /* scan params: */
     if (tag.HasParam(wxT("BGCOLOR")))
 
     /* scan params: */
     if (tag.HasParam(wxT("BGCOLOR")))
+    {
         tag.GetParamAsColour(wxT("BGCOLOR"), &m_tBkg);
         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
     if (tag.HasParam(wxT("VALIGN")))
         m_tValign = tag.GetParam(wxT("VALIGN"));
     else
@@ -278,14 +282,19 @@ void wxHtmlTableCell::AddCell(wxHtmlContainerCell *cell, const wxHtmlTag& tag)
 
             if (wd[wd.length()-1] == wxT('%'))
             {
 
             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
             {
             }
             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;
+                }
             }
         }
     }
             }
         }
     }
@@ -572,6 +581,10 @@ void wxHtmlTableCell::Layout(int w)
             m_ColsInfo[i].leftpos = wpos;
             wpos += m_ColsInfo[i].pixwidth + m_Spacing;
         }
             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: */
     }
 
     /* 3.  sub-layout all cells: */
@@ -673,7 +686,7 @@ TAG_HANDLER_BEGIN(TABLE, "TABLE,TR,TD,TH")
 
             oldcont = c = m_WParser->OpenContainer();
 
 
             oldcont = c = m_WParser->OpenContainer();
 
-            m_Table = new wxHtmlTableCell(c, tag);
+            m_Table = new wxHtmlTableCell(c, tag, m_WParser->GetPixelScale());
 
             // width:
             {
 
             // width:
             {