Closed Bug 191151 Opened 22 years ago Closed 20 years ago

[FIXr]Make nsCSSFrameConstructor::GetGeometricParent()

Categories

(Core :: Layout: Floats, defect, P2)

defect

Tracking

()

RESOLVED FIXED
mozilla1.8beta1

People

(Reporter: john, Assigned: bzbarsky)

Details

Attachments

(2 files, 2 obsolete files)

There are a number of places in nsCSSFrameConstructor that get the "geometric
parent" of a frame--the parent frame in the visual hierarchy rather than the
logical content hierarchy.  Nearly all of them do this in exactly the same way.
 It should be factored out into GetGeometricParent().
Attached patch Patch v0.5 (obsolete) — Splinter Review
This patch runs and builds happily and survives under my typical mail / web
daily usage.  However, it does change one thing: many places that were
calculating the geometric parent were not taking floating into account with the
geometric parent, so I made them do that.  However, I do not yet have
sufficient knowledge of the intricacies of floating to construct testcases that
may fail when this happens.  troy checked in the fix that made most elements do
this, and indicated that (at least at that time) there was an actual problem. 
http://bonsai.mozilla.org/cvsblame.cgi?file=mozilla/layout/html/style/src/nsCSSFrameConstructor.cpp&rev=1.156#2665


Two things I'd like to do as well:
- stop passing around aIsAbsolutelyPositioned and aIsFixedPositioned--maybe
even stop grabbing them in the main function if it turns out to be useful
- make nsIFrame have virtual method(s) to determine whether the frame supports
positioning / floating--that information does *not* belong in
nsCSSFrameConstructor where it currently resides (canBePositioned).

Testcases for the above problem or hints on how to make them are appreciated.
I was about to file this bug.  Taking.  I'll attach a slew of testcases for the
various places in CSSFrameConstructor that get this wrong... John's patch is a
good place to start.
Assignee: john → bzbarsky
OS: Windows XP → All
Hardware: PC → All
Fieldsets and selects manage to work somehow, but I'm not sure how.
Attached patch Proposed patch (obsolete) — Splinter Review
Attachment #113000 - Attachment is obsolete: true
Comment on attachment 160120 [details] [diff] [review]
Proposed patch

Alex, would you review the SVG changed?  David, would you review the rest?

I'm not set on the svg stuff, since my changes may have some memory/perf
impact... so if people don't like it, I'll revert it.
Attachment #160120 - Flags: superreview?(dbaron)
Attachment #160120 - Flags: review?(alex)
ccing the svg folks and rbs (for the mathml changes, but they were
non-substantive, except for floated mathml).
Priority: -- → P2
Target Milestone: --- → mozilla1.8beta
Summary: Make nsCSSFrameConstructor::GetGeometricParent() → [FIX]Make nsCSSFrameConstructor::GetGeometricParent()
I can review this if David wants to delegate it to me.
Comment on attachment 160120 [details] [diff] [review]
Proposed patch

Actually, the svg changes are wrong, because we may end up with an <svg> inside
HTML inside a <foreignobject>.	Fixed patch coming up in a sec.
Attachment #160120 - Flags: superreview?(dbaron)
Attachment #160120 - Flags: superreview-
Attachment #160120 - Flags: review?(alex)
Attachment #160120 - Flags: review-
The only change this makes to svg is to make it possible to float or
fixed-position "outermost" <svg> elements.
Attachment #160120 - Attachment is obsolete: true
Comment on attachment 160154 [details] [diff] [review]
Patch that doesn't change SVG behavior

Pinging roc for review, since he volunteered (and since there are no longer
substantive SVG changes here, r+sr should be ok, I think).
Attachment #160154 - Flags: superreview?(roc)
Attachment #160154 - Flags: review?(roc)
Comment on attachment 160154 [details] [diff] [review]
Patch that doesn't change SVG behavior

+  // If there is no container for a fixed, absolute, or floating table because
+  // it is the root content frame, we will ignore the positioning.

Rephrase this to make it clear that as implemented, this hack applies to all
elements, not just tables.

+    // XXXbz roc says stacks do, or should....

Take this out since I'm not sure...
Attachment #160154 - Flags: superreview?(roc)
Attachment #160154 - Flags: superreview+
Attachment #160154 - Flags: review?(roc)
Attachment #160154 - Flags: review+
Summary: [FIX]Make nsCSSFrameConstructor::GetGeometricParent() → [FIXr]Make nsCSSFrameConstructor::GetGeometricParent()
Fixed on trunk for 1.8a5.
Status: NEW → RESOLVED
Closed: 20 years ago
Resolution: --- → FIXED
Note: this broke absolute positioning of tables.  See bug 262898 (which has a fix).
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: