Closed
Bug 235778
Opened 21 years ago
Closed 21 years ago
Overflowing absolute children of a relatively positioned span not included in span's overflow area
Categories
(Core :: Layout, defect)
Core
Layout
Tracking
()
RESOLVED
FIXED
People
(Reporter: roc, Assigned: roc)
Details
Attachments
(2 files)
(deleted),
text/html
|
Details | |
(deleted),
patch
|
dbaron
:
review+
dbaron
:
superreview+
|
Details | Diff | Splinter Review |
I thought we killed this snake long ago, but the upcoming testcase shows that
the bounds of a relative span's absolute children aren't included in its
overflow area.
Assignee | ||
Comment 1•21 years ago
|
||
This isn't quite minimal, but it's good enough to show the problem. The DIV "I
am absolutely positioned." won't repaint properly if you dirty it. A moment's
work with the layout debugger confirms that the relatively positioned span
doesn't have the right combined area.
Assignee | ||
Comment 2•21 years ago
|
||
2 problems:
-- nsLineLayout::RelativePositionFrames just ignored a span frame's
pfd->mCombinedArea, wiping it out with a new combined area that's the union of
its child inline frame combined areas. Solution: initialize the accumulated
area with the span frame combined area instead of the span frame's bounds.
-- nsPositionedInlineFrame was never computing the overflow area properly
because someone noticed it was just being ignored and turned it off. Turn it
back on.
This fixes the bug.
I took the liberty of cleaning up RelativePositionFrames a bit.
Assignee | ||
Updated•21 years ago
|
Attachment #142399 -
Flags: superreview?(dbaron)
Attachment #142399 -
Flags: review?(dbaron)
Comment 3•21 years ago
|
||
Comment on attachment 142399 [details] [diff] [review]
fix
How about getting rid of this declaration,
> PerFrameData* pfd;
using psd->mFrame->mCombinedArea directly here,
> pfd = psd->mFrame;
>+ combinedAreaResult = pfd->mCombinedArea;
declaring pfd in the for-loop initializer,
> for (pfd = psd->mFirstFrame; pfd; pfd = pfd->mNext) {
and making this what VC++ will think is a shadowing variable?
> if (psd->mFrame) {
> pfd = psd->mFrame;
More comments shortly...
Comment 4•21 years ago
|
||
Comment on attachment 142399 [details] [diff] [review]
fix
r+sr=dbaron if you've checked some testcases (e.g., bug 79315 and its fixed
dependencies)
Attachment #142399 -
Flags: superreview?(dbaron)
Attachment #142399 -
Flags: superreview+
Attachment #142399 -
Flags: review?(dbaron)
Attachment #142399 -
Flags: review+
Assignee | ||
Comment 5•21 years ago
|
||
I'll fix up the pfds as you suggest, but I'll use a new name at the end to avoid
shadowing.
Assignee | ||
Comment 6•21 years ago
|
||
Fix checked in. Testcases in 79315 and everything hanging off it work fine.
Assignee | ||
Comment 7•21 years ago
|
||
Actually marking fixed
Status: NEW → RESOLVED
Closed: 21 years ago
Resolution: --- → FIXED
I think the changes from this bug caused Bug 237734, backing out the checkin
seems to make the testcase work every time.
You need to log in
before you can comment on or make changes to this bug.
Description
•