Open Bug 203225 Opened 21 years ago Updated 2 years ago

Make the calls to PushAbsoluteContainingBlock in the frame constructor make sense

Categories

(Core :: Layout, defect)

defect

Tracking

()

People

(Reporter: bzbarsky, Unassigned)

References

Details

Right now, we call PushAbsoluteContainingBlock from all sorts of places in the
frame constructor.  Very few do it correctly.... Examples:

1)  Tables are never absolute containing blocks right now (never call
    PushAbsoluteContainingBlock on themselves)
2)  Fieldsets are not absolute containing blocks if they are relatively
    positioned
3)  ConstructHTMLFrame has this isPositionedContainingBlock local that it never
    sets to anything but FALSE.  Then it has some code to push a containing
    block if it's true...

I stopped reading at that point, but I was only 30% through the file....

In any case; the goal here, in my opinion, is to minimize the number of places
where PushAbsoluteContainingBlock may need to be called.  The fewer callers
there are, the less chance that one of them will get it wrong.

Thoughts?
roc, dbaron, any ideas how we can consolidate the codepaths here?
>Tables are never absolute containing blocks right now

Should they ever be?, as soon as we hit a wrapper around a abs. pos. frame, table frames will create pseudo frames anyway. 
Tables should be absolute containing blocks when they are relatively or absolutely positioned.
IMHO post-reflow-branch we need to reorganize absolute positioning so that any frame can be an abs-pos container ... nsAbsoluteContainer will have to become a property.
While that's true, I think that in some cases (eg SVG, MathML) we don't necessarily want to make things into absolute containing blocks per the CSS definitions (eg. just because they are relatively positioned).
QA Contact: nobody → layout.misc-code
Shouldn't the platform for this bug be "x86 all" or "all all"?
Sure, except those fields don't matter at all.  So setting them "right" when filing isn't worth the bother...
OS: Linux → All
Hardware: x86 → All
Priority: -- → P3
Priority: P3 → P4
Depends on: 10209
Boris, can you please see what's left here with bug 10209 and bug 656130 being fixed?
The main issue is still there: right now it's easy to forget to push a frame class as an absolute containing block.... Then again, pushing a frame that doesn't have the magic goop to work as an absolute containing block won't help much either...

I'm not sure there's a good solution for it, necessarily, and this is low on my priority list for the moment.
This should at least be fixed for td and fieldset elements (as the number of bugs this indirectly blocks), consolidating the codepath can follow later.
This doesn't need to be fixed to fix the td situation.
Product: Core → Core Graveyard
Component: Layout: Misc Code → Layout
Product: Core Graveyard → Core

Just checked, and the state here is still about what it was in comment 9.

Assignee: bzbarsky → nobody
Priority: P4 → --
Severity: normal → S3

The severity field for this bug is relatively low, S3. However, the bug has 12 votes.
:dholbert, could you consider increasing the bug severity?

For more information, please visit auto_nag documentation.

Flags: needinfo?(dholbert)

The last needinfo from me was triggered in error by recent activity on the bug. I'm clearing the needinfo since this is a very old bug and I don't know if it's still relevant.

Flags: needinfo?(dholbert)
You need to log in before you can comment on or make changes to this bug.