WebCore:
[WebKit-https.git] / WebCore / rendering / RenderTableCell.cpp
index eb7e2bf..b60427b 100644 (file)
@@ -209,22 +209,15 @@ bool RenderTableCell::absolutePosition(int& xPos, int& yPos, bool fixed) const
 
 int RenderTableCell::baselinePosition(bool /*firstLine*/, bool /*isRootLineBox*/) const
 {
-    RenderObject* o = firstChild();
-    int offset = paddingTop() + borderTop();
-    
-    if (!o)
-        return offset + contentHeight();
-    while (o->firstChild() && !o->isReplaced()) {
-        if (!o->isInline())
-            offset += o->paddingTop() + o->borderTop();
-        o = o->firstChild();
-    }
-    
-    if (!o->isInline())
-        return paddingTop() + borderTop() + contentHeight();
+    // <http://www.w3.org/TR/2007/CR-CSS21-20070719/tables.html#height-layout>: The baseline of a cell is the baseline of
+    // the first in-flow line box in the cell, or the first in-flow table-row in the cell, whichever comes first. If there
+    // is no such line box or table-row, the baseline is the bottom of content edge of the cell box.
+
+    int firstLineBaseline = getBaselineOfFirstLineBox();
+    if (firstLineBaseline != -1)
+        return firstLineBaseline;
 
-    offset += o->baselinePosition(true);
-    return offset;
+    return paddingTop() + borderTop() + contentHeight();
 }
 
 void RenderTableCell::setStyle(RenderStyle* newStyle)