void RenderTableRow::layout() { ASSERT(needsLayout()); // Table rows do not add translation. LayoutStateMaintainer statePusher(view(), this, IntSize()); for (RenderObject* child = firstChild(); child; child = child->nextSibling()) { if (child->isTableCell()) { RenderTableCell* cell = static_cast<RenderTableCell*>(child); if (child->needsLayout()) { cell->calcVerticalMargins(); cell->layout(); } } } // We only ever need to repaint if our cells didn't, which menas that they didn't need // layout, so we know that our bounds didn't change. This code is just making up for // the fact that we did not repaint in setStyle() because we had a layout hint. // We cannot call repaint() because our absoluteClippedOverflowRect() is taken from the // parent table, and being mid-layout, that is invalid. Instead, we repaint our cells. if (selfNeedsLayout() && checkForRepaintDuringLayout()) { for (RenderObject* child = firstChild(); child; child = child->nextSibling()) { if (child->isTableCell()) child->repaint(); } } statePusher.pop(); setNeedsLayout(false); }
void RenderTableRow::layout() { ASSERT(needsLayout()); ASSERT(minMaxKnown()); for (RenderObject* child = firstChild(); child; child = child->nextSibling()) { if (child->isTableCell()) { RenderTableCell* cell = static_cast<RenderTableCell*>(child); if (child->needsLayout()) { cell->calcVerticalMargins(); cell->layout(); } } } setNeedsLayout(false); }