Index: Source/core/rendering/RenderTableSection.cpp |
diff --git a/Source/core/rendering/RenderTableSection.cpp b/Source/core/rendering/RenderTableSection.cpp |
index 282e7fa45ab0745dbbfa2c5ae61cf3c6524ae5f8..322e51b4c580b2100d874aa06ce05b45e9204eb4 100644 |
--- a/Source/core/rendering/RenderTableSection.cpp |
+++ b/Source/core/rendering/RenderTableSection.cpp |
@@ -473,13 +473,15 @@ void RenderTableSection::updateBaselineForCell(RenderTableCell* cell, unsigned r |
if (!cell->isBaselineAligned()) |
return; |
- LayoutUnit baselinePosition = cell->cellBaselinePosition(); |
- if (baselinePosition > cell->borderBefore() + cell->paddingBefore()) { |
+ // Calculating the row's baseline excluding intrinsic padding because row's baseline will come into it's right |
+ // position when row's baseline would be calculated for the cell which introduced intrinsic padding for other cells. |
+ LayoutUnit baselinePosition = cell->cellBaselinePosition() - cell->intrinsicPaddingBefore(); |
+ if (baselinePosition > cell->borderBefore() + (cell->paddingBefore() - cell->intrinsicPaddingBefore())) { |
m_grid[row].baseline = max(m_grid[row].baseline, baselinePosition); |
int cellStartRowBaselineDescent = 0; |
if (cell->rowSpan() == 1) { |
- baselineDescent = max(baselineDescent, cell->logicalHeightForRowSizing() - (baselinePosition - cell->intrinsicPaddingBefore())); |
+ baselineDescent = max(baselineDescent, cell->logicalHeightForRowSizing() - baselinePosition); |
cellStartRowBaselineDescent = baselineDescent; |
} |
m_rowPos[row + 1] = max<int>(m_rowPos[row + 1], m_rowPos[row] + m_grid[row].baseline + cellStartRowBaselineDescent); |