On Tue, Oct 19, 2010 at 11:29 AM, David Hyatt <
hyatt@apple.com> wrote:
(1) Make sure any layout methods you call do setNeedsLayout(false) at the end of them.
(2) Look for any early returns in any of your layout methods, since maybe you did an early return causing the setNeedsLayout(false) to be missed.
(3) Make sure you aren't dirtying a child for a re-layout without immediately doing that re-layout, e.g., don't call setChildNeedsLayout(true, false) on some child and then bail without doing a layout.
While this is helpful, the current code (in the patch) follows these
principles (except when RenderBlock::layout() is called last and so
setNeedsLayout(false) is already done). The problem I have is an
*ancestor* is marked as having a child needing layout during the
layout process. When then MathML layout finishes, the MathML
rendering objects do not need layout but the parent is marked with
m_normalChildNeedsLayout set to true.