Bug 243370, deCOMtaminate parts of nsIFrame that come from nsIBox, part 2, p=anlan@lange.cx, r+sr=roc

This commit is contained in:
Olli.Pettay%helsinki.fi 2007-01-31 16:02:42 +00:00
Родитель 8a4b57e4d0
Коммит b3361bf8f9
34 изменённых файлов: 251 добавлений и 549 удалений

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

@ -346,9 +346,7 @@ nsIFrame* nsDisplayList::HitTest(nsDisplayListBuilder* aBuilder, nsPoint aPt) co
nsIFrame* f = item->HitTest(aBuilder, aPt);
// Handle the XUL 'mousethrough' feature.
if (f) {
PRBool mouseThrough = PR_FALSE;
f->GetMouseThrough(mouseThrough);
if (!mouseThrough)
if (!f->GetMouseThrough())
return f;
}
}

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

@ -1821,28 +1821,25 @@ nsTextControlFrame::GetMaxSize(nsBoxLayoutState& aState)
return nsBox::GetMaxSize(aState);
}
NS_IMETHODIMP
nsTextControlFrame::GetAscent(nsBoxLayoutState& aState, nscoord& aAscent)
nscoord
nsTextControlFrame::GetBoxAscent(nsBoxLayoutState& aState)
{
// First calculate the ascent of the text inside
nsresult rv = nsStackFrame::GetAscent(aState, aAscent);
NS_ENSURE_SUCCESS(rv, rv);
nscoord ascent = nsStackFrame::GetBoxAscent(aState);
// Now adjust the ascent for our borders and padding
nsMargin borderPadding;
GetBorderAndPadding(borderPadding);
aAscent += borderPadding.top;
ascent += borderPadding.top;
return NS_OK;
return ascent;
}
NS_IMETHODIMP
nsTextControlFrame::IsCollapsed(nsBoxLayoutState& aBoxLayoutState,
PRBool& aCollapsed)
PRBool
nsTextControlFrame::IsCollapsed(nsBoxLayoutState& aBoxLayoutState)
{
// We're never collapsed in the box sense.
aCollapsed = PR_FALSE;
return NS_OK;
return PR_FALSE;
}
PRBool

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

@ -89,9 +89,8 @@ public:
virtual nsSize GetPrefSize(nsBoxLayoutState& aBoxLayoutState);
virtual nsSize GetMinSize(nsBoxLayoutState& aBoxLayoutState);
virtual nsSize GetMaxSize(nsBoxLayoutState& aBoxLayoutState);
NS_IMETHOD GetAscent(nsBoxLayoutState& aBoxLayoutState, nscoord& aAscent);
NS_IMETHOD IsCollapsed(nsBoxLayoutState& aBoxLayoutState,
PRBool& aCollapsed);
virtual nscoord GetBoxAscent(nsBoxLayoutState& aBoxLayoutState);
virtual PRBool IsCollapsed(nsBoxLayoutState& aBoxLayoutState);
DECL_DO_GLOBAL_REFLOW_COUNT_DSP(nsTextControlFrame, nsStackFrame)

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

