зеркало из https://github.com/mozilla/pjs.git
r=troy; remove another 4 bytes from each block frame for a total of 10% today :-)
This commit is contained in:
Родитель
bfb8a951ea
Коммит
ec28ac0c5c
|
@ -1195,9 +1195,6 @@ nsBlockFrame::List(nsIPresContext* aPresContext, FILE* out, PRInt32 aIndent) con
|
|||
if (0 != mState) {
|
||||
fprintf(out, " [state=%08x]", mState);
|
||||
}
|
||||
if (0 != mFlags) {
|
||||
fprintf(out, " [flags=%x]", mFlags);
|
||||
}
|
||||
PRInt32 numInlineLines = 0;
|
||||
PRInt32 numBlockLines = 0;
|
||||
if (nsnull != mLines) {
|
||||
|
@ -1393,7 +1390,7 @@ nsBlockFrame::Reflow(nsIPresContext& aPresContext,
|
|||
|
||||
// Should we create a space manager?
|
||||
nsCOMPtr<nsISpaceManager> spaceManager;
|
||||
if (mFlags & NS_BLOCK_SPACE_MGR) {
|
||||
if (NS_BLOCK_SPACE_MGR & mState) {
|
||||
nsSpaceManager* rawPtr = new nsSpaceManager(this);
|
||||
if (!rawPtr) {
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
@ -1407,7 +1404,7 @@ nsBlockFrame::Reflow(nsIPresContext& aPresContext,
|
|||
}
|
||||
|
||||
nsBlockReflowState state(aReflowState, &aPresContext, this, aMetrics);
|
||||
if (NS_BLOCK_MARGIN_ROOT & mFlags) {
|
||||
if (NS_BLOCK_MARGIN_ROOT & mState) {
|
||||
state.mIsTopMarginRoot = PR_TRUE;
|
||||
state.mIsBottomMarginRoot = PR_TRUE;
|
||||
}
|
||||
|
@ -1505,7 +1502,7 @@ nsBlockFrame::Reflow(nsIPresContext& aPresContext,
|
|||
// Compute our final size
|
||||
ComputeFinalSize(aReflowState, state, aMetrics);
|
||||
|
||||
if (mFlags & NS_BLOCK_WRAP_SIZE) {
|
||||
if (NS_BLOCK_WRAP_SIZE & mState) {
|
||||
// When the area frame is supposed to wrap around all in-flow
|
||||
// children, make sure its big enough to include those that stick
|
||||
// outside the box.
|
||||
|
@ -1767,7 +1764,7 @@ nsBlockFrame::ComputeFinalSize(const nsHTMLReflowState& aReflowState,
|
|||
// There are two options here. We either shrink wrap around our
|
||||
// contents or we fluff out to the maximum block width. Note:
|
||||
// We always shrink wrap when given an unconstrained width.
|
||||
if ((0 == (NS_BLOCK_SHRINK_WRAP & mFlags)) &&
|
||||
if ((0 == (NS_BLOCK_SHRINK_WRAP & mState)) &&
|
||||
!aState.mUnconstrainedWidth &&
|
||||
!compact) {
|
||||
// Set our width to the max width if we aren't already that
|
||||
|
@ -5804,10 +5801,10 @@ nsBlockFrame::Init(nsIPresContext& aPresContext,
|
|||
nsIFrame* aPrevInFlow)
|
||||
{
|
||||
if (aPrevInFlow) {
|
||||
// Copy over the block/area frame flags
|
||||
// Copy over the block/area frame type flags
|
||||
nsBlockFrame* blockFrame = (nsBlockFrame*)aPrevInFlow;
|
||||
|
||||
SetFlags(blockFrame->mFlags);
|
||||
SetFlags(blockFrame->mState & NS_BLOCK_FLAGS_MASK);
|
||||
}
|
||||
|
||||
nsresult rv = nsBlockFrameSuper::Init(aPresContext, aContent, aParent,
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#define nsBlockFrame_h___
|
||||
|
||||
#include "nsHTMLContainerFrame.h"
|
||||
#include "nsHTMLParts.h"
|
||||
|
||||
class nsBlockReflowState;
|
||||
class nsBulletFrame;
|
||||
|
@ -36,11 +37,12 @@ class nsFirstLineFrame;
|
|||
#define NS_BLOCK_FRAME_LAST_LIST_INDEX NS_BLOCK_FRAME_BULLET_LIST_INDEX
|
||||
|
||||
/**
|
||||
* Additional frame-state bits
|
||||
* Additional frame-state bits. There are more of these bits
|
||||
* defined in nsHTMLParts.h (XXX: note: this should be cleaned up)
|
||||
*/
|
||||
#define NS_BLOCK_FRAME_HAS_OUTSIDE_BULLET 0x80000000
|
||||
#define NS_BLOCK_IS_HTML_PARAGRAPH 0x40000000
|
||||
#define NS_BLOCK_HAS_FIRST_LETTER_STYLE 0x10000000
|
||||
#define NS_BLOCK_HAS_FIRST_LETTER_STYLE 0x20000000
|
||||
|
||||
#define nsBlockFrameSuper nsHTMLContainerFrame
|
||||
|
||||
|
@ -144,7 +146,8 @@ protected:
|
|||
nsIStyleContext* GetFirstLetterStyle(nsIPresContext* aPresContext);
|
||||
|
||||
void SetFlags(PRUint32 aFlags) {
|
||||
mFlags = aFlags;
|
||||
mState &= ~NS_BLOCK_FLAGS_MASK;
|
||||
mState |= aFlags;
|
||||
}
|
||||
|
||||
PRBool HaveOutsideBullet() const {
|
||||
|
@ -346,9 +349,6 @@ protected:
|
|||
|
||||
nsLineBox* mLines;
|
||||
|
||||
// XXX subclass!
|
||||
PRUint32 mFlags;
|
||||
|
||||
// Text run information
|
||||
nsTextRun* mTextRuns;
|
||||
|
||||
|
|
|
@ -1195,9 +1195,6 @@ nsBlockFrame::List(nsIPresContext* aPresContext, FILE* out, PRInt32 aIndent) con
|
|||
if (0 != mState) {
|
||||
fprintf(out, " [state=%08x]", mState);
|
||||
}
|
||||
if (0 != mFlags) {
|
||||
fprintf(out, " [flags=%x]", mFlags);
|
||||
}
|
||||
PRInt32 numInlineLines = 0;
|
||||
PRInt32 numBlockLines = 0;
|
||||
if (nsnull != mLines) {
|
||||
|
@ -1393,7 +1390,7 @@ nsBlockFrame::Reflow(nsIPresContext& aPresContext,
|
|||
|
||||
// Should we create a space manager?
|
||||
nsCOMPtr<nsISpaceManager> spaceManager;
|
||||
if (mFlags & NS_BLOCK_SPACE_MGR) {
|
||||
if (NS_BLOCK_SPACE_MGR & mState) {
|
||||
nsSpaceManager* rawPtr = new nsSpaceManager(this);
|
||||
if (!rawPtr) {
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
@ -1407,7 +1404,7 @@ nsBlockFrame::Reflow(nsIPresContext& aPresContext,
|
|||
}
|
||||
|
||||
nsBlockReflowState state(aReflowState, &aPresContext, this, aMetrics);
|
||||
if (NS_BLOCK_MARGIN_ROOT & mFlags) {
|
||||
if (NS_BLOCK_MARGIN_ROOT & mState) {
|
||||
state.mIsTopMarginRoot = PR_TRUE;
|
||||
state.mIsBottomMarginRoot = PR_TRUE;
|
||||
}
|
||||
|
@ -1505,7 +1502,7 @@ nsBlockFrame::Reflow(nsIPresContext& aPresContext,
|
|||
// Compute our final size
|
||||
ComputeFinalSize(aReflowState, state, aMetrics);
|
||||
|
||||
if (mFlags & NS_BLOCK_WRAP_SIZE) {
|
||||
if (NS_BLOCK_WRAP_SIZE & mState) {
|
||||
// When the area frame is supposed to wrap around all in-flow
|
||||
// children, make sure its big enough to include those that stick
|
||||
// outside the box.
|
||||
|
@ -1767,7 +1764,7 @@ nsBlockFrame::ComputeFinalSize(const nsHTMLReflowState& aReflowState,
|
|||
// There are two options here. We either shrink wrap around our
|
||||
// contents or we fluff out to the maximum block width. Note:
|
||||
// We always shrink wrap when given an unconstrained width.
|
||||
if ((0 == (NS_BLOCK_SHRINK_WRAP & mFlags)) &&
|
||||
if ((0 == (NS_BLOCK_SHRINK_WRAP & mState)) &&
|
||||
!aState.mUnconstrainedWidth &&
|
||||
!compact) {
|
||||
// Set our width to the max width if we aren't already that
|
||||
|
@ -5804,10 +5801,10 @@ nsBlockFrame::Init(nsIPresContext& aPresContext,
|
|||
nsIFrame* aPrevInFlow)
|
||||
{
|
||||
if (aPrevInFlow) {
|
||||
// Copy over the block/area frame flags
|
||||
// Copy over the block/area frame type flags
|
||||
nsBlockFrame* blockFrame = (nsBlockFrame*)aPrevInFlow;
|
||||
|
||||
SetFlags(blockFrame->mFlags);
|
||||
SetFlags(blockFrame->mState & NS_BLOCK_FLAGS_MASK);
|
||||
}
|
||||
|
||||
nsresult rv = nsBlockFrameSuper::Init(aPresContext, aContent, aParent,
|
||||
|
|
|
@ -1195,9 +1195,6 @@ nsBlockFrame::List(nsIPresContext* aPresContext, FILE* out, PRInt32 aIndent) con
|
|||
if (0 != mState) {
|
||||
fprintf(out, " [state=%08x]", mState);
|
||||
}
|
||||
if (0 != mFlags) {
|
||||
fprintf(out, " [flags=%x]", mFlags);
|
||||
}
|
||||
PRInt32 numInlineLines = 0;
|
||||
PRInt32 numBlockLines = 0;
|
||||
if (nsnull != mLines) {
|
||||
|
@ -1393,7 +1390,7 @@ nsBlockFrame::Reflow(nsIPresContext& aPresContext,
|
|||
|
||||
// Should we create a space manager?
|
||||
nsCOMPtr<nsISpaceManager> spaceManager;
|
||||
if (mFlags & NS_BLOCK_SPACE_MGR) {
|
||||
if (NS_BLOCK_SPACE_MGR & mState) {
|
||||
nsSpaceManager* rawPtr = new nsSpaceManager(this);
|
||||
if (!rawPtr) {
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
@ -1407,7 +1404,7 @@ nsBlockFrame::Reflow(nsIPresContext& aPresContext,
|
|||
}
|
||||
|
||||
nsBlockReflowState state(aReflowState, &aPresContext, this, aMetrics);
|
||||
if (NS_BLOCK_MARGIN_ROOT & mFlags) {
|
||||
if (NS_BLOCK_MARGIN_ROOT & mState) {
|
||||
state.mIsTopMarginRoot = PR_TRUE;
|
||||
state.mIsBottomMarginRoot = PR_TRUE;
|
||||
}
|
||||
|
@ -1505,7 +1502,7 @@ nsBlockFrame::Reflow(nsIPresContext& aPresContext,
|
|||
// Compute our final size
|
||||
ComputeFinalSize(aReflowState, state, aMetrics);
|
||||
|
||||
if (mFlags & NS_BLOCK_WRAP_SIZE) {
|
||||
if (NS_BLOCK_WRAP_SIZE & mState) {
|
||||
// When the area frame is supposed to wrap around all in-flow
|
||||
// children, make sure its big enough to include those that stick
|
||||
// outside the box.
|
||||
|
@ -1767,7 +1764,7 @@ nsBlockFrame::ComputeFinalSize(const nsHTMLReflowState& aReflowState,
|
|||
// There are two options here. We either shrink wrap around our
|
||||
// contents or we fluff out to the maximum block width. Note:
|
||||
// We always shrink wrap when given an unconstrained width.
|
||||
if ((0 == (NS_BLOCK_SHRINK_WRAP & mFlags)) &&
|
||||
if ((0 == (NS_BLOCK_SHRINK_WRAP & mState)) &&
|
||||
!aState.mUnconstrainedWidth &&
|
||||
!compact) {
|
||||
// Set our width to the max width if we aren't already that
|
||||
|
@ -5804,10 +5801,10 @@ nsBlockFrame::Init(nsIPresContext& aPresContext,
|
|||
nsIFrame* aPrevInFlow)
|
||||
{
|
||||
if (aPrevInFlow) {
|
||||
// Copy over the block/area frame flags
|
||||
// Copy over the block/area frame type flags
|
||||
nsBlockFrame* blockFrame = (nsBlockFrame*)aPrevInFlow;
|
||||
|
||||
SetFlags(blockFrame->mFlags);
|
||||
SetFlags(blockFrame->mState & NS_BLOCK_FLAGS_MASK);
|
||||
}
|
||||
|
||||
nsresult rv = nsBlockFrameSuper::Init(aPresContext, aContent, aParent,
|
||||
|
|
|
@ -241,12 +241,12 @@ NS_CreateHTMLElement(nsIHTMLContent** aResult,
|
|||
// policies.
|
||||
|
||||
// Flags for block/area frames
|
||||
#define NS_BLOCK_SHRINK_WRAP 0x1
|
||||
#define NS_BLOCK_NO_AUTO_MARGINS 0x2
|
||||
#define NS_BLOCK_MARGIN_ROOT 0x4
|
||||
#define NS_BLOCK_DOCUMENT_ROOT 0x8
|
||||
#define NS_BLOCK_SPACE_MGR 0x10
|
||||
#define NS_BLOCK_WRAP_SIZE 0x20
|
||||
#define NS_BLOCK_SHRINK_WRAP 0x00010000
|
||||
#define NS_BLOCK_NO_AUTO_MARGINS 0x00020000
|
||||
#define NS_BLOCK_MARGIN_ROOT 0x00040000
|
||||
#define NS_BLOCK_SPACE_MGR 0x00080000
|
||||
#define NS_BLOCK_WRAP_SIZE 0x00100000
|
||||
#define NS_BLOCK_FLAGS_MASK 0x00ff0000
|
||||
|
||||
// Create a frame that supports "display: block" layout behavior
|
||||
extern nsresult NS_NewBlockFrame(nsIFrame** aNewFrame,
|
||||
|
@ -279,7 +279,7 @@ inline nsresult NS_NewTableCaptionFrame(nsIFrame** aNewFrame) {
|
|||
// This type of AreaFrame is the document root, a margin root, and the
|
||||
// initial containing block for absolutely positioned elements
|
||||
inline nsresult NS_NewDocumentElementFrame(nsIFrame** aNewFrame) {
|
||||
return NS_NewAreaFrame(aNewFrame, NS_BLOCK_SPACE_MGR|NS_BLOCK_DOCUMENT_ROOT|NS_BLOCK_MARGIN_ROOT);
|
||||
return NS_NewAreaFrame(aNewFrame, NS_BLOCK_SPACE_MGR|NS_BLOCK_MARGIN_ROOT);
|
||||
}
|
||||
|
||||
// This type of AreaFrame is a margin root, but does not shrink wrap
|
||||
|
|
|
@ -1195,9 +1195,6 @@ nsBlockFrame::List(nsIPresContext* aPresContext, FILE* out, PRInt32 aIndent) con
|
|||
if (0 != mState) {
|
||||
fprintf(out, " [state=%08x]", mState);
|
||||
}
|
||||
if (0 != mFlags) {
|
||||
fprintf(out, " [flags=%x]", mFlags);
|
||||
}
|
||||
PRInt32 numInlineLines = 0;
|
||||
PRInt32 numBlockLines = 0;
|
||||
if (nsnull != mLines) {
|
||||
|
@ -1393,7 +1390,7 @@ nsBlockFrame::Reflow(nsIPresContext& aPresContext,
|
|||
|
||||
// Should we create a space manager?
|
||||
nsCOMPtr<nsISpaceManager> spaceManager;
|
||||
if (mFlags & NS_BLOCK_SPACE_MGR) {
|
||||
if (NS_BLOCK_SPACE_MGR & mState) {
|
||||
nsSpaceManager* rawPtr = new nsSpaceManager(this);
|
||||
if (!rawPtr) {
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
@ -1407,7 +1404,7 @@ nsBlockFrame::Reflow(nsIPresContext& aPresContext,
|
|||
}
|
||||
|
||||
nsBlockReflowState state(aReflowState, &aPresContext, this, aMetrics);
|
||||
if (NS_BLOCK_MARGIN_ROOT & mFlags) {
|
||||
if (NS_BLOCK_MARGIN_ROOT & mState) {
|
||||
state.mIsTopMarginRoot = PR_TRUE;
|
||||
state.mIsBottomMarginRoot = PR_TRUE;
|
||||
}
|
||||
|
@ -1505,7 +1502,7 @@ nsBlockFrame::Reflow(nsIPresContext& aPresContext,
|
|||
// Compute our final size
|
||||
ComputeFinalSize(aReflowState, state, aMetrics);
|
||||
|
||||
if (mFlags & NS_BLOCK_WRAP_SIZE) {
|
||||
if (NS_BLOCK_WRAP_SIZE & mState) {
|
||||
// When the area frame is supposed to wrap around all in-flow
|
||||
// children, make sure its big enough to include those that stick
|
||||
// outside the box.
|
||||
|
@ -1767,7 +1764,7 @@ nsBlockFrame::ComputeFinalSize(const nsHTMLReflowState& aReflowState,
|
|||
// There are two options here. We either shrink wrap around our
|
||||
// contents or we fluff out to the maximum block width. Note:
|
||||
// We always shrink wrap when given an unconstrained width.
|
||||
if ((0 == (NS_BLOCK_SHRINK_WRAP & mFlags)) &&
|
||||
if ((0 == (NS_BLOCK_SHRINK_WRAP & mState)) &&
|
||||
!aState.mUnconstrainedWidth &&
|
||||
!compact) {
|
||||
// Set our width to the max width if we aren't already that
|
||||
|
@ -5804,10 +5801,10 @@ nsBlockFrame::Init(nsIPresContext& aPresContext,
|
|||
nsIFrame* aPrevInFlow)
|
||||
{
|
||||
if (aPrevInFlow) {
|
||||
// Copy over the block/area frame flags
|
||||
// Copy over the block/area frame type flags
|
||||
nsBlockFrame* blockFrame = (nsBlockFrame*)aPrevInFlow;
|
||||
|
||||
SetFlags(blockFrame->mFlags);
|
||||
SetFlags(blockFrame->mState & NS_BLOCK_FLAGS_MASK);
|
||||
}
|
||||
|
||||
nsresult rv = nsBlockFrameSuper::Init(aPresContext, aContent, aParent,
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#define nsBlockFrame_h___
|
||||
|
||||
#include "nsHTMLContainerFrame.h"
|
||||
#include "nsHTMLParts.h"
|
||||
|
||||
class nsBlockReflowState;
|
||||
class nsBulletFrame;
|
||||
|
@ -36,11 +37,12 @@ class nsFirstLineFrame;
|
|||
#define NS_BLOCK_FRAME_LAST_LIST_INDEX NS_BLOCK_FRAME_BULLET_LIST_INDEX
|
||||
|
||||
/**
|
||||
* Additional frame-state bits
|
||||
* Additional frame-state bits. There are more of these bits
|
||||
* defined in nsHTMLParts.h (XXX: note: this should be cleaned up)
|
||||
*/
|
||||
#define NS_BLOCK_FRAME_HAS_OUTSIDE_BULLET 0x80000000
|
||||
#define NS_BLOCK_IS_HTML_PARAGRAPH 0x40000000
|
||||
#define NS_BLOCK_HAS_FIRST_LETTER_STYLE 0x10000000
|
||||
#define NS_BLOCK_HAS_FIRST_LETTER_STYLE 0x20000000
|
||||
|
||||
#define nsBlockFrameSuper nsHTMLContainerFrame
|
||||
|
||||
|
@ -144,7 +146,8 @@ protected:
|
|||
nsIStyleContext* GetFirstLetterStyle(nsIPresContext* aPresContext);
|
||||
|
||||
void SetFlags(PRUint32 aFlags) {
|
||||
mFlags = aFlags;
|
||||
mState &= ~NS_BLOCK_FLAGS_MASK;
|
||||
mState |= aFlags;
|
||||
}
|
||||
|
||||
PRBool HaveOutsideBullet() const {
|
||||
|
@ -346,9 +349,6 @@ protected:
|
|||
|
||||
nsLineBox* mLines;
|
||||
|
||||
// XXX subclass!
|
||||
PRUint32 mFlags;
|
||||
|
||||
// Text run information
|
||||
nsTextRun* mTextRuns;
|
||||
|
||||
|
|
|
@ -1195,9 +1195,6 @@ nsBlockFrame::List(nsIPresContext* aPresContext, FILE* out, PRInt32 aIndent) con
|
|||
if (0 != mState) {
|
||||
fprintf(out, " [state=%08x]", mState);
|
||||
}
|
||||
if (0 != mFlags) {
|
||||
fprintf(out, " [flags=%x]", mFlags);
|
||||
}
|
||||
PRInt32 numInlineLines = 0;
|
||||
PRInt32 numBlockLines = 0;
|
||||
if (nsnull != mLines) {
|
||||
|
@ -1393,7 +1390,7 @@ nsBlockFrame::Reflow(nsIPresContext& aPresContext,
|
|||
|
||||
// Should we create a space manager?
|
||||
nsCOMPtr<nsISpaceManager> spaceManager;
|
||||
if (mFlags & NS_BLOCK_SPACE_MGR) {
|
||||
if (NS_BLOCK_SPACE_MGR & mState) {
|
||||
nsSpaceManager* rawPtr = new nsSpaceManager(this);
|
||||
if (!rawPtr) {
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
@ -1407,7 +1404,7 @@ nsBlockFrame::Reflow(nsIPresContext& aPresContext,
|
|||
}
|
||||
|
||||
nsBlockReflowState state(aReflowState, &aPresContext, this, aMetrics);
|
||||
if (NS_BLOCK_MARGIN_ROOT & mFlags) {
|
||||
if (NS_BLOCK_MARGIN_ROOT & mState) {
|
||||
state.mIsTopMarginRoot = PR_TRUE;
|
||||
state.mIsBottomMarginRoot = PR_TRUE;
|
||||
}
|
||||
|
@ -1505,7 +1502,7 @@ nsBlockFrame::Reflow(nsIPresContext& aPresContext,
|
|||
// Compute our final size
|
||||
ComputeFinalSize(aReflowState, state, aMetrics);
|
||||
|
||||
if (mFlags & NS_BLOCK_WRAP_SIZE) {
|
||||
if (NS_BLOCK_WRAP_SIZE & mState) {
|
||||
// When the area frame is supposed to wrap around all in-flow
|
||||
// children, make sure its big enough to include those that stick
|
||||
// outside the box.
|
||||
|
@ -1767,7 +1764,7 @@ nsBlockFrame::ComputeFinalSize(const nsHTMLReflowState& aReflowState,
|
|||
// There are two options here. We either shrink wrap around our
|
||||
// contents or we fluff out to the maximum block width. Note:
|
||||
// We always shrink wrap when given an unconstrained width.
|
||||
if ((0 == (NS_BLOCK_SHRINK_WRAP & mFlags)) &&
|
||||
if ((0 == (NS_BLOCK_SHRINK_WRAP & mState)) &&
|
||||
!aState.mUnconstrainedWidth &&
|
||||
!compact) {
|
||||
// Set our width to the max width if we aren't already that
|
||||
|
@ -5804,10 +5801,10 @@ nsBlockFrame::Init(nsIPresContext& aPresContext,
|
|||
nsIFrame* aPrevInFlow)
|
||||
{
|
||||
if (aPrevInFlow) {
|
||||
// Copy over the block/area frame flags
|
||||
// Copy over the block/area frame type flags
|
||||
nsBlockFrame* blockFrame = (nsBlockFrame*)aPrevInFlow;
|
||||
|
||||
SetFlags(blockFrame->mFlags);
|
||||
SetFlags(blockFrame->mState & NS_BLOCK_FLAGS_MASK);
|
||||
}
|
||||
|
||||
nsresult rv = nsBlockFrameSuper::Init(aPresContext, aContent, aParent,
|
||||
|
|
|
@ -1195,9 +1195,6 @@ nsBlockFrame::List(nsIPresContext* aPresContext, FILE* out, PRInt32 aIndent) con
|
|||
if (0 != mState) {
|
||||
fprintf(out, " [state=%08x]", mState);
|
||||
}
|
||||
if (0 != mFlags) {
|
||||
fprintf(out, " [flags=%x]", mFlags);
|
||||
}
|
||||
PRInt32 numInlineLines = 0;
|
||||
PRInt32 numBlockLines = 0;
|
||||
if (nsnull != mLines) {
|
||||
|
@ -1393,7 +1390,7 @@ nsBlockFrame::Reflow(nsIPresContext& aPresContext,
|
|||
|
||||
// Should we create a space manager?
|
||||
nsCOMPtr<nsISpaceManager> spaceManager;
|
||||
if (mFlags & NS_BLOCK_SPACE_MGR) {
|
||||
if (NS_BLOCK_SPACE_MGR & mState) {
|
||||
nsSpaceManager* rawPtr = new nsSpaceManager(this);
|
||||
if (!rawPtr) {
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
@ -1407,7 +1404,7 @@ nsBlockFrame::Reflow(nsIPresContext& aPresContext,
|
|||
}
|
||||
|
||||
nsBlockReflowState state(aReflowState, &aPresContext, this, aMetrics);
|
||||
if (NS_BLOCK_MARGIN_ROOT & mFlags) {
|
||||
if (NS_BLOCK_MARGIN_ROOT & mState) {
|
||||
state.mIsTopMarginRoot = PR_TRUE;
|
||||
state.mIsBottomMarginRoot = PR_TRUE;
|
||||
}
|
||||
|
@ -1505,7 +1502,7 @@ nsBlockFrame::Reflow(nsIPresContext& aPresContext,
|
|||
// Compute our final size
|
||||
ComputeFinalSize(aReflowState, state, aMetrics);
|
||||
|
||||
if (mFlags & NS_BLOCK_WRAP_SIZE) {
|
||||
if (NS_BLOCK_WRAP_SIZE & mState) {
|
||||
// When the area frame is supposed to wrap around all in-flow
|
||||
// children, make sure its big enough to include those that stick
|
||||
// outside the box.
|
||||
|
@ -1767,7 +1764,7 @@ nsBlockFrame::ComputeFinalSize(const nsHTMLReflowState& aReflowState,
|
|||
// There are two options here. We either shrink wrap around our
|
||||
// contents or we fluff out to the maximum block width. Note:
|
||||
// We always shrink wrap when given an unconstrained width.
|
||||
if ((0 == (NS_BLOCK_SHRINK_WRAP & mFlags)) &&
|
||||
if ((0 == (NS_BLOCK_SHRINK_WRAP & mState)) &&
|
||||
!aState.mUnconstrainedWidth &&
|
||||
!compact) {
|
||||
// Set our width to the max width if we aren't already that
|
||||
|
@ -5804,10 +5801,10 @@ nsBlockFrame::Init(nsIPresContext& aPresContext,
|
|||
nsIFrame* aPrevInFlow)
|
||||
{
|
||||
if (aPrevInFlow) {
|
||||
// Copy over the block/area frame flags
|
||||
// Copy over the block/area frame type flags
|
||||
nsBlockFrame* blockFrame = (nsBlockFrame*)aPrevInFlow;
|
||||
|
||||
SetFlags(blockFrame->mFlags);
|
||||
SetFlags(blockFrame->mState & NS_BLOCK_FLAGS_MASK);
|
||||
}
|
||||
|
||||
nsresult rv = nsBlockFrameSuper::Init(aPresContext, aContent, aParent,
|
||||
|
|
|
@ -241,12 +241,12 @@ NS_CreateHTMLElement(nsIHTMLContent** aResult,
|
|||
// policies.
|
||||
|
||||
// Flags for block/area frames
|
||||
#define NS_BLOCK_SHRINK_WRAP 0x1
|
||||
#define NS_BLOCK_NO_AUTO_MARGINS 0x2
|
||||
#define NS_BLOCK_MARGIN_ROOT 0x4
|
||||
#define NS_BLOCK_DOCUMENT_ROOT 0x8
|
||||
#define NS_BLOCK_SPACE_MGR 0x10
|
||||
#define NS_BLOCK_WRAP_SIZE 0x20
|
||||
#define NS_BLOCK_SHRINK_WRAP 0x00010000
|
||||
#define NS_BLOCK_NO_AUTO_MARGINS 0x00020000
|
||||
#define NS_BLOCK_MARGIN_ROOT 0x00040000
|
||||
#define NS_BLOCK_SPACE_MGR 0x00080000
|
||||
#define NS_BLOCK_WRAP_SIZE 0x00100000
|
||||
#define NS_BLOCK_FLAGS_MASK 0x00ff0000
|
||||
|
||||
// Create a frame that supports "display: block" layout behavior
|
||||
extern nsresult NS_NewBlockFrame(nsIFrame** aNewFrame,
|
||||
|
@ -279,7 +279,7 @@ inline nsresult NS_NewTableCaptionFrame(nsIFrame** aNewFrame) {
|
|||
// This type of AreaFrame is the document root, a margin root, and the
|
||||
// initial containing block for absolutely positioned elements
|
||||
inline nsresult NS_NewDocumentElementFrame(nsIFrame** aNewFrame) {
|
||||
return NS_NewAreaFrame(aNewFrame, NS_BLOCK_SPACE_MGR|NS_BLOCK_DOCUMENT_ROOT|NS_BLOCK_MARGIN_ROOT);
|
||||
return NS_NewAreaFrame(aNewFrame, NS_BLOCK_SPACE_MGR|NS_BLOCK_MARGIN_ROOT);
|
||||
}
|
||||
|
||||
// This type of AreaFrame is a margin root, but does not shrink wrap
|
||||
|
|
Загрузка…
Ссылка в новой задаче