Bug 91419 patch 9: Fix comments and debugging output referring to "special" frames. r=mats

This commit is contained in:
L. David Baron 2014-02-06 17:45:33 -08:00
Родитель f47695e72d
Коммит d31701cad1
13 изменённых файлов: 89 добавлений и 79 удалений

Просмотреть файл

@ -708,9 +708,11 @@ RestyleManager::ProcessRestyledFrames(nsStyleChangeList& aChangeList)
nsIFrame* hintFrame = GetFrameForChildrenOnlyTransformHint(frame);
nsIFrame* childFrame = hintFrame->GetFirstPrincipalChild();
NS_ASSERTION(!nsLayoutUtils::GetNextContinuationOrIBSplitSibling(frame),
"SVG frames should not have continuations or special siblings");
"SVG frames should not have continuations "
"or ib-split siblings");
NS_ASSERTION(!nsLayoutUtils::GetNextContinuationOrIBSplitSibling(hintFrame),
"SVG frames should not have continuations or special siblings");
"SVG frames should not have continuations "
"or ib-split siblings");
for ( ; childFrame; childFrame = childFrame->GetNextSibling()) {
NS_ABORT_IF_FALSE(childFrame->IsFrameOfType(nsIFrame::eSVG),
"Not expecting non-SVG children");
@ -721,7 +723,8 @@ RestyleManager::ProcessRestyledFrames(nsStyleChangeList& aChangeList)
mOverflowChangedTracker.AddFrame(childFrame);
}
NS_ASSERTION(!nsLayoutUtils::GetNextContinuationOrIBSplitSibling(childFrame),
"SVG frames should not have continuations or special siblings");
"SVG frames should not have continuations "
"or ib-split siblings");
NS_ASSERTION(childFrame->GetParent() == hintFrame,
"SVG child frame not expected to have different parent");
}
@ -1009,7 +1012,7 @@ RestyleManager::AttributeChanged(Element* aElement,
// let the frame deal with it now, so we don't have to deal later
primaryFrame->AttributeChanged(aNameSpaceID, aAttribute, aModType);
// XXXwaterson should probably check for special IB siblings
// XXXwaterson should probably check for IB split siblings
// here, and propagate the AttributeChanged notification to
// them, as well. Currently, inline frames don't do anything on
// this notification, so it's not that big a deal.
@ -1773,16 +1776,18 @@ static nsIFrame*
GetPrevContinuationWithPossiblySameStyle(nsIFrame* aFrame)
{
// Account for {ib} splits when looking for "prevContinuation". In
// particular, for the first-continuation of a part of an {ib} split we
// want to use the special prevsibling of the special prevsibling of
// aFrame, which should have the same style context as aFrame itself.
// In particular, if aFrame is the first continuation of an inline part
// of an {ib} split then its special prevsibling is a block, and the
// special prevsibling of _that_ is an inline, just like aFrame.
// Similarly, if aFrame is the first continuation of a block part of an
// {ib} split (an {ib} wrapper block), then its special prevsibling is
// an inline and the special prevsibling of that is either another {ib}
// wrapper block block or null.
// particular, for the first-continuation of a part of an {ib} split
// we want to use the previous ib-split sibling of the previous
// ib-split sibling of aFrame, which should have the same style
// context as aFrame itself. In particular, if aFrame is the first
// continuation of an inline part of a block-in-inline split then its
// previous ib-split sibling is a block, and the previous ib-split
// sibling of _that_ is an inline, just like aFrame. Similarly, if
// aFrame is the first continuation of a block part of an
// block-in-inline split (a block-in-inline wrapper block), then its
// previous ib-split sibling is an inline and the previous ib-split
// sibling of that is either another block-in-inline wrapper block box
// or null.
nsIFrame *prevContinuation = aFrame->GetPrevContinuation();
if (!prevContinuation &&
(aFrame->GetStateBits() & NS_FRAME_PART_OF_IBSPLIT)) {
@ -1804,7 +1809,7 @@ GetPrevContinuationWithPossiblySameStyle(nsIFrame* aFrame)
}
/**
* Get the previous continuation or similar special sibling (assuming
* Get the previous continuation or similar ib-split sibling (assuming
* block/inline alternation), conditionally on it having the same style.
* This assumes that we're not between resolving the two (i.e., that
* they're both already resolved.
@ -1829,7 +1834,7 @@ GetPrevContinuationWithSameStyle(nsIFrame* aFrame)
}
/**
* Get the next continuation or similar special sibling (assuming
* Get the next continuation or similar ib-split sibling (assuming
* block/inline alternation), conditionally on it having the same style.
*
* Since this is used when deciding to copy the new style context, it
@ -2202,7 +2207,7 @@ ElementRestyler::CaptureChange(nsStyleContext* aOldContext,
/**
* Recompute style for mFrame (which should not have a prev continuation
* with the same style), all of its next continuations with the same
* style, and all special siblings of the same type (either block or
* style, and all ib-split siblings of the same type (either block or
* inline, skipping the intermediates of the other type) and accumulate
* changes into mChangeList given that mHintsHandled is already accumulated
* for an ancestor.
@ -2840,7 +2845,7 @@ GetNextBlockInInlineSibling(FramePropertyTable* aPropTable, nsIFrame* aFrame)
{
NS_ASSERTION(!aFrame->GetPrevContinuation(),
"must start with the first continuation");
// Might we have special siblings?
// Might we have ib-split siblings?
if (!(aFrame->GetStateBits() & NS_FRAME_PART_OF_IBSPLIT)) {
// nothing more to do here
return nullptr;
@ -2868,7 +2873,7 @@ RestyleManager::ComputeStyleChangeFor(nsIFrame* aFrame,
"must start with the first continuation");
// We want to start with this frame and walk all its next-in-flows,
// as well as all its special siblings and their next-in-flows,
// as well as all its ib-split siblings and their next-in-flows,
// reresolving style on all the frames we encounter in this walk that
// we didn't reach already. In the normal case, this will mean only
// restyling the first two block-in-inline splits and no
@ -2890,7 +2895,7 @@ RestyleManager::ComputeStyleChangeFor(nsIFrame* aFrame,
nsTArray<nsIContent*> visibleKidsOfHiddenElement;
for (nsIFrame* ibSibling = aFrame; ibSibling;
ibSibling = GetNextBlockInInlineSibling(propTable, ibSibling)) {
// Outer loop over special siblings
// Outer loop over ib-split siblings
for (nsIFrame* cont = ibSibling; cont; cont = cont->GetNextContinuation()) {
if (GetPrevContinuationWithSameStyle(cont)) {
// We already handled this element when dealing with its earlier
@ -2908,7 +2913,7 @@ RestyleManager::ComputeStyleChangeFor(nsIFrame* aFrame,
if (restyler.HintsHandledForFrame() & nsChangeHint_ReconstructFrame) {
// If it's going to cause a framechange, then don't bother
// with the continuations or special siblings since they'll be
// with the continuations or ib-split siblings since they'll be
// clobbered by the frame reconstruct anyway.
NS_ASSERTION(!cont->GetPrevContinuation(),
"continuing frame had more severe impact than first-in-flow");

Просмотреть файл

@ -420,7 +420,7 @@ static nsIFrame* GetIBSplitSibling(nsIFrame* aFrame)
{
NS_PRECONDITION(IsFramePartOfIBSplit(aFrame), "Shouldn't call this");
// We only store the "special sibling" annotation with the first
// We only store the "ib-split sibling" annotation with the first
// frame in the continuation chain. Walk back to find that frame now.
return static_cast<nsIFrame*>
(aFrame->FirstContinuation()->
@ -431,7 +431,7 @@ static nsIFrame* GetIBSplitPrevSibling(nsIFrame* aFrame)
{
NS_PRECONDITION(IsFramePartOfIBSplit(aFrame), "Shouldn't call this");
// We only store the "special sibling" annotation with the first
// We only store the ib-split sibling annotation with the first
// frame in the continuation chain. Walk back to find that frame now.
return static_cast<nsIFrame*>
(aFrame->FirstContinuation()->
@ -462,20 +462,20 @@ SetFrameIsIBSplit(nsIFrame* aFrame, nsIFrame* aIBSplitSibling)
// We should be the only continuation
NS_ASSERTION(!aFrame->GetPrevContinuation(),
"assigning special sibling to other than first continuation!");
"assigning ib-split sibling to other than first continuation!");
NS_ASSERTION(!aFrame->GetNextContinuation() ||
IsFramePartOfIBSplit(aFrame->GetNextContinuation()),
"should have no non-special continuations here");
"should have no non-ib-split continuations here");
// Mark the frame as "special".
// Mark the frame as ib-split.
aFrame->AddStateBits(NS_FRAME_PART_OF_IBSPLIT);
if (aIBSplitSibling) {
NS_ASSERTION(!aIBSplitSibling->GetPrevContinuation(),
"assigning something other than the first continuation as the "
"special sibling");
"ib-split sibling");
// Store the "special sibling" (if we were given one) with the
// Store the ib-split sibling (if we were given one) with the
// first frame in the flow.
FramePropertyTable* props = aFrame->PresContext()->PropertyTable();
props->Set(aFrame, nsIFrame::IBSplitSibling(), aIBSplitSibling);
@ -499,9 +499,9 @@ GetIBContainingBlockFor(nsIFrame* aFrame)
return aFrame;
}
// Note that we ignore non-special frames which have a pseudo on their
// Note that we ignore non-ib-split frames which have a pseudo on their
// style context -- they're not the frames we're looking for! In
// particular, they may be hiding a real parent that _is_ special.
// particular, they may be hiding a real parent that _is_ in an ib-split.
if (!IsFramePartOfIBSplit(parentFrame) &&
!parentFrame->StyleContext()->GetPseudo())
break;
@ -510,7 +510,8 @@ GetIBContainingBlockFor(nsIFrame* aFrame)
} while (1);
// post-conditions
NS_ASSERTION(parentFrame, "no normal ancestor found for special frame in GetIBContainingBlockFor");
NS_ASSERTION(parentFrame, "no normal ancestor found for ib-split frame "
"in GetIBContainingBlockFor");
NS_ASSERTION(parentFrame != aFrame, "parentFrame is actually the child frame - bogus reslt");
return parentFrame;
@ -5743,7 +5744,7 @@ AdjustAppendParentForAfterContent(nsPresContext* aPresContext,
// empty. Since we have no ::after pseudo-element, we do in fact want to be
// appending to that last part, so advance to it if needed. Note that here
// aParentFrame is the result of a GetLastIBSplitSibling call, so must be
// either the last or next to last special sibling.
// either the last or next to last ib-split sibling.
nsIFrame* trailingInline = GetIBSplitSibling(aParentFrame);
if (trailingInline) {
aParentFrame = trailingInline;
@ -5751,7 +5752,7 @@ AdjustAppendParentForAfterContent(nsPresContext* aPresContext,
// Always make sure to look at the last continuation of the frame
// for the {ib} case, even if that continuation is empty. We
// don't do this for the non-special-frame case, since in the
// don't do this for the non-ib-split-frame case, since in the
// other cases appending to the last nonempty continuation is fine
// and in fact not doing that can confuse code that doesn't know
// to pull kids from continuations other than its next one.
@ -5811,7 +5812,7 @@ nsCSSFrameConstructor::AppendFramesToParent(nsFrameConstructorState& aStat
NS_PRECONDITION(!IsFramePartOfIBSplit(aParentFrame) ||
!GetIBSplitSibling(aParentFrame) ||
!GetIBSplitSibling(aParentFrame)->GetFirstPrincipalChild(),
"aParentFrame has a special sibling with kids?");
"aParentFrame has a ib-split sibling with kids?");
NS_PRECONDITION(!aPrevSibling || aPrevSibling->GetParent() == aParentFrame,
"Parent and prevsibling don't match");
@ -6008,7 +6009,7 @@ nsCSSFrameConstructor::FindFrameForContentSibling(nsIContent* aContent,
NS_ASSERTION(!sibling->GetPrevContinuation(), "How did that happen?");
if (aPrevSibling) {
// The frame may be a special frame (a split inline frame that
// The frame may be a ib-split frame (a split inline frame that
// contains a block). Get the last part of that split.
if (IsFramePartOfIBSplit(sibling)) {
sibling = GetLastIBSplitSibling(sibling, true);
@ -6636,16 +6637,16 @@ nsCSSFrameConstructor::ContentAppended(nsIContent* aContainer,
return rv;
}
// If the frame we are manipulating is a ``special'' frame (that is, one
// If the frame we are manipulating is a ib-split frame (that is, one
// that's been created as a result of a block-in-inline situation) then we
// need to append to the last special sibling, not to the frame itself.
// need to append to the last ib-split sibling, not to the frame itself.
bool parentIBSplit = IsFramePartOfIBSplit(parentFrame);
if (parentIBSplit) {
#ifdef DEBUG
if (gNoisyContentUpdates) {
printf("nsCSSFrameConstructor::ContentAppended: parentFrame=");
nsFrame::ListTag(stdout, parentFrame);
printf(" is special\n");
printf(" is ib-split\n");
}
#endif
@ -6725,7 +6726,7 @@ nsCSSFrameConstructor::ContentAppended(nsIContent* aContainer,
nsIFrame* prevSibling = ::FindAppendPrevSibling(parentFrame, parentAfterFrame);
// Perform special check for diddling around with the frames in
// a special inline frame.
// a ib-split inline frame.
// If we're appending before :after content, then we're not really
// appending, so let WipeContainingBlock know that.
LAYOUT_PHASE_TEMP_EXIT();
@ -7292,7 +7293,7 @@ nsCSSFrameConstructor::ContentRangeInserted(nsIContent* aContainer,
// (bug 341858).
// This can affect our prevSibling and isAppend, but should not have any
// effect on the WipeContainingBlock above, since this should only happen
// when neither parent is a special frame and should not affect whitespace
// when neither parent is a ib-split frame and should not affect whitespace
// handling inside table-related frames (and in fact, can only happen when
// one of the parents is an outer table and one is an inner table or when the
// parent is a fieldset or fieldset content frame). So it won't affect the
@ -7310,7 +7311,7 @@ nsCSSFrameConstructor::ContentRangeInserted(nsIContent* aContainer,
nsIFrame* frame2 = prevSibling->GetParent();
NS_ASSERTION(!IsFramePartOfIBSplit(frame1) &&
!IsFramePartOfIBSplit(frame2),
"Neither should be special");
"Neither should be ib-split");
NS_ASSERTION((frame1->GetType() == nsGkAtoms::tableFrame &&
frame2->GetType() == nsGkAtoms::tableOuterFrame) ||
(frame1->GetType() == nsGkAtoms::tableOuterFrame &&
@ -8430,7 +8431,7 @@ nsCSSFrameConstructor::MaybeRecreateContainerForFrameRemoval(nsIFrame* aFrame,
printf("nsCSSFrameConstructor::MaybeRecreateContainerForFrameRemoval: "
"frame=");
nsFrame::ListTag(stdout, aFrame);
printf(" is special\n");
printf(" is ib-split\n");
}
#endif
@ -8564,7 +8565,7 @@ nsCSSFrameConstructor::MaybeRecreateContainerForFrameRemoval(nsIFrame* aFrame,
}
// We might still need to reconstruct things if the parent of inFlowFrame is
// special, since in that case the removal of aFrame might affect the
// ib-split, since in that case the removal of aFrame might affect the
// splitting of its parent.
if (!IsFramePartOfIBSplit(parent)) {
return false;
@ -8591,7 +8592,7 @@ nsCSSFrameConstructor::MaybeRecreateContainerForFrameRemoval(nsIFrame* aFrame,
printf("nsCSSFrameConstructor::MaybeRecreateContainerForFrameRemoval: "
"frame=");
nsFrame::ListTag(stdout, parent);
printf(" is special\n");
printf(" is ib-split\n");
}
#endif
@ -8612,7 +8613,7 @@ nsCSSFrameConstructor::RecreateFramesForContent(nsIContent* aContent,
// frame tree for chrome (see bug 157322).
NS_ENSURE_TRUE(aContent->GetDocument(), NS_ERROR_FAILURE);
// Is the frame `special'? If so, we need to reframe the containing
// Is the frame ib-split? If so, we need to reframe the containing
// block *here*, rather than trying to remove and re-insert the
// content (which would otherwise result in *two* nested reframe
// containing block from ContentRemoved() and ContentInserted(),
@ -10693,7 +10694,7 @@ nsCSSFrameConstructor::BuildInlineChildItems(nsFrameConstructorState& aState,
// return whether it's ok to append (in the AppendFrames sense) to
// aParentFrame if our nextSibling is aNextSibling. aParentFrame must
// be an {ib} special inline.
// be an ib-split inline.
static bool
IsSafeToAppendToIBSplitInline(nsIFrame* aParentFrame, nsIFrame* aNextSibling)
{
@ -10701,7 +10702,7 @@ IsSafeToAppendToIBSplitInline(nsIFrame* aParentFrame, nsIFrame* aNextSibling)
"Must have an inline parent here");
do {
NS_ASSERTION(IsFramePartOfIBSplit(aParentFrame),
"How is this not special?");
"How is this not part of an ib-split?");
if (aNextSibling || aParentFrame->GetNextContinuation() ||
GetIBSplitSibling(aParentFrame)) {
return false;
@ -10995,7 +10996,8 @@ nsCSSFrameConstructor::WipeContainingBlock(nsFrameConstructorState& aState,
break;
}
// Now we know we have a block parent. If it's not special, we're all set.
// Now we know we have a block parent. If it's not part of an
// ib-split, we're all set.
if (!IsFramePartOfIBSplit(aFrame)) {
return false;
}
@ -11017,7 +11019,7 @@ nsCSSFrameConstructor::WipeContainingBlock(nsFrameConstructorState& aState,
// To find the right block to reframe, just walk up the tree until we find a
// frame that is:
// 1) Not part of an IB split (not special)
// 1) Not part of an IB split
// 2) Not a pseudo-frame
// 3) Not an inline frame
// We're guaranteed to find one, since nsStyleContext::ApplyStyleFixups
@ -11032,8 +11034,8 @@ nsCSSFrameConstructor::WipeContainingBlock(nsFrameConstructorState& aState,
aContainingBlock->StyleContext()->GetPseudo()) {
aContainingBlock = aContainingBlock->GetParent();
NS_ASSERTION(aContainingBlock,
"Must have non-inline, non-special, non-pseudo frame as root "
"(or child of root, for a table root)!");
"Must have non-inline, non-ib-split, non-pseudo frame as "
"root (or child of root, for a table root)!");
}
// Tell parent of the containing block to reformulate the
@ -11058,7 +11060,7 @@ nsCSSFrameConstructor::ReframeContainingBlock(nsIFrame* aFrame)
#ifdef DEBUG
// ReframeContainingBlock is a NASTY routine, it causes terrible performance problems
// so I want to see when it is happening! Unfortunately, it is happening way to often because
// so much content on the web causes 'special' block-in-inline frame situations and we handle them
// so much content on the web causes block-in-inline frame situations and we handle them
// very poorly
if (gNoisyContentUpdates) {
printf("nsCSSFrameConstructor::ReframeContainingBlock frame=%p\n",

Просмотреть файл

@ -369,7 +369,7 @@ private:
FrameConstructionItemList& aItems);
// This method can change aFrameList: it can chop off the beginning and put
// it in aParentFrame while putting the remainder into a special sibling of
// it in aParentFrame while putting the remainder into a ib-split sibling of
// aParentFrame. aPrevSibling must be the frame after which aFrameList is to
// be placed on aParentFrame's principal child list. It may be null if
// aFrameList is being added at the beginning of the child list.

Просмотреть файл

@ -99,7 +99,7 @@ struct InlineBackgroundData
nscoord curOffset = aFrame->GetOffsetTo(mBlockFrame).x;
// No need to use our GetPrevContinuation/GetNextContinuation methods
// here, since ib special siblings are certainly not on the same line.
// here, since ib-split siblings are certainly not on the same line.
nsIFrame* inlineFrame = aFrame->GetPrevContinuation();
// If the continuation is fluid we know inlineFrame is not on the same line.

Просмотреть файл

@ -2728,7 +2728,7 @@ nsLayoutUtils::GetNextContinuationOrIBSplitSibling(nsIFrame *aFrame)
return result;
if ((aFrame->GetStateBits() & NS_FRAME_PART_OF_IBSPLIT) != 0) {
// We only store the "special sibling" annotation with the first
// We only store the ib-split sibling annotation with the first
// frame in the continuation chain. Walk back to find that frame now.
aFrame = aFrame->FirstContinuation();

Просмотреть файл

@ -1011,13 +1011,14 @@ public:
static nsIFrame* GetParentOrPlaceholderForCrossDoc(nsIFrame* aFrame);
/**
* Get a frame's next-in-flow, or, if it doesn't have one, its special sibling.
* Get a frame's next-in-flow, or, if it doesn't have one, its
* block-in-inline-split sibling.
*/
static nsIFrame*
GetNextContinuationOrIBSplitSibling(nsIFrame *aFrame);
/**
* Get the first frame in the continuation-plus-special-sibling chain
* Get the first frame in the continuation-plus-ib-split-sibling chain
* containing aFrame.
*/
static nsIFrame*

Просмотреть файл

@ -357,7 +357,7 @@ StickyScrollContainer::UpdatePositions(nsPoint aScrollPosition,
nsIFrame* f = mFrames[i];
if (!nsLayoutUtils::IsFirstContinuationOrIBSplitSibling(f)) {
// This frame was added in nsFrame::Init before we knew it wasn't
// the first special-sibling.
// the first ib-split-sibling.
mFrames.RemoveElementAt(i);
--i;
continue;

Просмотреть файл

@ -500,7 +500,7 @@ nsFrame::Init(nsIContent* aContent,
!(mState & NS_FRAME_IS_NONDISPLAY) &&
!disp->IsInnerTableStyle()) {
// Note that we only add first continuations, but we really only
// want to add first continuation-or-special-siblings. But since we
// want to add first continuation-or-ib-split-siblings. But since we
// don't yet know if we're a later part of a block-in-inline split,
// we'll just add later members of a block-in-inline split here, and
// then StickyScrollContainer will remove them later.
@ -619,7 +619,7 @@ nsFrame::DestroyFrom(nsIFrame* aDestructRoot)
}
}
// If we have any IB split special siblings, clear their references to us.
// If we have any IB split siblings, clear their references to us.
// (Note: This has to happen before we call shell->NotifyDestroyingFrame,
// because that clears our Properties() table.)
if (mState & NS_FRAME_PART_OF_IBSPLIT) {
@ -6021,9 +6021,10 @@ FindBlockFrameOrBR(nsIFrame* aFrame, nsDirection aDirection)
return result;
// Check the frame itself
// Fall through "special" block frames because their mContent is the content
// of the inline frames they were created from. The first/last child of
// such frames is the real block frame we're looking for.
// Fall through block-in-inline split frames because their mContent is
// the content of the inline frames they were created from. The
// first/last child of such frames is the real block frame we're
// looking for.
if ((nsLayoutUtils::GetAsBlock(aFrame) &&
!(aFrame->GetStateBits() & NS_FRAME_PART_OF_IBSPLIT)) ||
aFrame->GetType() == nsGkAtoms::brFrame) {
@ -7162,10 +7163,11 @@ nsFrame::ConsiderChildOverflow(nsOverflowAreas& aOverflowAreas,
}
/**
* This function takes a "special" frame and _if_ that frame is an anonymous
* block created by an ib split it returns the block's preceding inline. This
* is needed because the split inline's style context is the parent of the
* anonymous block's style context.
* This function takes a frame that is part of a block-in-inline split,
* and _if_ that frame is an anonymous block created by an ib split it
* returns the block's preceding inline. This is needed because the
* split inline's style context is the parent of the anonymous block's
* style context.
*
* If aFrame is not an anonymous block, null is returned.
*/
@ -7174,7 +7176,7 @@ GetIBSplitSiblingForAnonymousBlock(const nsIFrame* aFrame)
{
NS_PRECONDITION(aFrame, "Must have a non-null frame!");
NS_ASSERTION(aFrame->GetStateBits() & NS_FRAME_PART_OF_IBSPLIT,
"GetIBSplitSibling should not be called on a non-special frame");
"GetIBSplitSibling should only be called on ib-split frames");
nsIAtom* type = aFrame->StyleContext()->GetPseudo();
if (type != nsCSSAnonBoxes::mozAnonymousBlock &&

Просмотреть файл

@ -135,9 +135,8 @@ FRAME_STATE_BIT(Generic, 13, NS_FRAME_HAS_VIEW)
// If this bit is set, the frame was created from anonymous content.
FRAME_STATE_BIT(Generic, 14, NS_FRAME_INDEPENDENT_SELECTION)
// If this bit is set, the frame is "special" (lame term, I know),
// which means that it is part of the mangled frame hierarchy that
// results when an inline has been split because of a nested block.
// If this bit is set, the frame is part of the mangled frame hierarchy
// that results when an inline has been split because of a nested block.
// See the comments in nsCSSFrameConstructor::ConstructInline for
// more details.
FRAME_STATE_BIT(Generic, 15, NS_FRAME_PART_OF_IBSPLIT)

Просмотреть файл

@ -124,8 +124,8 @@ nsInlineFrame::IsSelfEmpty()
haveStart = haveRight;
haveEnd = haveLeft;
}
// For special frames, ignore things we know we'll skip in GetSkipSides.
// XXXbz should we be doing this for non-special frames too, in a more
// For ib-split frames, ignore things we know we'll skip in GetSkipSides.
// XXXbz should we be doing this for non-ib-split frames too, in a more
// general way?
// Get the first continuation eagerly, as a performance optimization, to

Просмотреть файл

@ -1069,9 +1069,10 @@ nsLineLayout::ApplyStartMargin(PerFrameData* pfd,
// Only apply start-margin on the first-in flow for inline frames,
// and make sure to not apply it to any inline other than the first
// in an ib split. Note that the ib special sibling annotations
// only live on the first continuation, but we don't want to apply
// the start margin for later continuations anyway.
// in an ib split. Note that the ib sibling (block-in-inline
// sibling) annotations only live on the first continuation, but we
// don't want to apply the start margin for later continuations
// anyway.
if (pfd->mFrame->GetPrevContinuation() ||
pfd->mFrame->FrameIsNonFirstInIBSplit()) {
// Zero this out so that when we compute the max-element-width of

Просмотреть файл

@ -274,7 +274,7 @@ public:
* requested.)
*
* This method returns a change hint (see nsChangeHint.h). All change
* hints apply to the frame and its later continuations or special
* hints apply to the frame and its later continuations or ib-split
* siblings. Most (all of those except the "NotHandledForDescendants"
* hints) also apply to all descendants. The caller must pass in any
* non-inherited hints that resulted from the parent style context's

Просмотреть файл

@ -76,14 +76,14 @@ private:
return *r;
}
// Despite the fact that we're invoked for frames with SVG effects applied,
// we can actually get here. All continuations and special siblings of a
// we can actually get here. All continuations and IB split siblings of a
// frame with SVG effects applied will have the PreEffectsBBoxProperty
// property set on them. Therefore, the frames that are passed to us will
// always have that property set...well, with one exception. If the frames
// for an element with SVG effects applied have been subject to an "IB
// split", then the block frame(s) that caused the split will have been
// wrapped in anonymous, inline-block, nsBlockFrames of pseudo-type
// nsCSSAnonBoxes::mozAnonymousBlock. These "special sibling" anonymous
// nsCSSAnonBoxes::mozAnonymousBlock. These "IB split sibling" anonymous
// blocks will have the PreEffectsBBoxProperty property set on them, but
// they will never be passed to us. Instead, we'll be passed the block
// children that they wrap, which don't have the PreEffectsBBoxProperty