Created attachment 360964 [details] testcase This assertion was added in bug 363247 and I'm hitting it a lot. ###!!! ASSERTION: bits don't correspond to style change reason: 'aIntrinsicDirty != eStyleChange || aBitToAdd == NS_FRAME_IS_DIRTY', file /Users/jruderman/central/layout/base/nsPresShell.cpp, line 3126
It's an eStyleChange with NS_FRAME_HAS_DIRTY_CHILDREN, yeah. The caller is nsMathMLContainerFrame::ReLayoutChildren (which always does eStyleChange) and its caller is nsMathMLmathBlockFrame::InsertFrames.
Given that this function is marking ancestors with NS_FRAME_IS_DIRTY, it seems like it's effectively saying the frame is dirty.
It's not marking ancestors of the frame it passes to FrameNeedsReflow with NS_FRAME_IS_DIRTY, though.
Assignee: nobody → dbaron
Status: NEW → ASSIGNED
Er, right... I'd looked a bit more since comment 2... but the difference seems incredibly minor, and I don't see any reason why an operation on a child frame should cause a frame many frames up the tree to get NS_FRAME_HAS_DIRTY_CHILDREN rather than NS_FRAME_IS_DIRTY. If we need to do this much damage, we may as well be consistent about it.
I could live with that, I guess.
Created attachment 361411 [details] [diff] [review] patch
(Full reftests pass, although I don't know how meaningful that is for MathML dynamic change handling.)
Comment on attachment 361411 [details] [diff] [review] patch I think I'd be fine with a followup bug to remove those XXX comments and dirty bit sets they're about.
Status: ASSIGNED → RESOLVED
Last Resolved: 9 years ago
Resolution: --- → FIXED
Filed bug 477915 to follow up.
You need to log in before you can comment on or make changes to this bug.