diff --git a/Source/HtmlRenderer/Core/Dom/CssLayoutEngineTable.cs b/Source/HtmlRenderer/Core/Dom/CssLayoutEngineTable.cs index 79627161a..c0e4186af 100644 --- a/Source/HtmlRenderer/Core/Dom/CssLayoutEngineTable.cs +++ b/Source/HtmlRenderer/Core/Dom/CssLayoutEngineTable.cs @@ -611,6 +611,7 @@ private void LayoutCells(RGraphics g) double cury = starty; double maxRight = startx; double maxBottom = 0f; + double maxHeaderBottom = 0f; int currentrow = 0; // change start X by if the table should align to center or right @@ -634,6 +635,7 @@ private void LayoutCells(RGraphics g) for (int j = 0; j < row.Boxes.Count; j++) { CssBox cell = row.Boxes[j]; + var isheader = (cell.HtmlTag.Name == "th"); if (curCol >= _columnWidths.Length) break; @@ -660,6 +662,11 @@ private void LayoutCells(RGraphics g) maxRight = Math.Max(maxRight, cell.ActualRight); curCol++; curx = cell.ActualRight + GetHorizontalSpacing(); + + if (isheader) + { + maxHeaderBottom = maxBottom; + } } foreach (CssBox cell in row.Boxes) @@ -708,6 +715,11 @@ private void LayoutCells(RGraphics g) maxRight = Math.Max(maxRight, _tableBox.Location.X + _tableBox.ActualWidth); _tableBox.ActualRight = maxRight + GetHorizontalSpacing() + _tableBox.ActualBorderRightWidth; _tableBox.ActualBottom = Math.Max(maxBottom, starty) + GetVerticalSpacing() + _tableBox.ActualBorderBottomWidth; + +#warning EFR : Added headerbox calculation + _headerBox.Location = _tableBox.Location; + _headerBox.ActualRight = maxRight + GetHorizontalSpacing() + _headerBox.ActualBorderRightWidth; + _headerBox.ActualBottom = Math.Max(maxHeaderBottom, starty) + GetVerticalSpacing() + _headerBox.ActualBorderBottomWidth; } /// @@ -1036,4 +1048,4 @@ private double GetVerticalSpacing() #endregion } -} \ No newline at end of file +}