@ -146,9 +146,7 @@ struct nsBoxLayoutMetrics
nscoord mAscent;
nsSize mLastSize;
nsSize mOverflow;
PRPackedBool mIncludeOverflow;
PRPackedBool mWasCollapsed;
};
@ -5772,20 +5770,6 @@ void nsFrame::FillCursorInformationFromStyle(const nsStyleUserInterface* ui,
}
}
NS_IMETHODIMP
nsFrame::GetOverflow(nsSize& aOverflow)
{
aOverflow = BoxMetrics()->mOverflow;
return NS_OK;
}
NS_IMETHODIMP
nsFrame::SetIncludeOverflow(PRBool aInclude)
{
BoxMetrics()->mIncludeOverflow = aInclude;
return NS_OK;
}
NS_IMETHODIMP
nsFrame::RefreshSizeCache(nsBoxLayoutState& aState)
{
@ -5900,9 +5884,7 @@ nsFrame::GetPrefSize(nsBoxLayoutState& aState)
return size;
}
PRBool isCollapsed = PR_FALSE;
IsCollapsed(aState, isCollapsed);
if (isCollapsed)
if (IsCollapsed(aState))
return size;
// get our size in CSS.
@ -5936,9 +5918,7 @@ nsFrame::GetMinSize(nsBoxLayoutState& aState)
return size;
}
PRBool isCollapsed = PR_FALSE;
IsCollapsed(aState, isCollapsed);
if (isCollapsed)
if (IsCollapsed(aState))
return size;
// get our size in CSS.
@ -5968,9 +5948,7 @@ nsFrame::GetMaxSize(nsBoxLayoutState& aState)
return size;
}
PRBool isCollapsed = PR_FALSE;
IsCollapsed(aState, isCollapsed);
if (isCollapsed)
if (IsCollapsed(aState))
return size;
size = nsBox::GetMaxSize(aState);
@ -5979,35 +5957,26 @@ nsFrame::GetMaxSize(nsBoxLayoutState& aState)
return size;
}
NS_IMETHODIMP
nsFrame::GetFlex(nsBoxLayoutState& aState, nscoord& aFlex)
nscoord
nsFrame::GetFlex(nsBoxLayoutState& aState)
{
nsBoxLayoutMetrics *metrics = BoxMetrics();
if (!DoesNeedRecalc(metrics->mFlex)) {
aFlex = metrics->mFlex;
return NS_OK;
}
if (!DoesNeedRecalc(metrics->mFlex))
return metrics->mFlex;
metrics->mFlex = 0;
nsBox::GetFlex(aState, metrics->mFlex);
metrics->mFlex = nsBox::GetFlex(aState);
aFlex = metrics->mFlex;
return NS_OK;
return metrics->mFlex;
}
NS_IMETHODIMP
nsFrame::GetAscent(nsBoxLayoutState& aState, nscoord& aAscent)
nscoord
nsFrame::GetBoxAscent(nsBoxLayoutState& aState)
{
nsBoxLayoutMetrics *metrics = BoxMetrics();
if (!DoesNeedRecalc(metrics->mAscent)) {
aAscent = metrics->mAscent;
return NS_OK;
}
if (!DoesNeedRecalc(metrics->mAscent))
return metrics->mAscent;
PRBool isCollapsed = PR_FALSE;
IsCollapsed(aState, isCollapsed);
if (isCollapsed) {
if (IsCollapsed(aState)) {
metrics->mAscent = 0;
} else {
// Refresh our caches with new sizes.
@ -6018,9 +5987,7 @@ nsFrame::GetAscent(nsBoxLayoutState& aState, nscoord& aAscent)
metrics->mAscent += m.top;
}
aAscent = metrics->mAscent;
return NS_OK;
return metrics->mAscent;
}
nsresult
@ -6038,9 +6005,7 @@ nsFrame::DoLayout(nsBoxLayoutState& aState)
rv = BoxReflow(aState, presContext, desiredSize, rendContext,
ourRect.x, ourRect.y, ourRect.width, ourRect.height);
PRBool collapsed = PR_FALSE;
IsCollapsed(aState, collapsed);
if (collapsed) {
if (IsCollapsed(aState)) {
SetSize(nsSize(0, 0));
} else {
@ -6242,48 +6207,40 @@ nsFrame::BoxReflow(nsBoxLayoutState& aState,
// see if the overflow option is set. If it is then if our child's bounds overflow then
// we will set the child's rect to include the overflow size.
if (GetStateBits() & NS_FRAME_OUTSIDE_CHILDREN) {
// make sure we store the overflow size
if (GetStateBits() & NS_FRAME_OUTSIDE_CHILDREN) {
// make sure we store the overflow size
// This kinda sucks. We should be able to handle the case
// where there's overflow above or to the left of the
// origin. But for now just chop that stuff off.
// This kinda sucks. We should be able to handle the case
// where there's overflow above or to the left of the
// origin. But for now just chop that stuff off.
metrics->mOverflow.width = aDesiredSize.mOverflowArea.XMost();
metrics->mOverflow.height = aDesiredSize.mOverflowArea.YMost();
//printf("OutsideChildren width=%d, height=%d\n", aDesiredSize.mOverflowArea.width, aDesiredSize.mOverflowArea.height);
aDesiredSize.width = aDesiredSize.mOverflowArea.XMost();
if (aDesiredSize.width <= aWidth)
aDesiredSize.height = aDesiredSize.mOverflowArea.YMost();
else {
if (aDesiredSize.width > aWidth)
{
nscoord computedWidth = aDesiredSize.width -
reflowState.mComputedBorderPadding.LeftRight();
computedWidth = PR_MAX(computedWidth, 0);
reflowState.SetComputedWidth(computedWidth);
reflowState.availableWidth = aDesiredSize.width;
DidReflow(aPresContext, &reflowState, NS_FRAME_REFLOW_FINISHED);
#ifdef DEBUG_REFLOW
nsAdaptorAddIndents();
nsAdaptorPrintReason(reflowState);
printf("\n");
#endif
AddStateBits(NS_FRAME_IS_DIRTY);
WillReflow(aPresContext);
Reflow(aPresContext, aDesiredSize, reflowState, status);
if (GetStateBits() & NS_FRAME_OUTSIDE_CHILDREN)
aDesiredSize.height = aDesiredSize.mOverflowArea.YMost();
// include the overflow size in our child's rect?
if (metrics->mIncludeOverflow) {
//printf("OutsideChildren width=%d, height=%d\n", aDesiredSize.mOverflowArea.width, aDesiredSize.mOverflowArea.height);
aDesiredSize.width = aDesiredSize.mOverflowArea.XMost();
if (aDesiredSize.width <= aWidth)
aDesiredSize.height = aDesiredSize.mOverflowArea.YMost();
else {
if (aDesiredSize.width > aWidth)
{
nscoord computedWidth = aDesiredSize.width -
reflowState.mComputedBorderPadding.LeftRight();
computedWidth = PR_MAX(computedWidth, 0);
reflowState.SetComputedWidth(computedWidth);
reflowState.availableWidth = aDesiredSize.width;
DidReflow(aPresContext, &reflowState, NS_FRAME_REFLOW_FINISHED);
#ifdef DEBUG_REFLOW
nsAdaptorAddIndents();
nsAdaptorPrintReason(reflowState);
printf("\n");
#endif
AddStateBits(NS_FRAME_IS_DIRTY);
WillReflow(aPresContext);
Reflow(aPresContext, aDesiredSize, reflowState, status);
if (GetStateBits() & NS_FRAME_OUTSIDE_CHILDREN)
aDesiredSize.height = aDesiredSize.mOverflowArea.YMost();
}
}
}
} else {
metrics->mOverflow.width = aDesiredSize.width;
metrics->mOverflow.height = aDesiredSize.height;
}
}
}
}
if (redrawAfterReflow) {
nsRect r = GetRect();
@ -6302,9 +6259,7 @@ nsFrame::BoxReflow(nsBoxLayoutState& aState,
aDesiredSize, aX, aY, layoutFlags | NS_FRAME_NO_MOVE_FRAME);
// Save the ascent. (bug 103925)
PRBool isCollapsed = PR_FALSE;
IsCollapsed(aState, isCollapsed);
if (isCollapsed) {
if (IsCollapsed(aState)) {
metrics->mAscent = 0;
} else {
if (aDesiredSize.ascent == nsHTMLReflowMetrics::ASK_FOR_BASELINE) {
@ -6381,9 +6336,7 @@ nsFrame::SetParent(const nsIFrame* aParent)
DeleteProperty(nsGkAtoms::boxMetricsProperty);
if (aParent && aParent->IsBoxFrame()) {
PRBool needsWidget = PR_FALSE;
aParent->ChildrenMustHaveWidgets(needsWidget);
if (needsWidget) {
if (aParent->ChildrenMustHaveWidgets()) {
nsHTMLContainerFrame::CreateViewForFrame(this, nsnull, PR_TRUE);
nsIView* view = GetView();
if (!view->HasWidget())
@ -6415,8 +6368,6 @@ nsFrame::InitBoxMetrics(PRBool aClear)
nsFrame::MarkIntrinsicWidthsDirty();
metrics->mBlockAscent = 0;
metrics->mLastSize.SizeTo(0, 0);
metrics->mOverflow.SizeTo(0, 0);
metrics->mIncludeOverflow = PR_TRUE;
metrics->mWasCollapsed = PR_FALSE;
}

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

@ -363,10 +363,8 @@ public:
virtual nsSize GetPrefSize(nsBoxLayoutState& aBoxLayoutState);
virtual nsSize GetMinSize(nsBoxLayoutState& aBoxLayoutState);
virtual nsSize GetMaxSize(nsBoxLayoutState& aBoxLayoutState);
NS_IMETHOD GetFlex(nsBoxLayoutState& aBoxLayoutState, nscoord& aFlex);
NS_IMETHOD GetAscent(nsBoxLayoutState& aBoxLayoutState, nscoord& aAscent);
NS_IMETHOD SetIncludeOverflow(PRBool aInclude);
NS_IMETHOD GetOverflow(nsSize& aOverflow);
virtual nscoord GetFlex(nsBoxLayoutState& aBoxLayoutState);
virtual nscoord GetBoxAscent(nsBoxLayoutState& aBoxLayoutState);
//--------------------------------------------------
// Additional methods

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

@ -1041,23 +1041,22 @@ nsXULScrollFrame::GetType() const
return nsGkAtoms::scrollFrame;
}
NS_IMETHODIMP
nsXULScrollFrame::GetAscent(nsBoxLayoutState& aState, nscoord& aAscent)
nscoord
nsXULScrollFrame::GetBoxAscent(nsBoxLayoutState& aState)
{
aAscent = 0;
if (!mInner.mScrolledFrame)
return NS_OK;
return 0;
nsresult rv = mInner.mScrolledFrame->GetAscent(aState, aAscent);
nscoord ascent = mInner.mScrolledFrame->GetBoxAscent(aState);
nsMargin m(0,0,0,0);
GetBorderAndPadding(m);
aAscent += m.top;
ascent += m.top;
GetMargin(m);
aAscent += m.top;
ascent += m.top;
GetInset(m);
aAscent += m.top;
ascent += m.top;
return rv;
return ascent;
}
nsSize

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

@ -478,7 +478,7 @@ public:
virtual nsSize GetMinSize(nsBoxLayoutState& aBoxLayoutState);
virtual nsSize GetPrefSize(nsBoxLayoutState& aBoxLayoutState);
virtual nsSize GetMaxSize(nsBoxLayoutState& aBoxLayoutState);
NS_IMETHOD GetAscent(nsBoxLayoutState& aBoxLayoutState, nscoord& aAscent);
virtual nscoord GetBoxAscent(nsBoxLayoutState& aBoxLayoutState);
NS_IMETHOD DoLayout(nsBoxLayoutState& aBoxLayoutState);
NS_IMETHOD GetPadding(nsMargin& aPadding);

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

@ -100,10 +100,10 @@ struct nsMargin;
typedef class nsIFrame nsIBox;
// IID for the nsIFrame interface
// f02b2868-ac80-4e38-978c-02df6477d294
// 4ea7876f-1550-40d4-a764-739a0e4289a1
#define NS_IFRAME_IID \
{ 0xf02b2868, 0xac80, 0x4e38, \
{ 0x97, 0x8c, 0x02, 0xdf, 0x64, 0x77, 0xd2, 0x94 } }
{ 0x4ea7876f, 0x1550, 0x40d4, \
{ 0xa7, 0x64, 0x73, 0x9a, 0x0e, 0x42, 0x89, 0xa1 } }
/**
* Indication of how the frame can be split. This is used when doing runaround
@ -1845,18 +1845,18 @@ NS_PTR_TO_INT32(frame->GetProperty(nsGkAtoms::embeddingLevel))
*/
virtual nsSize GetMaxSize(nsBoxLayoutState& aBoxLayoutState) = 0;
NS_IMETHOD GetFlex(nsBoxLayoutState& aBoxLayoutState, nscoord& aFlex)=0;
NS_HIDDEN_(nsresult)
GetOrdinal(nsBoxLayoutState& aBoxLayoutState, PRUint32& aOrdinal);
/**
* This returns the minimum size for the scroll area if this frame is
* being scrolled. Usually it's (0,0).
*/
virtual nsSize GetMinSizeForScrollArea(nsBoxLayoutState& aBoxLayoutState) = 0;
NS_IMETHOD GetAscent(nsBoxLayoutState& aBoxLayoutState, nscoord& aAscent)=0;
NS_IMETHOD IsCollapsed(nsBoxLayoutState& aBoxLayoutState, PRBool& aCollapsed)=0;
// Implemented in nsBox, used in nsBoxFrame
PRUint32 GetOrdinal(nsBoxLayoutState& aBoxLayoutState);
virtual nscoord GetFlex(nsBoxLayoutState& aBoxLayoutState) = 0;
virtual nscoord GetBoxAscent(nsBoxLayoutState& aBoxLayoutState) = 0;
virtual PRBool IsCollapsed(nsBoxLayoutState& aBoxLayoutState) = 0;
// This does not alter the overflow area. If the caller is changing
// the box size, the caller is responsible for updating the overflow
// area. It's enough to just call Layout or SyncLayout on the
@ -1891,24 +1891,16 @@ NS_PTR_TO_INT32(frame->GetProperty(nsGkAtoms::embeddingLevel))
NS_IMETHOD GetMargin(nsMargin& aMargin)=0;
NS_IMETHOD SetLayoutManager(nsIBoxLayout* aLayout)=0;
NS_IMETHOD GetLayoutManager(nsIBoxLayout** aLayout)=0;
NS_HIDDEN_(nsresult) GetContentRect(nsRect& aContentRect);
NS_HIDDEN_(nsresult) GetClientRect(nsRect& aContentRect);
NS_IMETHOD GetVAlign(Valignment& aAlign) = 0;
NS_IMETHOD GetHAlign(Halignment& aAlign) = 0;
PRBool IsHorizontal() const { return (mState & NS_STATE_IS_HORIZONTAL) != 0; }
nsresult GetOrientation(PRBool& aIsHorizontal) /// XXX to be removed
{ aIsHorizontal = IsHorizontal(); return NS_OK; }
PRBool IsNormalDirection() const { return (mState & NS_STATE_IS_DIRECTION_NORMAL) != 0; }
nsresult GetDirection(PRBool& aIsNormal) /// XXX to be removed
{ aIsNormal = IsNormalDirection(); return NS_OK; }
NS_HIDDEN_(nsresult) Redraw(nsBoxLayoutState& aState, const nsRect* aRect = nsnull, PRBool aImmediate = PR_FALSE);
NS_IMETHOD RelayoutChildAtOrdinal(nsBoxLayoutState& aState, nsIBox* aChild)=0;
NS_IMETHOD GetMouseThrough(PRBool& aMouseThrough)=0;
NS_IMETHOD SetIncludeOverflow(PRBool aInclude) = 0;
NS_IMETHOD GetOverflow(nsSize& aOverflow) = 0;
virtual PRBool GetMouseThrough() const = 0;
#ifdef DEBUG_LAYOUT
NS_IMETHOD SetDebug(nsBoxLayoutState& aState, PRBool aDebug)=0;
@ -1916,8 +1908,9 @@ NS_PTR_TO_INT32(frame->GetProperty(nsGkAtoms::embeddingLevel))
NS_IMETHOD DumpBox(FILE* out)=0;
#endif
NS_IMETHOD ChildrenMustHaveWidgets(PRBool& aMust) const=0;
NS_IMETHOD GetIndexOf(nsIBox* aChild, PRInt32* aIndex)=0;
// Only nsDeckFrame requires that all its children have widgets
virtual PRBool ChildrenMustHaveWidgets() const { return PR_FALSE; }
/**
* @return PR_TRUE if this text frame ends with a newline character. It

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

@ -749,12 +749,8 @@ nsGrid::GetRowOffsets(nsBoxLayoutState& aState, PRInt32 aIndex, nscoord& aTop, n
// borders padding and insets into account
if (box && !row->mIsBogus)
{
PRBool isCollapsed = PR_FALSE;
box->IsCollapsed(aState, isCollapsed);
if (!isCollapsed)
{
if (!box->IsCollapsed(aState))
{
box->GetInset(inset);
// get real border and padding. GetBorderAndPadding
@ -823,9 +819,7 @@ nsGrid::GetRowOffsets(nsBoxLayoutState& aState, PRInt32 aIndex, nscoord& aTop, n
if (box)
{
// ignore collapsed children
box->IsCollapsed(aState, isCollapsed);
if (!isCollapsed)
if (!box->IsCollapsed(aState))
{
// include the margin of the columns. To the row
// at this point border/padding and margins all added
@ -1222,8 +1216,7 @@ nsGrid::GetRowFlex(nsBoxLayoutState& aState, PRInt32 aIndex, PRBool aIsHorizonta
// not flexible.
if (parentsParent) {
if (!IsGrid(parentsParent)) {
nscoord flex = 0;
parent->GetFlex(aState, flex);
nscoord flex = parent->GetFlex(aState);
nsIBox::AddCSSFlex(aState, parent, flex);
if (flex == 0) {
row->mFlex = 0;
@ -1237,9 +1230,8 @@ nsGrid::GetRowFlex(nsBoxLayoutState& aState, PRInt32 aIndex, PRBool aIsHorizonta
}
// get the row flex.
box->GetFlex(aState, row->mFlex);
row->mFlex = box->GetFlex(aState);
nsIBox::AddCSSFlex(aState, box, row->mFlex);
}
return row->mFlex;

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

@ -152,15 +152,8 @@ nsGridCell::GetMaxSize(nsBoxLayoutState& aState)
PRBool
nsGridCell::IsCollapsed(nsBoxLayoutState& aState)
{
PRBool c1 = PR_FALSE, c2 = PR_FALSE;
if (mBoxInColumn)
mBoxInColumn->IsCollapsed(aState, c1);
if (mBoxInRow)
mBoxInRow->IsCollapsed(aState, c2);
return (c1 || c2);
return ((mBoxInColumn && mBoxInColumn->IsCollapsed(aState)) ||
(mBoxInRow && mBoxInRow->IsCollapsed(aState)));
}

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

@ -100,11 +100,6 @@ nsGridRow::MarkDirty(nsBoxLayoutState& aState)
PRBool
nsGridRow::IsCollapsed(nsBoxLayoutState& aState)
{
PRBool isCollapsed = PR_FALSE;
if (mBox)
mBox->IsCollapsed(aState,isCollapsed);
return isCollapsed;
return mBox && mBox->IsCollapsed(aState);
}

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

@ -64,23 +64,18 @@ NS_NewGridRowGroupFrame (nsIPresShell* aPresShell,
* This is redefined because row groups have a funny property. If they are flexible
* then their flex must be equal to the sum of their children's flexes.
*/
NS_IMETHODIMP
nsGridRowGroupFrame::GetFlex(nsBoxLayoutState& aState, nscoord& aFlex)
nscoord
nsGridRowGroupFrame::GetFlex(nsBoxLayoutState& aState)
{
// if we are flexible out flexibility is determined by our columns.
// so first get the our flex. If not 0 then our flex is the sum of
// our columns flexes.
if (!DoesNeedRecalc(mFlex)) {
aFlex = mFlex;
return NS_OK;
}
if (!DoesNeedRecalc(mFlex))
return mFlex;
nsBoxFrame::GetFlex(aState, aFlex);
if (aFlex == 0)
return NS_OK;
if (nsBoxFrame::GetFlex(aState) == 0)
return 0;
// ok we are flexible add up our children
nscoord totalFlex = 0;
@ -88,16 +83,13 @@ nsGridRowGroupFrame::GetFlex(nsBoxLayoutState& aState, nscoord& aFlex)
GetChildBox(&child);
while (child)
{
PRInt32 flex = 0;
child->GetFlex(aState, flex);
totalFlex += flex;;
totalFlex += child->GetFlex(aState);
child->GetNextBox(&child);
}
aFlex = totalFlex;
mFlex = aFlex;
mFlex = totalFlex;
return NS_OK;
return totalFlex;
}

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

@ -75,7 +75,7 @@ public:
nsIBoxLayout* aLayoutManager):
nsBoxFrame(aPresShell, aContext, aIsRoot, aLayoutManager) {}
NS_IMETHOD GetFlex(nsBoxLayoutState& aBoxLayoutState, nscoord& aFlex);
virtual nscoord GetFlex(nsBoxLayoutState& aBoxLayoutState);
}; // class nsGridRowGroupFrame

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

@ -176,7 +176,7 @@ nsGridRowLeafLayout::PopulateBoxSizes(nsIBox* aBox, nsBoxLayoutState& aState, ns
nscoord bottomMargin = column->mBottomMargin;
if (box)
box->IsCollapsed(aState, collapsed);
collapsed = box->IsCollapsed(aState);
pref = pref - (left + right);
if (pref < 0)
@ -264,9 +264,6 @@ nsGridRowLeafLayout::ComputeChildSizes(nsIBox* aBox,
if (aBox) {
// go up the parent chain looking for scrollframes
PRBool isHorizontal = PR_FALSE;
aBox->GetOrientation(isHorizontal);
nsIBox* scrollbox = nsnull;
aBox->GetParentBox(&aBox);
scrollbox = nsGrid::GetScrollBox(aBox);
@ -283,7 +280,7 @@ nsGridRowLeafLayout::ComputeChildSizes(nsIBox* aBox,
ourRect.Deflate(padding);
nscoord diff;
if (isHorizontal) {
if (aBox->IsHorizontal()) {
diff = scrollbarSizes.left + scrollbarSizes.right;
} else {
diff = scrollbarSizes.top + scrollbarSizes.bottom;

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

@ -151,16 +151,6 @@ nsBox::PropagateDebug(nsBoxLayoutState& aState)
}
#endif
/**
* Hack for deck who requires that all its children has widgets
*/
NS_IMETHODIMP
nsBox::ChildrenMustHaveWidgets(PRBool& aMust) const
{
aMust = PR_FALSE;
return NS_OK;
}
#ifdef DEBUG_LAYOUT
void
nsBox::GetBoxName(nsAutoString& aName)
@ -280,7 +270,8 @@ nsBox::GetHAlign(Halignment& aAlign)
nsresult
nsIFrame::GetClientRect(nsRect& aClientRect)
{
GetContentRect(aClientRect);
aClientRect = mRect;
aClientRect.MoveTo(0,0);
nsMargin borderPadding;
GetBorderAndPadding(borderPadding);
@ -302,16 +293,6 @@ nsIFrame::GetClientRect(nsRect& aClientRect)
return NS_OK;
}
nsresult
nsIFrame::GetContentRect(nsRect& aContentRect)
{
aContentRect = mRect;
aContentRect.x = 0;
aContentRect.y = 0;
NS_BOX_ASSERTION(this, aContentRect.width >=0 && aContentRect.height >= 0, "Content Size < 0");
return NS_OK;
}
NS_IMETHODIMP
nsBox::SetBounds(nsBoxLayoutState& aState, const nsRect& aRect, PRBool aRemoveOverflowArea)
{
@ -523,9 +504,7 @@ nsBox::GetPrefSize(nsBoxLayoutState& aState)
nsSize pref(0,0);
DISPLAY_PREF_SIZE(this, pref);
PRBool collapsed = PR_FALSE;
IsCollapsed(aState, collapsed);
if (collapsed)
if (IsCollapsed(aState))
return pref;
AddBorderAndPadding(pref);
@ -545,9 +524,7 @@ nsBox::GetMinSize(nsBoxLayoutState& aState)
nsSize min(0,0);
DISPLAY_MIN_SIZE(this, min);
PRBool collapsed = PR_FALSE;
IsCollapsed(aState, collapsed);
if (collapsed)
if (IsCollapsed(aState))
return min;
AddBorderAndPadding(min);
@ -568,9 +545,7 @@ nsBox::GetMaxSize(nsBoxLayoutState& aState)
nsSize max(NS_INTRINSICSIZE, NS_INTRINSICSIZE);
DISPLAY_MAX_SIZE(this, max);
PRBool collapsed = PR_FALSE;
IsCollapsed(aState, collapsed);
if (collapsed)
if (IsCollapsed(aState))
return max;
AddBorderAndPadding(max);
@ -579,46 +554,42 @@ nsBox::GetMaxSize(nsBoxLayoutState& aState)
return max;
}
NS_IMETHODIMP
nsBox::GetFlex(nsBoxLayoutState& aState, nscoord& aFlex)
nscoord
nsBox::GetFlex(nsBoxLayoutState& aState)
{
aFlex = 0;
nscoord flex = 0;
GetDefaultFlex(aFlex);
nsIBox::AddCSSFlex(aState, this, aFlex);
GetDefaultFlex(flex);
nsIBox::AddCSSFlex(aState, this, flex);
return NS_OK;
return flex;
}
nsresult
nsIFrame::GetOrdinal(nsBoxLayoutState& aState, PRUint32& aOrdinal)
PRUint32
nsIFrame::GetOrdinal(nsBoxLayoutState& aState)
{
aOrdinal = DEFAULT_ORDINAL_GROUP;
nsIBox::AddCSSOrdinal(aState, this, aOrdinal);
PRUint32 ordinal = DEFAULT_ORDINAL_GROUP;
nsIBox::AddCSSOrdinal(aState, this, ordinal);
return NS_OK;
return ordinal;
}
NS_IMETHODIMP
nsBox::GetAscent(nsBoxLayoutState& aState, nscoord& aAscent)
nscoord
nsBox::GetBoxAscent(nsBoxLayoutState& aState)
{
if (IsCollapsed(aState))
return 0;
return GetPrefSize(aState).height;
}
PRBool
nsBox::IsCollapsed(nsBoxLayoutState& aState)
{
aAscent = 0;
PRBool collapsed = PR_FALSE;
IsCollapsed(aState, collapsed);
if (collapsed)
return NS_OK;
nsIBox::AddCSSCollapsed(aState, this, collapsed);
aAscent = GetPrefSize(aState).height;
return NS_OK;
}
NS_IMETHODIMP
nsBox::IsCollapsed(nsBoxLayoutState& aState, PRBool& aCollapsed)
{
aCollapsed = PR_FALSE;
nsIBox::AddCSSCollapsed(aState, this, aCollapsed);
return NS_OK;
return collapsed;
}
nsresult
@ -1168,14 +1139,13 @@ nsBox::GetInset(nsMargin& margin)
#endif
NS_IMETHODIMP
nsBox::GetMouseThrough(PRBool& aMouseThrough)
PRBool
nsBox::GetMouseThrough() const
{
if (mParent && mParent->IsBoxFrame())
return mParent->GetMouseThrough(aMouseThrough);
return mParent->GetMouseThrough();
aMouseThrough = PR_FALSE;
return NS_OK;
return PR_FALSE;
}
PRBool
@ -1184,11 +1154,3 @@ nsBox::GetDefaultFlex(PRInt32& aFlex)
aFlex = 0;
return PR_TRUE;
}
NS_IMETHODIMP
nsBox::GetIndexOf(nsIBox* aChild, PRInt32* aIndex)
{
// return -1. We have no children
*aIndex = -1;
return NS_OK;
}

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

@ -60,12 +60,12 @@ public:
virtual nsSize GetPrefSize(nsBoxLayoutState& aBoxLayoutState);
virtual nsSize GetMinSize(nsBoxLayoutState& aBoxLayoutState);
virtual nsSize GetMaxSize(nsBoxLayoutState& aBoxLayoutState);
NS_IMETHOD GetFlex(nsBoxLayoutState& aBoxLayoutState, nscoord& aFlex);
NS_IMETHOD GetAscent(nsBoxLayoutState& aBoxLayoutState, nscoord& aAscent);
virtual nscoord GetFlex(nsBoxLayoutState& aBoxLayoutState);
virtual nscoord GetBoxAscent(nsBoxLayoutState& aBoxLayoutState);
virtual nsSize GetMinSizeForScrollArea(nsBoxLayoutState& aBoxLayoutState);
NS_IMETHOD IsCollapsed(nsBoxLayoutState& aBoxLayoutState, PRBool& aCollapsed);
virtual PRBool IsCollapsed(nsBoxLayoutState& aBoxLayoutState);
NS_IMETHOD SetBounds(nsBoxLayoutState& aBoxLayoutState, const nsRect& aRect,
PRBool aRemoveOverflowArea = PR_FALSE);
@ -83,7 +83,7 @@ public:
NS_IMETHOD RelayoutChildAtOrdinal(nsBoxLayoutState& aState, nsIBox* aChild);
NS_IMETHOD GetMouseThrough(PRBool& aMouseThrough);
virtual PRBool GetMouseThrough() const;
#ifdef DEBUG_LAYOUT
NS_IMETHOD GetInset(nsMargin& aInset);
@ -94,8 +94,6 @@ public:
NS_IMETHOD DumpBox(FILE* out);
NS_HIDDEN_(void) PropagateDebug(nsBoxLayoutState& aState);
#endif
NS_IMETHOD ChildrenMustHaveWidgets(PRBool& aMust) const;
NS_IMETHOD GetIndexOf(nsIBox* aChild, PRInt32* aIndex);
nsBox();
virtual ~nsBox();

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

@ -220,9 +220,7 @@ nsBoxFrame::Init(nsIContent* aContent,
// see if we need a widget
if (aParent && aParent->IsBoxFrame()) {
PRBool needsWidget = PR_FALSE;
aParent->ChildrenMustHaveWidgets(needsWidget);
if (needsWidget) {
if (aParent->ChildrenMustHaveWidgets()) {
nsHTMLContainerFrame::CreateViewForFrame(this, nsnull, PR_TRUE);
nsIView* view = GetView();
@ -263,29 +261,21 @@ void nsBoxFrame::UpdateMouseThrough()
}
}
NS_IMETHODIMP
nsBoxFrame::GetMouseThrough(PRBool& aMouseThrough)
PRBool
nsBoxFrame::GetMouseThrough() const
{
switch(mMouseThrough)
{
case always:
aMouseThrough = PR_TRUE;
return NS_OK;
return PR_TRUE;
case never:
aMouseThrough = PR_FALSE;
return NS_OK;
return PR_FALSE;
case unset:
{
if (mParent && mParent->IsBoxFrame())
return mParent->GetMouseThrough(aMouseThrough);
else {
aMouseThrough = PR_FALSE;
return NS_OK;
}
}
return mParent->GetMouseThrough();
}
return NS_ERROR_FAILURE;
return PR_FALSE;
}
void
@ -793,7 +783,7 @@ nsBoxFrame::Reflow(nsPresContext* aPresContext,
// getting the ascent could be a lot of work. Don't get it if
// we are the root. The viewport doesn't care about it.
if (!(mState & NS_STATE_IS_ROOT)) {
GetAscent(state, ascent);
ascent = GetBoxAscent(state);
}
aDesiredSize.width = mRect.width;
@ -840,9 +830,7 @@ nsBoxFrame::GetPrefSize(nsBoxLayoutState& aBoxLayoutState)
PropagateDebug(aBoxLayoutState);
#endif
PRBool collapsed = PR_FALSE;
IsCollapsed(aBoxLayoutState, collapsed);
if (collapsed)
if (IsCollapsed(aBoxLayoutState))
return size;
// if the size was not completely redefined in CSS then ask our children
@ -863,34 +851,25 @@ nsBoxFrame::GetPrefSize(nsBoxLayoutState& aBoxLayoutState)
return size;
}
NS_IMETHODIMP
nsBoxFrame::GetAscent(nsBoxLayoutState& aBoxLayoutState, nscoord& aAscent)
nscoord
nsBoxFrame::GetBoxAscent(nsBoxLayoutState& aBoxLayoutState)
{
if (!DoesNeedRecalc(mAscent)) {
aAscent = mAscent;
return NS_OK;
}
if (!DoesNeedRecalc(mAscent))
return mAscent;
#ifdef DEBUG_LAYOUT
PropagateDebug(aBoxLayoutState);
#endif
nsresult rv = NS_OK;
aAscent = 0;
PRBool collapsed = PR_FALSE;
IsCollapsed(aBoxLayoutState, collapsed);
if (collapsed)
return NS_OK;
if (IsCollapsed(aBoxLayoutState))
return 0;
if (mLayoutManager)
rv = mLayoutManager->GetAscent(this, aBoxLayoutState, aAscent);
mLayoutManager->GetAscent(this, aBoxLayoutState, mAscent);
else
rv = nsBox::GetAscent(aBoxLayoutState, aAscent);
mAscent = nsBox::GetBoxAscent(aBoxLayoutState);
mAscent = aAscent;
return rv;
return mAscent;
}
nsSize
@ -907,9 +886,7 @@ nsBoxFrame::GetMinSize(nsBoxLayoutState& aBoxLayoutState)
PropagateDebug(aBoxLayoutState);
#endif
PRBool collapsed = PR_FALSE;
IsCollapsed(aBoxLayoutState, collapsed);
if (collapsed)
if (IsCollapsed(aBoxLayoutState))
return size;
// if the size was not completely redefined in CSS then ask our children
@ -942,9 +919,7 @@ nsBoxFrame::GetMaxSize(nsBoxLayoutState& aBoxLayoutState)
PropagateDebug(aBoxLayoutState);
#endif
PRBool collapsed = PR_FALSE;
IsCollapsed(aBoxLayoutState, collapsed);
if (collapsed)
if (IsCollapsed(aBoxLayoutState))
return size;
// if the size was not completely redefined in CSS then ask our children
@ -963,21 +938,15 @@ nsBoxFrame::GetMaxSize(nsBoxLayoutState& aBoxLayoutState)
return size;
}
NS_IMETHODIMP
nsBoxFrame::GetFlex(nsBoxLayoutState& aBoxLayoutState, nscoord& aFlex)
nscoord
nsBoxFrame::GetFlex(nsBoxLayoutState& aBoxLayoutState)
{
if (!DoesNeedRecalc(mFlex)) {
aFlex = mFlex;
return NS_OK;
}
if (!DoesNeedRecalc(mFlex))
return mFlex;
nsresult rv = NS_OK;
mFlex = nsBox::GetFlex(aBoxLayoutState);
mFlex = 0;
rv = nsBox::GetFlex(aBoxLayoutState, mFlex);
aFlex = mFlex;
return rv;
return mFlex;
}
/**
@ -1394,8 +1363,6 @@ nsBoxFrame::PaintXULDebugBackground(nsIRenderingContext& aRenderingContext,
nsPoint aPt)
{
nsMargin border;
nsRect inner;
GetBorder(border);
nsMargin debugBorder;
@ -1413,8 +1380,8 @@ nsBoxFrame::PaintXULDebugBackground(nsIRenderingContext& aRenderingContext,
GetDebugPadding(debugPadding);
PixelMarginToTwips(GetPresContext(), debugPadding);
GetContentRect(inner);
inner += aPt;
nsRect inner(mRect);
inner.MoveTo(aPt);
inner.Deflate(debugMargin);
inner.Deflate(border);
//nsRect borderRect(inner);
@ -1471,14 +1438,12 @@ nsBoxFrame::PaintXULDebugOverlay(nsIRenderingContext& aRenderingContext,
GetDebugMargin(debugMargin);
PixelMarginToTwips(GetPresContext(), debugMargin);
nsRect inner;
GetContentRect(inner);
inner += aPt;
nsRect inner(mRect);
inner.MoveTo(aPt);
inner.Deflate(debugMargin);
inner.Deflate(border);
nscoord onePixel = GetPresContext()->IntScaledPixelsToTwips(1);
GetContentRect(r);
GetChildBox(&kid);
while (nsnull != kid) {
@ -1505,14 +1470,9 @@ nsBoxFrame::PaintXULDebugOverlay(nsIRenderingContext& aRenderingContext,
}
nsBoxLayoutState state(GetPresContext());
nscoord flex = 0;
kid->GetFlex(state, flex);
nscoord flex = kid->GetFlex(state);
PRBool isCollapsed = PR_FALSE;
kid->IsCollapsed(state, isCollapsed);
if (!isCollapsed) {
if (!kid->IsCollapsed(state)) {
aRenderingContext.SetColor(NS_RGB(255,255,255));
if (isHorizontal)
@ -1801,8 +1761,8 @@ nsBoxFrame::DisplayDebugInfoFor(nsIBox* aBox,
nscoord y = aPoint.y;
// get the area inside our border but not our debug margins.
nsRect insideBorder;
aBox->GetContentRect(insideBorder);
nsRect insideBorder(aBox->mRect);
insideBorder.MoveTo(0,0):
nsMargin border(0,0,0,0);
aBox->GetBorderAndPadding(border);
insideBorder.Deflate(border);
@ -1862,10 +1822,6 @@ nsBoxFrame::DisplayDebugInfoFor(nsIBox* aBox,
nsSize maxSizeCSS (NS_INTRINSICSIZE, NS_INTRINSICSIZE);
nscoord flexCSS = NS_INTRINSICSIZE;
nscoord flexSize = 0;
nscoord ascentSize = 0;
nsIBox::AddCSSPrefSize(state, child, prefSizeCSS);
nsIBox::AddCSSMinSize (state, child, minSizeCSS);
nsIBox::AddCSSMaxSize (state, child, maxSizeCSS);
@ -1874,8 +1830,8 @@ nsBoxFrame::DisplayDebugInfoFor(nsIBox* aBox,
nsSize prefSize = child->GetPrefSize(state);
nsSize minSize = child->GetMinSize(state);
nsSize maxSize = child->GetMaxSize(state);
child->GetFlex(state, flexSize);
child->GetAscent(state, ascentSize);
nscoord flexSize = child->GetFlex(state);
nscoord ascentSize = child->GetBoxAscent(state);
char min[100];
char pref[100];
@ -2159,8 +2115,7 @@ nsBoxFrame::CheckBoxOrder(nsBoxLayoutState& aState)
while (child) {
++childCount;
PRUint32 ordinal;
child->GetOrdinal(aState, ordinal);
PRUint32 ordinal = child->GetOrdinal(aState);
if (ordinal != DEFAULT_ORDINAL_GROUP)
orderBoxes = PR_TRUE;
@ -2185,9 +2140,9 @@ nsBoxFrame::CheckBoxOrder(nsBoxLayoutState& aState)
PRUint32 minOrd, jOrd;
for(i = 0; i < childCount; i++) {
min = i;
boxes[min]->GetOrdinal(aState, minOrd);
minOrd = boxes[min]->GetOrdinal(aState);
for(j = i + 1; j < childCount; j++) {
boxes[j]->GetOrdinal(aState, jOrd);
jOrd = boxes[j]->GetOrdinal(aState);
if (jOrd < minOrd) {
min = j;
minOrd = jOrd;
@ -2241,8 +2196,7 @@ nsBoxFrame::LayoutChildAt(nsBoxLayoutState& aState, nsIBox* aBox, const nsRect&
NS_IMETHODIMP
nsBoxFrame::RelayoutChildAtOrdinal(nsBoxLayoutState& aState, nsIBox* aChild)
{
PRUint32 ord;
aChild->GetOrdinal(aState, ord);
PRUint32 ord = aChild->GetOrdinal(aState);
nsIFrame *child = mFrames.FirstChild();
nsIFrame *curPrevSib = nsnull, *newPrevSib = nsnull;
@ -2254,8 +2208,7 @@ nsBoxFrame::RelayoutChildAtOrdinal(nsBoxLayoutState& aState, nsIBox* aChild)
else if (!foundPrevSib)
curPrevSib = child;
PRUint32 ordCmp;
child->GetOrdinal(aState, ordCmp);
PRUint32 ordCmp = child->GetOrdinal(aState);
if (ord < ordCmp)
foundNewPrevSib = PR_TRUE;
else if (!foundNewPrevSib && child != aChild)
@ -2293,27 +2246,6 @@ nsBoxFrame::RelayoutChildAtOrdinal(nsBoxLayoutState& aState, nsIBox* aChild)
return NS_OK;
}
NS_IMETHODIMP
nsBoxFrame::GetIndexOf(nsIBox* aBox, PRInt32* aIndex)
{
nsIBox* child = mFrames.FirstChild();
PRInt32 count = 0;
while (child)
{
if (aBox == child) {
*aIndex = count;
return NS_OK;
}
child->GetNextBox(&child);
count++;
}
*aIndex = -1;
return NS_OK;
}
PRBool
nsBoxFrame::GetWasCollapsed(nsBoxLayoutState& aState)
{

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

@ -98,13 +98,12 @@ public:
NS_IMETHOD SetLayoutManager(nsIBoxLayout* aLayout);
NS_IMETHOD GetLayoutManager(nsIBoxLayout** aLayout);
NS_IMETHOD RelayoutChildAtOrdinal(nsBoxLayoutState& aState, nsIBox* aChild);
NS_IMETHOD GetIndexOf(nsIBox* aChild, PRInt32* aIndex);
virtual nsSize GetPrefSize(nsBoxLayoutState& aBoxLayoutState);
virtual nsSize GetMinSize(nsBoxLayoutState& aBoxLayoutState);
virtual nsSize GetMaxSize(nsBoxLayoutState& aBoxLayoutState);
NS_IMETHOD GetFlex(nsBoxLayoutState& aBoxLayoutState, nscoord& aFlex);
NS_IMETHOD GetAscent(nsBoxLayoutState& aBoxLayoutState, nscoord& aAscent);
virtual nscoord GetFlex(nsBoxLayoutState& aBoxLayoutState);
virtual nscoord GetBoxAscent(nsBoxLayoutState& aBoxLayoutState);
#ifdef DEBUG_LAYOUT
NS_IMETHOD SetDebug(nsBoxLayoutState& aBoxLayoutState, PRBool aDebug);
NS_IMETHOD GetDebug(PRBool& aDebug);
@ -115,7 +114,7 @@ public:
NS_IMETHOD GetHAlign(Halignment& aAlign);
NS_IMETHOD DoLayout(nsBoxLayoutState& aBoxLayoutState);
NS_IMETHOD GetMouseThrough(PRBool& aMouseThrough);
virtual PRBool GetMouseThrough() const;
virtual PRBool ComputesOwnOverflowArea() { return PR_FALSE; }
// ----- child and sibling operations ---

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

@ -99,14 +99,16 @@ nsBoxLayout::AddInset(nsIBox* aBox, nsSize& aSize)
NS_IMETHODIMP
nsBoxLayout::GetFlex(nsIBox* aBox, nsBoxLayoutState& aState, nscoord& aFlex)
{
return aBox->GetFlex(aState, aFlex);
aFlex = aBox->GetFlex(aState);
return NS_OK;
}
NS_IMETHODIMP
nsBoxLayout::IsCollapsed(nsIBox* aBox, nsBoxLayoutState& aState, PRBool& aCollapsed)
{
return aBox->IsCollapsed(aState, aCollapsed);
aCollapsed = aBox->IsCollapsed(aState);
return NS_OK;
}
NS_IMETHODIMP

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

@ -63,13 +63,6 @@ NS_NewButtonBoxFrame (nsIPresShell* aPresShell, nsStyleContext* aContext)
return new (aPresShell) nsButtonBoxFrame(aPresShell, aContext);
} // NS_NewXULButtonFrame
NS_IMETHODIMP
nsButtonBoxFrame::GetMouseThrough(PRBool& aMouseThrough)
{
aMouseThrough = PR_FALSE;
return NS_OK;
}
NS_IMETHODIMP
nsButtonBoxFrame::BuildDisplayListForChildren(nsDisplayListBuilder* aBuilder,
const nsRect& aDirtyRect,

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

@ -56,7 +56,7 @@ public:
nsGUIEvent* aEvent,
nsEventStatus* aEventStatus);
NS_IMETHOD GetMouseThrough(PRBool& aMouseThrough);
virtual PRBool GetMouseThrough() const { return PR_FALSE; }
virtual void MouseClicked (nsPresContext* aPresContext, nsGUIEvent* aEvent)
{ DoMouseClick(aEvent, PR_FALSE); }

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

@ -80,16 +80,6 @@ nsDeckFrame::nsDeckFrame(nsIPresShell* aPresShell,
SetLayoutManager(layout);
}
/**
* Hack for deck who requires that all its children has widgets
*/
NS_IMETHODIMP
nsDeckFrame::ChildrenMustHaveWidgets(PRBool& aMust) const
{
aMust = PR_TRUE;
return NS_OK;
}
NS_IMETHODIMP
nsDeckFrame::AttributeChanged(PRInt32 aNameSpaceID,
nsIAtom* aAttribute,

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

@ -74,7 +74,7 @@ public:
nsIFrame* aParent,
nsIFrame* aPrevInFlow);
NS_IMETHOD ChildrenMustHaveWidgets(PRBool& aMust) const;
virtual PRBool ChildrenMustHaveWidgets() const { return PR_TRUE; }
#ifdef NS_DEBUG
NS_IMETHOD GetFrameName(nsAString& aResult) const

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

@ -100,9 +100,7 @@ nsLeafBoxFrame::Init(
// see if we need a widget
if (aParent && aParent->IsBoxFrame()) {
PRBool needsWidget = PR_FALSE;
aParent->ChildrenMustHaveWidgets(needsWidget);
if (needsWidget) {
if (aParent->ChildrenMustHaveWidgets()) {
nsHTMLContainerFrame::CreateViewForFrame(this, nsnull, PR_TRUE);
nsIView* view = GetView();
@ -146,29 +144,21 @@ void nsLeafBoxFrame::UpdateMouseThrough()
}
}
NS_IMETHODIMP
nsLeafBoxFrame::GetMouseThrough(PRBool& aMouseThrough)
PRBool
nsLeafBoxFrame::GetMouseThrough() const
{
switch (mMouseThrough)
{
case always:
aMouseThrough = PR_TRUE;
return NS_OK;
return PR_TRUE;
case never:
aMouseThrough = PR_FALSE;
return NS_OK;
return PR_FALSE;
case unset:
{
if (mParent && mParent->IsBoxFrame())
return mParent->GetMouseThrough(aMouseThrough);
else {
aMouseThrough = PR_FALSE;
return NS_OK;
}
}
return mParent->GetMouseThrough();
}
return NS_ERROR_FAILURE;
return PR_FALSE;
}
NS_IMETHODIMP
@ -344,14 +334,9 @@ nsLeafBoxFrame::Reflow(nsPresContext* aPresContext,
Layout(state);
// ok our child could have gotten bigger. So lets get its bounds
// get the ascent
nscoord ascent = mRect.height;
GetAscent(state, ascent);
aDesiredSize.width = mRect.width;
aDesiredSize.height = mRect.height;
aDesiredSize.ascent = ascent;
aDesiredSize.ascent = GetBoxAscent(state);
// NS_FRAME_OUTSIDE_CHILDREN is set in SetBounds() above
if (mState & NS_FRAME_OUTSIDE_CHILDREN) {
@ -432,16 +417,16 @@ nsLeafBoxFrame::GetMaxSize(nsBoxLayoutState& aState)
return nsBox::GetMaxSize(aState);
}
NS_IMETHODIMP
nsLeafBoxFrame::GetFlex(nsBoxLayoutState& aState, nscoord& aFlex)
/* virtual */ nscoord
nsLeafBoxFrame::GetFlex(nsBoxLayoutState& aState)
{
return nsBox::GetFlex(aState, aFlex);
return nsBox::GetFlex(aState);
}
NS_IMETHODIMP
nsLeafBoxFrame::GetAscent(nsBoxLayoutState& aState, nscoord& aAscent)
/* virtual */ nscoord
nsLeafBoxFrame::GetBoxAscent(nsBoxLayoutState& aState)
{
return nsBox::GetAscent(aState, aAscent);
return nsBox::GetBoxAscent(aState);
}
/* virtual */ void

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

@ -55,8 +55,8 @@ public:
virtual nsSize GetPrefSize(nsBoxLayoutState& aState);
virtual nsSize GetMinSize(nsBoxLayoutState& aState);
virtual nsSize GetMaxSize(nsBoxLayoutState& aState);
NS_IMETHOD GetFlex(nsBoxLayoutState& aState, nscoord& aFlex);
NS_IMETHOD GetAscent(nsBoxLayoutState& aState, nscoord& aAscent);
virtual nscoord GetFlex(nsBoxLayoutState& aState);
virtual nscoord GetBoxAscent(nsBoxLayoutState& aState);
virtual PRBool IsFrameOfType(PRUint32 aFlags) const;
#ifdef DEBUG
@ -91,7 +91,7 @@ public:
nsIAtom* aAttribute,
PRInt32 aModType);
NS_IMETHOD GetMouseThrough(PRBool& aMouseThrough);
virtual PRBool GetMouseThrough() const;
virtual PRBool ComputesOwnOverflowArea() { return PR_FALSE; }
protected:

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

@ -1031,9 +1031,6 @@ nsMenuFrame::GetMinSize(nsBoxLayoutState& aBoxLayoutState)
NS_IMETHODIMP
nsMenuFrame::DoLayout(nsBoxLayoutState& aState)
{
nsRect contentRect;
GetContentRect(contentRect);
// lay us out
nsresult rv = nsBoxFrame::DoLayout(aState);
@ -1053,7 +1050,7 @@ nsMenuFrame::DoLayout(nsBoxLayoutState& aState)
BoundsCheck(minSize, prefSize, maxSize);
if (sizeToPopup)
prefSize.width = contentRect.width;
prefSize.width = mRect.width;
// if the pref size changed then set bounds to be the pref size
// and sync the view. And set new pref size.
@ -1952,10 +1949,8 @@ public:
NS_IMETHOD Run() {
nsIFrame* frame = mWeakFrame.GetFrame();
if (frame) {
PRBool collapsed = PR_FALSE;
nsBoxLayoutState state(frame->GetPresContext());
frame->IsCollapsed(state, collapsed);
if (!collapsed) {
if (!frame->IsCollapsed(state)) {
nsIMenuFrame* imenu = nsnull;
CallQueryInterface(frame, &imenu);
if (imenu) {
@ -1976,14 +1971,10 @@ public:
PRBool
nsMenuFrame::SizeToPopup(nsBoxLayoutState& aState, nsSize& aSize)
{
PRBool collapsed = PR_FALSE;
IsCollapsed(aState, collapsed);
if (!collapsed) {
if (!IsCollapsed(aState)) {
nsSize tmpSize(-1, 0);
nsIBox::AddCSSPrefSize(aState, this, tmpSize);
nscoord flex;
GetFlex(aState, flex);
if (tmpSize.width == -1 && flex == 0) {
if (tmpSize.width == -1 && GetFlex(aState) == 0) {
nsIFrame* frame = mPopupFrames.FirstChild();
if (!frame) {
nsCOMPtr<nsIContent> child;

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

@ -163,8 +163,7 @@ NS_IMETHODIMP nsScrollBoxObject::ScrollByIndex(PRInt32 dindexes)
// now get the scrolled boxes first child.
scrolledBox->GetChildBox(&child);
PRBool horiz = PR_FALSE;
scrolledBox->GetOrientation(horiz);
PRBool horiz = scrolledBox->IsHorizontal();
nsPoint cp;
scrollableView->GetScrollPosition(cp.x,cp.y);
nscoord diff = 0;
@ -303,8 +302,6 @@ NS_IMETHODIMP nsScrollBoxObject::ScrollToElement(nsIDOMElement *child)
// TODO: make sure the child is inside the box
// get our current info
PRBool horiz = PR_FALSE;
scrolledBox->GetOrientation(horiz);
nsPoint cp;
scrollableView->GetScrollPosition(cp.x,cp.y);
@ -315,7 +312,7 @@ NS_IMETHODIMP nsScrollBoxObject::ScrollToElement(nsIDOMElement *child)
// we only scroll in the direction of the scrollbox orientation
// always scroll to left or top edge of child element
if (horiz) {
if (scrolledBox->IsHorizontal()) {
newx = rect.x - crect.x;
} else {
newy = rect.y - crect.y;
@ -429,9 +426,6 @@ NS_IMETHODIMP nsScrollBoxObject::EnsureElementIsVisible(nsIDOMElement *child)
// TODO: make sure the child is inside the box
// get our current info
PRBool horiz = PR_FALSE;
scrolledBox->GetOrientation(horiz);
nsPoint cp;
scrollableView->GetScrollPosition(cp.x,cp.y);
GetOffsetRect(crect);
@ -440,11 +434,10 @@ NS_IMETHODIMP nsScrollBoxObject::EnsureElementIsVisible(nsIDOMElement *child)
crect.width = NSToIntRound(crect.width * pixelsToTwips);
crect.height = NSToIntRound(crect.height * pixelsToTwips);
nscoord newx=cp.x, newy=cp.y;
// we only scroll in the direction of the scrollbox orientation
if (horiz) {
if (scrolledBox->IsHorizontal()) {
if ((rect.x - crect.x) + rect.width > cp.x + crect.width) {
newx = cp.x + (((rect.x - crect.x) + rect.width)-(cp.x + crect.width));
} else if (rect.x - crect.x < cp.x) {

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

@ -387,10 +387,7 @@ nsSliderFrame::DoLayout(nsBoxLayoutState& aState)
if ((pageIncrement + maxpospx - minpospx) > 0)
{
// if the thumb is flexible make the thumb bigger.
nscoord flex = 0;
thumbBox->GetFlex(aState, flex);
if (flex > 0)
if (thumbBox->GetFlex(aState) > 0)
{
mRatio = float(pageIncrement) / float(maxpospx - minpospx + pageIncrement);
nscoord thumbsize = NSToCoordRound(ourmaxpos * mRatio);

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

@ -344,9 +344,7 @@ nsSplitterFrame::Init(nsIContent* aContent,
// |newContext| to Release the reference after the call to nsBoxFrame::Init
nsRefPtr<nsStyleContext> newContext;
if (aParent && aParent->IsBoxFrame()) {
PRBool isHorizontal;
aParent->GetOrientation(isHorizontal);
if (!isHorizontal) {
if (!aParent->IsHorizontal()) {
if (!nsContentUtils::HasNonEmptyAttr(aContent, kNameSpaceID_None,
nsGkAtoms::orient)) {
aContent->SetAttr(kNameSpaceID_None, nsGkAtoms::orient,
@ -400,9 +398,7 @@ nsSplitterFrame::GetInitialOrientation(PRBool& aIsHorizontal)
nsIBox* box;
GetParentBox(&box);
if (box) {
PRBool horizontal;
box->GetOrientation(horizontal);
aIsHorizontal = !horizontal;
aIsHorizontal = !box->IsHorizontal();
}
else
nsBoxFrame::GetInitialOrientation(aIsHorizontal);
@ -784,8 +780,7 @@ nsSplitterFrameInner::MouseDown(nsIDOMEvent* aMouseEvent)
mOuter->AddMargin(childBox, prefSize);
mOuter->AddMargin(childBox, maxSize);
nscoord flex = 0;
childBox->GetFlex(state, flex);
nscoord flex = childBox->GetFlex(state);
nsMargin margin(0,0,0,0);
childBox->GetMargin(margin);
@ -825,9 +820,7 @@ nsSplitterFrameInner::MouseDown(nsIDOMEvent* aMouseEvent)
count++;
}
PRBool isNormalDirection = PR_TRUE;
mParentBox->GetDirection(isNormalDirection);
if (!isNormalDirection) {
if (!mParentBox->IsNormalDirection()) {
// The before array is really the after array, and the order needs to be reversed.
// First reverse both arrays.
Reverse(mChildInfosBefore, mChildInfosBeforeCount);

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

@ -208,9 +208,7 @@ nsSprocketLayout::Layout(nsIBox* aBox, nsBoxLayoutState& aState)
{
// See if we are collapsed. If we are, then simply iterate over all our
// children and give them a rect of 0 width and height.
PRBool collapsed = PR_FALSE;
aBox->IsCollapsed(aState, collapsed);
if (collapsed) {
if (aBox->IsCollapsed(aState)) {
nsIBox* child;
aBox->GetChildBox(&child);
while(child)
@ -224,8 +222,7 @@ nsSprocketLayout::Layout(nsIBox* aBox, nsBoxLayoutState& aState)
aState.PushStackMemory();
// ----- figure out our size ----------
nsRect contentRect;
aBox->GetContentRect(contentRect);
nsSize originalSize = aBox->GetSize();
// -- make sure we remove our border and padding ----
nsRect clientRect;
@ -249,8 +246,7 @@ nsSprocketLayout::Layout(nsIBox* aBox, nsBoxLayoutState& aState)
nsBoxSize* boxSizes = nsnull;
nsComputedBoxSize* computedBoxSizes = nsnull;
nscoord maxAscent = 0;
aBox->GetAscent(aState, maxAscent);
nscoord maxAscent = aBox->GetBoxAscent(aState);
nscoord min = 0;
nscoord max = 0;
@ -663,14 +659,14 @@ nsSprocketLayout::Layout(nsIBox* aBox, nsBoxLayoutState& aState)
aBox->GetInset(bp);
tmpClientRect.Inflate(bp);
if (tmpClientRect.width > contentRect.width || tmpClientRect.height > contentRect.height)
if (tmpClientRect.width > originalSize.width || tmpClientRect.height > originalSize.height)
{
// if it did reset our bounds.
nsRect bounds(aBox->GetRect());
if (tmpClientRect.width > contentRect.width)
if (tmpClientRect.width > originalSize.width)
bounds.width = tmpClientRect.width;
if (tmpClientRect.height > contentRect.height)
if (tmpClientRect.height > originalSize.height)
bounds.height = tmpClientRect.height;
aBox->SetBounds(aState, bounds);
@ -770,12 +766,10 @@ nsSprocketLayout::PopulateBoxSizes(nsIBox* aBox, nsBoxLayoutState& aState, nsBox
}
child->GetFlex(aState, flex);
PRBool collapsed = PR_FALSE;
child->IsCollapsed(aState, collapsed);
flex = child->GetFlex(aState);
currentBox->flex = flex;
currentBox->collapsed = collapsed;
currentBox->collapsed = child->IsCollapsed(aState);
} else {
flex = start->flex;
start = start->next;
@ -803,9 +797,7 @@ nsSprocketLayout::PopulateBoxSizes(nsIBox* aBox, nsBoxLayoutState& aState, nsBox
nsSize min(0,0);
nsSize max(NS_INTRINSICSIZE,NS_INTRINSICSIZE);
nscoord ascent = 0;
PRBool collapsed = PR_FALSE;
child->IsCollapsed(aState, collapsed);
PRBool collapsed = child->IsCollapsed(aState);
if (!collapsed) {
// only one flexible child? Cool we will just make its preferred size
@ -815,7 +807,7 @@ nsSprocketLayout::PopulateBoxSizes(nsIBox* aBox, nsBoxLayoutState& aState, nsBox
pref = child->GetPrefSize(aState);
min = child->GetMinSize(aState);
max = child->GetMaxSize(aState);
child->GetAscent(aState, ascent);
ascent = child->GetBoxAscent(aState);
nsMargin margin;
child->GetMargin(margin);
ascent += margin.top;
@ -854,8 +846,7 @@ nsSprocketLayout::PopulateBoxSizes(nsIBox* aBox, nsBoxLayoutState& aState, nsBox
prefWidth = pref.height;
}
nscoord flex = 0;
child->GetFlex(aState, flex);
nscoord flex = child->GetFlex(aState);
// set them if you collapsed you are not flexible.
if (collapsed) {
@ -1349,10 +1340,7 @@ nsSprocketLayout::GetPrefSize(nsIBox* aBox, nsBoxLayoutState& aState, nsSize& aS
while (child)
{
// ignore collapsed children
PRBool isCollapsed = PR_FALSE;
child->IsCollapsed(aState, isCollapsed);
if (!isCollapsed)
if (!child->IsCollapsed(aState))
{
nsSize pref = child->GetPrefSize(aState);
AddMargin(child, pref);
@ -1412,20 +1400,14 @@ nsSprocketLayout::GetMinSize(nsIBox* aBox, nsBoxLayoutState& aState, nsSize& aSi
while (child)
{
// ignore collapsed children
PRBool isCollapsed = PR_FALSE;
aBox->IsCollapsed(aState, isCollapsed);
if (!isCollapsed)
if (!aBox->IsCollapsed(aState))
{
nsSize min = child->GetMinSize(aState);
nsSize pref(0,0);
nscoord flex = 0;
child->GetFlex(aState, flex);
// if the child is not flexible then
// its min size is its pref size.
if (flex == 0) {
if (child->GetFlex(aState) == 0) {
pref = child->GetPrefSize(aState);
if (isHorizontal)
min.width = pref.width;
@ -1492,10 +1474,7 @@ nsSprocketLayout::GetMaxSize(nsIBox* aBox, nsBoxLayoutState& aState, nsSize& aSi
while (child)
{
// ignore collapsed children
PRBool isCollapsed = PR_FALSE;
aBox->IsCollapsed(aState, isCollapsed);
if (!isCollapsed)
if (!aBox->IsCollapsed(aState))
{
// if completely redefined don't even ask our child for its size.
nsSize max = child->GetMaxSize(aState);
@ -1560,14 +1539,10 @@ nsSprocketLayout::GetAscent(nsIBox* aBox, nsBoxLayoutState& aState, nscoord& aAs
while (child)
{
// ignore collapsed children
//PRBool isCollapsed = PR_FALSE;
//aBox->IsCollapsed(aState, isCollapsed);
//if (!isCollapsed)
//if (!aBox->IsCollapsed(aStatew))
//{
// if completely redefined don't even ask our child for its size.
nscoord ascent = 0;
child->GetAscent(aState, ascent);
nscoord ascent = child->GetBoxAscent(aState);
nsMargin margin;
child->GetMargin(margin);
@ -1592,14 +1567,16 @@ nsSprocketLayout::GetAscent(nsIBox* aBox, nsBoxLayoutState& aState, nscoord& aAs
NS_IMETHODIMP
nsSprocketLayout::GetFlex(nsIBox* aBox, nsBoxLayoutState& aState, nscoord& aFlex)
{
return aBox->GetFlex(aState, aFlex);
aFlex = aBox->GetFlex(aState);
return NS_OK;
}
NS_IMETHODIMP
nsSprocketLayout::IsCollapsed(nsIBox* aBox, nsBoxLayoutState& aState, PRBool& aIsCollapsed)
{
return aBox->IsCollapsed(aState, aIsCollapsed);
aIsCollapsed = aBox->IsCollapsed(aState);
return NS_OK;
}
void

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

@ -170,8 +170,7 @@ nsStackLayout::GetAscent(nsIBox* aBox, nsBoxLayoutState& aState, nscoord& aAscen
aBox->GetChildBox(&child);
while (child) {
nscoord ascent = 0;
child->GetAscent(aState, ascent);
nscoord ascent = child->GetBoxAscent(aState);
nsMargin margin;
child->GetMargin(margin);
ascent += margin.top + margin.bottom;

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

@ -82,16 +82,6 @@ nsTitleBarFrame::Init(nsIContent* aContent,
return rv;
}
NS_IMETHODIMP
nsTitleBarFrame::GetMouseThrough(PRBool& aMouseThrough)
{
aMouseThrough = PR_FALSE;
return NS_OK;
}
NS_IMETHODIMP
nsTitleBarFrame::BuildDisplayListForChildren(nsDisplayListBuilder* aBuilder,
const nsRect& aDirtyRect,

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

@ -60,7 +60,7 @@ public:
nsGUIEvent* aEvent,
nsEventStatus* aEventStatus);
NS_IMETHOD GetMouseThrough(PRBool& aMouseThrough);
virtual PRBool GetMouseThrough() const { return PR_FALSE; }
virtual void MouseClicked(nsPresContext* aPresContext, nsGUIEvent* aEvent);

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

@ -759,16 +759,13 @@ FindScrollParts(nsIFrame* aCurrFrame, nsTreeBodyFrame::ScrollParts* aResult)
nsIScrollbarFrame *sf = nsnull;
CallQueryInterface(aCurrFrame, &sf);
if (sf) {
PRBool isHorizontal = PR_FALSE;
if (NS_SUCCEEDED(aCurrFrame->GetOrientation(isHorizontal))) {
if (!isHorizontal) {
if (!aResult->mVScrollbar) {
aResult->mVScrollbar = sf;
}
} else {
if (!aResult->mHScrollbar) {
aResult->mHScrollbar = sf;
}
if (!aCurrFrame->IsHorizontal()) {
if (!aResult->mVScrollbar) {
aResult->mVScrollbar = sf;
}
} else {
if (!aResult->mHScrollbar) {
aResult->mHScrollbar = sf;
}
}
// don't bother searching inside a scrollbar