Closed Bug 253977 Opened 20 years ago Closed 20 years ago

More block bugs flushed out by columns work

Categories

(Core :: Layout, defect)

defect
Not set
normal

Tracking

()

RESOLVED FIXED

People

(Reporter: roc, Assigned: roc)

Details

Attachments

(1 file, 1 obsolete file)

Here are some bugs that I found that I have fixes for.

-- nsBlockFrame::Reflow should always call DrainOverflowLines no matter what the
type of reflow. It is never correct to leave a prev-in-flow with an overflow
line list.

-- I need a way to determine if incrementally reflowing a block frame did
something that requires its next in flow to be reflowed. According to
nsIFrame.h, NS_FRAME_REFLOW_NEXTINFLOW should be added to the outgoing reflow
status to indicate this. However, that isn't currently implemented. So I've
implemented it, at least for blocks.

-- nsBlockFrame::DoRemoveFrame did not handle the case where the frame to be
removed, or some of its continuations, are on the overflow line list. So I have
it search both the normal and overflow lines. I also simplified it a bit by
removing the outer while loop and turning it into a recursive tail call.

I've also included a little bit of frame dump code that ought to migrate from my
tree to the trunk.
Attached patch fixes (obsolete) — Splinter Review
As described.
Attachment #154964 - Flags: superreview?(dbaron)
Attachment #154964 - Flags: review?(dbaron)
Attached patch better fixSplinter Review
That last patch did not correctly reset prevSibling when we start deleting
continuations in the overflow lines.
Assignee: nobody → roc
Attachment #154964 - Attachment is obsolete: true
Status: NEW → ASSIGNED
Attachment #154981 - Flags: superreview?(dbaron)
Attachment #154981 - Flags: review?(dbaron)
Attachment #154964 - Flags: superreview?(dbaron)
Attachment #154964 - Flags: review?(dbaron)
Attachment #154981 - Flags: superreview?(dbaron)
Attachment #154981 - Flags: superreview+
Attachment #154981 - Flags: review?(dbaron)
Attachment #154981 - Flags: review+
Checked in.
Status: ASSIGNED → RESOLVED
Closed: 20 years ago
Resolution: --- → FIXED
Backed out because it caused ~10ms Tp regression on btek. Maybe it's noise but I
have to go to bed.

It's probably the extra calls to GetOverflowLines on every block reflow, and
possible in DoRemoveFrame (although in the latter case we should always find the
frame to delete before we try the overflow lines, since Tp doesn't test blocks
with next-in-flows, I think). I should probably try adding state bits to
indicate the presence of overflow lines, overflow out-of-flows, and overflow
placeholders, it would be easy. But not right now...
Status: RESOLVED → REOPENED
Resolution: FIXED → ---
Relanded. Let's see how btek behaves this time.
btek looks happy. Yay!
Status: REOPENED → RESOLVED
Closed: 20 years ago20 years ago
Resolution: --- → FIXED
Looks like this did in fact regress Tp by maybe 5ms.
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: