Fixed it so border and padding style specified for the HTML element

work again
This commit is contained in:
troy@netscape.com
1998-10-30 05:18:59 +00:00
parent 55ee619fe8
commit a69ed36384
2 changed files with 48 additions and 12 deletions

View File

@@ -41,7 +41,7 @@
// Interface IDs
static NS_DEFINE_IID(kScrollViewIID, NS_ISCROLLABLEVIEW_IID);
class RootFrame : public nsContainerFrame {
class RootFrame : public nsHTMLContainerFrame {
public:
RootFrame(nsIContent* aContent);
@@ -57,6 +57,9 @@ public:
aBase = PR_TRUE;
return NS_OK;
}
protected:
virtual PRIntn GetSkipSides() const;
};
// Pseudo frame created by the root frame
@@ -99,7 +102,7 @@ NS_NewHTMLFrame(nsIContent* aContent, nsIFrame* aParentFrame,
}
RootFrame::RootFrame(nsIContent* aContent)
: nsContainerFrame(aContent, nsnull)
: nsHTMLContainerFrame(aContent, nsnull)
{
}
@@ -157,21 +160,30 @@ RootFrame::Reflow(nsIPresContext& aPresContext,
// Reflow our pseudo frame. It will choose whetever height its child frame
// wants
if (nsnull != mFirstChild) {
// Compute how much space to reserve for our border and padding
const nsStyleSpacing* spacing =
(const nsStyleSpacing*)mStyleContext->GetStyleData(eStyleStruct_Spacing);
nsMargin borderPadding;
spacing->CalcBorderPaddingFor(this, borderPadding);
nsSize kidMaxSize(aReflowState.maxSize);
kidMaxSize.width -= borderPadding.left + borderPadding.right;
kidMaxSize.height -= borderPadding.top + borderPadding.bottom;
nsHTMLReflowMetrics desiredSize(nsnull);
nsHTMLReflowState kidReflowState(aPresContext, mFirstChild, aReflowState,
aReflowState.maxSize);
kidMaxSize);
// XXX HACK
kidReflowState.widthConstraint = eHTMLFrameConstraint_Fixed;
kidReflowState.minWidth = aReflowState.maxSize.width;
kidReflowState.minWidth = kidMaxSize.width;
kidReflowState.heightConstraint = eHTMLFrameConstraint_Fixed;
kidReflowState.minHeight = aReflowState.maxSize.height;
kidReflowState.minHeight = kidMaxSize.height;
nsIHTMLReflow* htmlReflow;
if (NS_OK == mFirstChild->QueryInterface(kIHTMLReflowIID, (void**)&htmlReflow)) {
ReflowChild(mFirstChild, aPresContext, desiredSize, kidReflowState, aStatus);
// Place and size the child
nsRect rect(0, 0, desiredSize.width, desiredSize.height);
nsRect rect(borderPadding.left, borderPadding.top, desiredSize.width, desiredSize.height);
mFirstChild->SetRect(rect);
// XXX We should resolve the details of who/when DidReflow() notifications
@@ -190,6 +202,12 @@ RootFrame::Reflow(nsIPresContext& aPresContext,
return NS_OK;
}
PRIntn
RootFrame::GetSkipSides() const
{
return 0;
}
NS_IMETHODIMP
RootFrame::HandleEvent(nsIPresContext& aPresContext,
nsGUIEvent* aEvent,

View File

@@ -41,7 +41,7 @@
// Interface IDs
static NS_DEFINE_IID(kScrollViewIID, NS_ISCROLLABLEVIEW_IID);
class RootFrame : public nsContainerFrame {
class RootFrame : public nsHTMLContainerFrame {
public:
RootFrame(nsIContent* aContent);
@@ -57,6 +57,9 @@ public:
aBase = PR_TRUE;
return NS_OK;
}
protected:
virtual PRIntn GetSkipSides() const;
};
// Pseudo frame created by the root frame
@@ -99,7 +102,7 @@ NS_NewHTMLFrame(nsIContent* aContent, nsIFrame* aParentFrame,
}
RootFrame::RootFrame(nsIContent* aContent)
: nsContainerFrame(aContent, nsnull)
: nsHTMLContainerFrame(aContent, nsnull)
{
}
@@ -157,21 +160,30 @@ RootFrame::Reflow(nsIPresContext& aPresContext,
// Reflow our pseudo frame. It will choose whetever height its child frame
// wants
if (nsnull != mFirstChild) {
// Compute how much space to reserve for our border and padding
const nsStyleSpacing* spacing =
(const nsStyleSpacing*)mStyleContext->GetStyleData(eStyleStruct_Spacing);
nsMargin borderPadding;
spacing->CalcBorderPaddingFor(this, borderPadding);
nsSize kidMaxSize(aReflowState.maxSize);
kidMaxSize.width -= borderPadding.left + borderPadding.right;
kidMaxSize.height -= borderPadding.top + borderPadding.bottom;
nsHTMLReflowMetrics desiredSize(nsnull);
nsHTMLReflowState kidReflowState(aPresContext, mFirstChild, aReflowState,
aReflowState.maxSize);
kidMaxSize);
// XXX HACK
kidReflowState.widthConstraint = eHTMLFrameConstraint_Fixed;
kidReflowState.minWidth = aReflowState.maxSize.width;
kidReflowState.minWidth = kidMaxSize.width;
kidReflowState.heightConstraint = eHTMLFrameConstraint_Fixed;
kidReflowState.minHeight = aReflowState.maxSize.height;
kidReflowState.minHeight = kidMaxSize.height;
nsIHTMLReflow* htmlReflow;
if (NS_OK == mFirstChild->QueryInterface(kIHTMLReflowIID, (void**)&htmlReflow)) {
ReflowChild(mFirstChild, aPresContext, desiredSize, kidReflowState, aStatus);
// Place and size the child
nsRect rect(0, 0, desiredSize.width, desiredSize.height);
nsRect rect(borderPadding.left, borderPadding.top, desiredSize.width, desiredSize.height);
mFirstChild->SetRect(rect);
// XXX We should resolve the details of who/when DidReflow() notifications
@@ -190,6 +202,12 @@ RootFrame::Reflow(nsIPresContext& aPresContext,
return NS_OK;
}
PRIntn
RootFrame::GetSkipSides() const
{
return 0;
}
NS_IMETHODIMP
RootFrame::HandleEvent(nsIPresContext& aPresContext,
nsGUIEvent* aEvent,