void LayoutTableRow::layout() { ASSERT(needsLayout()); LayoutAnalyzer::Scope analyzer(*this); // Table rows do not add translation. LayoutState state(*this, LayoutSize()); for (LayoutTableCell* cell = firstCell(); cell; cell = cell->nextCell()) { SubtreeLayoutScope layouter(*cell); if (!cell->needsLayout()) cell->markForPaginationRelayoutIfNeeded(layouter); if (cell->needsLayout()) cell->layout(); } m_overflow.clear(); addVisualEffectOverflow(); // We do not call addOverflowFromCell here. The cell are laid out to be // measured above and will be sized correctly in a follow-up phase. // We only ever need to issue paint invalidations if our cells didn't, which means 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 invalidate paints in setStyle() because we had a layout hint. if (selfNeedsLayout()) { for (LayoutTableCell* cell = firstCell(); cell; cell = cell->nextCell()) { // FIXME: Is this needed when issuing paint invalidations after layout? cell->setShouldDoFullPaintInvalidation(); } } // LayoutTableSection::layoutRows will set our logical height and width later, so it calls updateLayerTransform(). clearNeedsLayout(); }