Make nsIFrame::GetParentStyleContextFrame return the frame directly
instead of indirectly through an out parameter. Remove the unused
nsPresContext parameter.
This change does two things:
1) Makes sure that we don't clear textruns when removing continuations due to
an earlier consideration expanding to contain all their text.
2) Remove continuations in chunks to work around the fact that blocks are
really bad at handling single frame removals.
Implement GetChildList(ChildListID) and GetChildLists(nsTArray<ChildList>*)
for various frame classes. Remove GetAdditionalChildListName(PRInt32)
methods and associated macros and list index constants.
Add types to represent identifiers for frame child lists, sets of those
identifiers, and iterators over the child lists of a frame.
Define a enumeration type FrameChildListID representing all of the types
of child lists that frames have (each with a unique bit), a class
FrameChildListIDs for representing any set of FrameChildListID, and a
class FrameChildListIterator for iterating over all of the child lists
of a frame.
This code is a little bit sketchy, but given that text-decoration
drawing is the same across modes we shouldn't have a quirks mode check
here (though there's a decent argument to be made that we shouldn't be
checking text decorations at all).
Since this affects only the *visual* overflow and not the *scrollable*
overflow, this patch should result in no behavior changes, since the
necessary visual overflow is added in
nsTextFrame::UnionAdditionalOverflow (since the text frame now draws the
shadows of text decorations, just like it draws text decorations
themselves).
There was nothing wrong with SetFontFromStyle, except that it's just one
more API to think about (and one more API to audit and modify for font
inflation work to happen in bug 627842).
This changes a number of callers that were previously bypassing the use
of the correct language (with either no language or the charset-detected
language on the pres context via nsPresContext::GetMetricsFor) and/or
the correct user font set to pass the correct values, which should
improve the correctness of the behavior of whatever they were using the
fonts for, and also reduce the number of unique sets of font metrics
requested (which helps nsFontCache effectiveness).
The FrameProperty representing baseline is set when a block defines
text-decorations and has vertically-aligned children, but we were
retrieving it whether the block or the vertically-aligned frame itself
defined the decorations. As a result, we "undo" the frame offset to get
the baseline from the child in that case.
We add a baseline field to nsInlineFrame and modify
nsLineLayout::BeginSpan to take a pointer to a baseline to update. This
also means that nsFirstLetterFrame no longer needs to update its own
baseline, and instead should just pass its own field along.