NS_IMETHODIMP nsTableOuterFrame::AppendFrames(ChildListID aListID, nsFrameList& aFrameList) { nsresult rv; // We only have two child frames: the inner table and a caption frame. // The inner frame is provided when we're initialized, and it cannot change if (kCaptionList == aListID) { NS_ASSERTION(aFrameList.IsEmpty() || aFrameList.FirstChild()->GetType() == nsGkAtoms::tableCaptionFrame, "appending non-caption frame to captionList"); mCaptionFrames.AppendFrames(this, aFrameList); rv = NS_OK; // Reflow the new caption frame. It's already marked dirty, so // just tell the pres shell. PresContext()->PresShell()-> FrameNeedsReflow(this, nsIPresShell::eTreeChange, NS_FRAME_HAS_DIRTY_CHILDREN); } else { NS_PRECONDITION(false, "unexpected child list"); rv = NS_ERROR_UNEXPECTED; } return rv; }
NS_IMETHODIMP nsTableOuterFrame::InsertFrames(ChildListID aListID, nsIFrame* aPrevFrame, nsFrameList& aFrameList) { if (kCaptionList == aListID) { NS_ASSERTION(!aPrevFrame || aPrevFrame->GetParent() == this, "inserting after sibling frame with different parent"); NS_ASSERTION(aFrameList.IsEmpty() || aFrameList.FirstChild()->GetType() == nsGkAtoms::tableCaptionFrame, "inserting non-caption frame into captionList"); mCaptionFrames.InsertFrames(nsnull, aPrevFrame, aFrameList); // Reflow the new caption frame. It's already marked dirty, so // just tell the pres shell. PresContext()->PresShell()-> FrameNeedsReflow(this, nsIPresShell::eTreeChange, NS_FRAME_HAS_DIRTY_CHILDREN); return NS_OK; } else { NS_PRECONDITION(!aPrevFrame, "invalid previous frame"); return AppendFrames(aListID, aFrameList); } }
NS_IMETHODIMP nsMenuFrame::InsertFrames(ChildListID aListID, nsIFrame* aPrevFrame, nsFrameList& aFrameList) { if (!mPopupFrame && (aListID == kPrincipalList || aListID == kPopupList)) { SetPopupFrame(aFrameList); if (mPopupFrame) { #ifdef DEBUG_LAYOUT nsBoxLayoutState state(PresContext()); SetDebug(state, aFrameList, mState & NS_STATE_CURRENTLY_IN_DEBUG); #endif PresContext()->PresShell()-> FrameNeedsReflow(this, nsIPresShell::eTreeChange, NS_FRAME_HAS_DIRTY_CHILDREN); } } if (aFrameList.IsEmpty()) return NS_OK; if (NS_UNLIKELY(aPrevFrame == mPopupFrame)) { aPrevFrame = nsnull; } return nsBoxFrame::InsertFrames(aListID, aPrevFrame, aFrameList); }
void nsMenuFrame::InsertFrames(ChildListID aListID, nsIFrame* aPrevFrame, nsFrameList& aFrameList) { if (!HasPopup() && (aListID == kPrincipalList || aListID == kPopupList)) { SetPopupFrame(aFrameList); if (HasPopup()) { #ifdef DEBUG_LAYOUT nsBoxLayoutState state(PresContext()); SetXULDebug(state, aFrameList, mState & NS_STATE_CURRENTLY_IN_DEBUG); #endif PresContext()->PresShell()-> FrameNeedsReflow(this, nsIPresShell::eTreeChange, NS_FRAME_HAS_DIRTY_CHILDREN); } } if (aFrameList.IsEmpty()) return; if (MOZ_UNLIKELY(aPrevFrame && aPrevFrame == GetPopup())) { aPrevFrame = nullptr; } nsBoxFrame::InsertFrames(aListID, aPrevFrame, aFrameList); }
// don't set mColCount here, it is done in AddColsToTable NS_IMETHODIMP nsTableColGroupFrame::SetInitialChildList(ChildListID aListID, nsFrameList& aChildList) { if (!mFrames.IsEmpty()) { // We already have child frames which means we've already been // initialized NS_NOTREACHED("unexpected second call to SetInitialChildList"); return NS_ERROR_UNEXPECTED; } if (aListID != kPrincipalList) { // All we know about is the principal child list. NS_NOTREACHED("unknown frame list"); return NS_ERROR_INVALID_ARG; } nsTableFrame* tableFrame = nsTableFrame::GetTableFrame(this); if (aChildList.IsEmpty()) { tableFrame->AppendAnonymousColFrames(this, GetSpan(), eColAnonymousColGroup, false); return NS_OK; } mFrames.AppendFrames(this, aChildList); return NS_OK; }
NS_IMETHODIMP nsCanvasFrame::SetInitialChildList(ChildListID aListID, nsFrameList& aChildList) { NS_ASSERTION(aListID != kPrincipalList || aChildList.IsEmpty() || aChildList.OnlyChild(), "Primary child list can have at most one frame in it"); return nsContainerFrame::SetInitialChildList(aListID, aChildList); }
nsresult nsPopupSetFrame::AddPopupFrameList(nsFrameList& aPopupFrameList) { while (!aPopupFrameList.IsEmpty()) { nsIFrame* f = aPopupFrameList.FirstChild(); // Clears out prev/next sibling points appropriately. Every frame // in our popup list has null next and prev pointers, they're logically // each in their own list. aPopupFrameList.RemoveFrame(f); nsresult rv = AddPopupFrame(f); NS_ENSURE_SUCCESS(rv, rv); } return NS_OK; }
// don't set mColCount here, it is done in AddColsToTable void nsTableColGroupFrame::SetInitialChildList(ChildListID aListID, nsFrameList& aChildList) { MOZ_ASSERT(mFrames.IsEmpty(), "unexpected second call to SetInitialChildList"); MOZ_ASSERT(aListID == kPrincipalList, "unexpected child list"); if (aChildList.IsEmpty()) { GetTableFrame()->AppendAnonymousColFrames(this, GetSpan(), eColAnonymousColGroup, false); return; } mFrames.AppendFrames(this, aChildList); }
void nsTableWrapperFrame::AppendFrames(ChildListID aListID, nsFrameList& aFrameList) { // We only have two child frames: the inner table and a caption frame. // The inner frame is provided when we're initialized, and it cannot change MOZ_ASSERT(kCaptionList == aListID, "unexpected child list"); MOZ_ASSERT(aFrameList.IsEmpty() || aFrameList.FirstChild()->IsTableCaption(), "appending non-caption frame to captionList"); mCaptionFrames.AppendFrames(this, aFrameList); // Reflow the new caption frame. It's already marked dirty, so // just tell the pres shell. PresContext()->PresShell()->FrameNeedsReflow(this, nsIPresShell::eTreeChange, NS_FRAME_HAS_DIRTY_CHILDREN); }
void nsTableWrapperFrame::InsertFrames(ChildListID aListID, nsIFrame* aPrevFrame, nsFrameList& aFrameList) { MOZ_ASSERT(kCaptionList == aListID, "unexpected child list"); MOZ_ASSERT(aFrameList.IsEmpty() || aFrameList.FirstChild()->IsTableCaption(), "inserting non-caption frame into captionList"); MOZ_ASSERT(!aPrevFrame || aPrevFrame->GetParent() == this, "inserting after sibling frame with different parent"); mCaptionFrames.InsertFrames(nullptr, aPrevFrame, aFrameList); // Reflow the new caption frame. It's already marked dirty, so // just tell the pres shell. PresContext()->PresShell()->FrameNeedsReflow(this, nsIPresShell::eTreeChange, NS_FRAME_HAS_DIRTY_CHILDREN); }
NS_IMETHODIMP nsMenuFrame::AppendFrames(nsIAtom* aListName, nsFrameList& aFrameList) { if (!mPopupFrame && (!aListName || aListName == nsGkAtoms::popupList)) { SetPopupFrame(aFrameList); if (mPopupFrame) { #ifdef DEBUG_LAYOUT nsBoxLayoutState state(PresContext()); SetDebug(state, aFrameList, mState & NS_STATE_CURRENTLY_IN_DEBUG); #endif PresContext()->PresShell()-> FrameNeedsReflow(this, nsIPresShell::eTreeChange, NS_FRAME_HAS_DIRTY_CHILDREN); } } if (aFrameList.IsEmpty()) return NS_OK; return nsBoxFrame::AppendFrames(aListName, aFrameList); }
NS_IMETHODIMP nsMenuFrame::AppendFrames(ChildListID aListID, nsFrameList& aFrameList) { if (!HasPopup() && (aListID == kPrincipalList || aListID == kPopupList)) { SetPopupFrame(aFrameList); if (HasPopup()) { #ifdef DEBUG_LAYOUT nsBoxLayoutState state(PresContext()); SetDebug(state, aFrameList, mState & NS_STATE_CURRENTLY_IN_DEBUG); #endif PresContext()->PresShell()-> FrameNeedsReflow(this, nsIPresShell::eTreeChange, NS_FRAME_HAS_DIRTY_CHILDREN); } } if (aFrameList.IsEmpty()) return NS_OK; return nsBoxFrame::AppendFrames(aListID, aFrameList); }