/* virtual */ nscoord nsTableOuterFrame::GetMinWidth(nsRenderingContext *aRenderingContext) { nscoord width = nsLayoutUtils::IntrinsicForContainer(aRenderingContext, mInnerTableFrame, nsLayoutUtils::MIN_WIDTH); DISPLAY_MIN_WIDTH(this, width); if (mCaptionFrame) { nscoord capWidth = nsLayoutUtils::IntrinsicForContainer(aRenderingContext, mCaptionFrame, nsLayoutUtils::MIN_WIDTH); if (HasSideCaption()) { width += capWidth; } else { if (capWidth > width) { width = capWidth; } } } return width; }
NS_IMETHODIMP nsTableOuterFrame::RemoveFrame(ChildListID aListID, nsIFrame* aOldFrame) { // We only have two child frames: the inner table and one caption frame. // The inner frame can't be removed so this should be the caption NS_PRECONDITION(kCaptionList == aListID, "can't remove inner frame"); if (HasSideCaption()) { // The old caption width had an effect on the inner table width so // we're going to need to reflow it. Mark it dirty InnerTableFrame()->AddStateBits(NS_FRAME_IS_DIRTY); } // Remove the frame and destroy it mCaptionFrames.DestroyFrame(aOldFrame); PresContext()->PresShell()-> FrameNeedsReflow(this, nsIPresShell::eTreeChange, NS_FRAME_HAS_DIRTY_CHILDREN); // also means child removed return NS_OK; }