Closed Bug 334148 Opened 19 years ago Closed 17 years ago

"ASSERTION: wrong kind of child frame" involving float:right, display:list-item, and <xul:menupopup>

Categories

(Core :: Layout, defect)

PowerPC
macOS
defect
Not set
normal

Tracking

()

RESOLVED WORKSFORME

People

(Reporter: jruderman, Unassigned)

References

Details

(Keywords: assertion, testcase)

Attachments

(1 file)

233 bytes, application/xhtml+xml
Details
###!!! ASSERTION: wrong kind of child frame: 'aIsBlock == f->GetStyleDisplay()->IsBlockLevel()', file /Users/admin/trunk/mozilla/layout/generic/nsLineBox.cpp, line 74
Attached file testcase
Basically, the binding allows styling by the document... So we end up with a nsAutoRepeatBoxFrame that has: 1) display:list-item 2) float:right and is being inserted into the in-flow child list of its parent(!). Note that after the assert this bug is on we get: ###!!! ASSERTION: How'd we get a floated inline frame? The frame ctor should've dealt with this.: 'aReflowState.mStyleDisplay->mFloats == NS_STYLE_FLOAT_NONE', file ../../../mozilla/layout/generic/nsLineLayout.cpp, line 1225
Flags: blocking1.9a2?
Note that in this case we hit the following code in the frame constructor: 6499 // xul does not support absolute positioning 6500 nsIFrame* geometricParent = aParentFrame; That's probably bogus; definitely when aParentFrame is not a XUL frame. I have no idea what the behavior of floated or positioned XUL should be in general, however...
Well I don't see how float can apply to XUL; as for absolute positioning xul already has a way to achieve that so a second way is unnecessary but unharmful.
> Well I don't see how float can apply to XUL; <html:div> <xul:hbox style="float:left"/> </html:div> That's basically what happens in the testcase, fwiw. As in, the problem is not with "all XUL" the problem is when XUL interacts with normal CSS layout.
Sorry, I had assumed the parent was XUL; floating XUL in HTML is fine with me.
So if we had an IsFrameOfType() flag for XUL we could probably test the parent here, and if the parent is non-XUL we'd do the normal floating/positioning thing.... Seem reasoanble?
That wouldn't work so hot if parent is an inline whose parent is XUL, actually... Sounds to me like XUL should push a null float containing block while processing children. Possibly also a null absolute containing block. Thoughts?
Flags: blocking1.9a2? → blocking1.9-
Whiteboard: [wanted-1.9]
WFM on trunk. I see ###!!! ASSERTION: no common ancestor at all???: 'parent', file /Users/jruderman/trunk/mozilla/layout/base/nsLayoutUtils.cpp, line 356 but that's a very frequent assertion and is covered by other bugs.
Status: NEW → RESOLVED
Closed: 17 years ago
Resolution: --- → WORKSFORME
Crashtest checked in.
Flags: in-testsuite+
Flags: wanted1.9+
Whiteboard: [wanted-1.9]
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: