Index: Source/core/rendering/RenderTableSection.cpp |
diff --git a/Source/core/rendering/RenderTableSection.cpp b/Source/core/rendering/RenderTableSection.cpp |
index dd64e408475da0a47fa7b9d4df4984ceadeacf2d..95be1c543e2c61df2650eb71615421381c936d5e 100644 |
--- a/Source/core/rendering/RenderTableSection.cpp |
+++ b/Source/core/rendering/RenderTableSection.cpp |
@@ -324,10 +324,14 @@ int RenderTableSection::calcRowLogicalHeight() |
if (baselinePosition > cell->borderBefore() + cell->paddingBefore()) { |
m_grid[cellStartRow].baseline = max(m_grid[cellStartRow].baseline, baselinePosition); |
// The descent of a cell that spans multiple rows does not affect the height of the first row it spans, so don't let it |
- // become the baseline descent applied to the rest of the row. |
- if (cell->rowSpan() == 1) |
+ // become the baseline descent applied to the rest of the row. Also we don't account for the baseline descent of |
+ // non-spanning cells when computing a spanning cell's extent. |
+ int cellStartRowBaselineDescent = 0; |
+ if (cell->rowSpan() == 1) { |
baselineDescent = max(baselineDescent, cellLogicalHeight - (baselinePosition - cell->intrinsicPaddingBefore())); |
- m_rowPos[cellStartRow + 1] = max<int>(m_rowPos[cellStartRow + 1], m_rowPos[cellStartRow] + m_grid[cellStartRow].baseline + baselineDescent); |
+ cellStartRowBaselineDescent = baselineDescent; |
+ } |
+ m_rowPos[cellStartRow + 1] = max<int>(m_rowPos[cellStartRow + 1], m_rowPos[cellStartRow] + m_grid[cellStartRow].baseline + cellStartRowBaselineDescent); |
} |
} |
} |