From 8c571f4650928d1aef4b35b3fcee713f7e8801af Mon Sep 17 00:00:00 2001 From: =?utf8?q?V=C3=A1clav=20Slav=C3=ADk?= Date: Wed, 16 Jul 2003 13:00:58 +0000 Subject: [PATCH] tables can no longer be smaller than sum of their columns git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@22014 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/html/m_tables.cpp | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/src/html/m_tables.cpp b/src/html/m_tables.cpp index aa2292aa2b..2700bee9e0 100644 --- a/src/html/m_tables.cpp +++ b/src/html/m_tables.cpp @@ -353,8 +353,6 @@ void wxHtmlTableCell::ComputeMinMaxWidths() { if (m_NumCols == 0 || m_ColsInfo[0].minWidth != -1) return; - int left, right, width; - for (int c = 0; c < m_NumCols; c++) { for (int r = 0; r < m_NumRows; r++) @@ -363,11 +361,9 @@ void wxHtmlTableCell::ComputeMinMaxWidths() if (cell.flag == cellUsed) { cell.cont->Layout(2*m_Padding + 1); - cell.cont->GetHorizontalConstraints(&left, &right); - width = right - left; + int width = cell.cont->GetWidth(); width -= (cell.colspan-1) * m_Spacing; // HTML 4.0 says it is acceptable to distribute min/max - // width of spanning cells evently width /= cell.colspan; for (int j = 0; j < cell.colspan; j++) if (width > m_ColsInfo[c+j].minWidth) @@ -437,13 +433,18 @@ void wxHtmlTableCell::Layout(int w) wpix -= wtemp; // 1c. setup defalut columns (no width specification supplied): - // NOTE! This algorithm doesn't conform to HTML standard : it assigns equal widths - // instead of optimal + // FIXME: This algorithm doesn't conform to HTML standard : it assigns + // equal widths instead of optimal for (i = j = 0; i < m_NumCols; i++) if (m_ColsInfo[i].width == 0) j++; for (i = 0; i < m_NumCols; i++) if (m_ColsInfo[i].width == 0) - m_ColsInfo[i].pixwidth = wpix / j; + { + // FIXME: this is not optimal, because if we allocate more than + // wpix/j pixels to one column, we should try to allocate + // smaller place to other columns + m_ColsInfo[i].pixwidth = wxMax(wpix/j, m_ColsInfo[i].minWidth); + } } /* 2. compute positions of columns: */ @@ -509,6 +510,15 @@ void wxHtmlTableCell::Layout(int w) m_Height = ypos[m_NumRows]; delete[] ypos; } + + /* 4. adjust table's width if it was too small: */ + if (m_NumCols > 0) + { + int twidth = m_ColsInfo[m_NumCols-1].leftpos + + m_ColsInfo[m_NumCols-1].pixwidth + m_Spacing; + if (twidth > m_Width) + m_Width = twidth; + } } -- 2.45.2