nsIFrame* nsFieldSetFrame::MaybeSetLegend(nsIFrame* aFrameList, nsIAtom* aListName) { if (!mLegendFrame && aFrameList->GetType() == nsLayoutAtoms::legendFrame) { NS_ASSERTION(!aListName, "Unexpected frame list when adding legend frame"); mLegendFrame = aFrameList; aFrameList = mLegendFrame->GetNextSibling(); mLegendFrame->SetNextSibling(mContentFrame); mFrames.SetFrames(mLegendFrame); AddStateBits(NS_FRAME_IS_DIRTY); if (GetParent()) { GetParent()->ReflowDirtyChild(mLegendFrame->GetPresContext()->GetPresShell(), this); } } return aFrameList; }
NS_IMETHODIMP nsFieldSetFrame::RemoveFrame(nsIAtom* aListName, nsIFrame* aOldFrame) { // For reference, see bug 70648, bug 276104 and bug 236071. if (aOldFrame == mLegendFrame) { NS_ASSERTION(!aListName, "Unexpected frame list when removing legend frame"); NS_ASSERTION(mLegendFrame->GetParent() == this, "Legend Parent has wrong parent"); NS_ASSERTION(mLegendFrame->GetNextSibling() == mContentFrame, "mContentFrame is not next sibling"); nsPresContext* presContext = GetPresContext(); mFrames.DestroyFrame(presContext, mLegendFrame); mLegendFrame = nsnull; AddStateBits(NS_FRAME_IS_DIRTY); if (GetParent()) { GetParent()->ReflowDirtyChild(presContext->GetPresShell(), this); } return NS_OK; } return mContentFrame->RemoveFrame(aListName, aOldFrame); }