Closed Bug 334148 Opened 18 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: