mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-03-04 07:40:42 +00:00
Added mClip and mClipFlags to nsStylePosition
This commit is contained in:
parent
66ead6fcea
commit
beceaa1b53
@ -238,6 +238,8 @@ struct StylePositionImpl: public nsStylePosition {
|
||||
mHeightFlags = NS_STYLE_POSITION_VALUE_AUTO;
|
||||
mHeight = 0;
|
||||
mZIndex = 0;
|
||||
mClipFlags = NS_STYLE_CLIP_AUTO;
|
||||
mClip.SizeTo(0,0,0,0);
|
||||
}
|
||||
|
||||
~StylePositionImpl(void)
|
||||
|
@ -1017,6 +1017,32 @@ void CSSStyleRuleImpl::MapStyleInto(nsIStyleContext* aContext, nsIPresContext* a
|
||||
} else if (ourPosition->mZIndex.GetUnit() == eCSSUnit_Absolute) {
|
||||
position->mZIndex = ourPosition->mZIndex.GetIntValue();
|
||||
}
|
||||
|
||||
// clip property
|
||||
if (nsnull != ourPosition->mClip) {
|
||||
position->mClipFlags = NS_STYLE_CLIP_RECT;
|
||||
|
||||
if (ourPosition->mClip->mTop.GetUnit() == eCSSUnit_Enumerated) {
|
||||
position->mClip.top = ourPosition->mClip->mTop.GetIntValue();
|
||||
} else if (ourPosition->mClip->mTop.IsLengthUnit()) {
|
||||
position->mClip.top = CalcLength(ourPosition->mClip->mTop, font, aPresContext);
|
||||
}
|
||||
if (ourPosition->mClip->mRight.GetUnit() == eCSSUnit_Enumerated) {
|
||||
position->mClip.right = ourPosition->mClip->mRight.GetIntValue();
|
||||
} else if (ourPosition->mClip->mRight.IsLengthUnit()) {
|
||||
position->mClip.right = CalcLength(ourPosition->mClip->mRight, font, aPresContext);
|
||||
}
|
||||
if (ourPosition->mClip->mBottom.GetUnit() == eCSSUnit_Enumerated) {
|
||||
position->mClip.bottom = ourPosition->mClip->mBottom.GetIntValue();
|
||||
} else if (ourPosition->mClip->mBottom.IsLengthUnit()) {
|
||||
position->mClip.bottom = CalcLength(ourPosition->mClip->mBottom, font, aPresContext);
|
||||
}
|
||||
if (ourPosition->mClip->mLeft.GetUnit() == eCSSUnit_Enumerated) {
|
||||
position->mClip.left = ourPosition->mClip->mLeft.GetIntValue();
|
||||
} else if (ourPosition->mClip->mLeft.IsLengthUnit()) {
|
||||
position->mClip.left = CalcLength(ourPosition->mClip->mLeft, font, aPresContext);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -140,20 +140,22 @@ protected:
|
||||
};
|
||||
|
||||
struct nsStylePosition : public nsStyleStruct {
|
||||
PRUint8 mPosition; // see nsStyleConsts.h
|
||||
PRUint8 mOverflow; // see nsStyleConsts.h
|
||||
PRUint8 mPosition; // see nsStyleConsts.h
|
||||
PRUint8 mOverflow; // see nsStyleConsts.h
|
||||
PRUint8 mClipFlags; // see nsStyleConsts.h
|
||||
|
||||
PRUint8 mLeftOffsetFlags; // see nsStyleConsts.h
|
||||
PRUint8 mTopOffsetFlags; // see nsStyleConsts.h
|
||||
PRUint8 mWidthFlags; // see nsStyleConsts.h
|
||||
PRUint8 mHeightFlags; // see nsStyleConsts.h
|
||||
PRUint8 mLeftOffsetFlags; // see nsStyleConsts.h
|
||||
PRUint8 mTopOffsetFlags; // see nsStyleConsts.h
|
||||
PRUint8 mWidthFlags; // see nsStyleConsts.h
|
||||
PRUint8 mHeightFlags; // see nsStyleConsts.h
|
||||
|
||||
nscoord mLeftOffset;
|
||||
nscoord mTopOffset;
|
||||
nscoord mWidth;
|
||||
nscoord mHeight;
|
||||
nscoord mLeftOffset;
|
||||
nscoord mTopOffset;
|
||||
nscoord mWidth;
|
||||
nscoord mHeight;
|
||||
|
||||
PRInt32 mZIndex;
|
||||
PRInt32 mZIndex;
|
||||
nsMargin mClip; // offsets from respective edge
|
||||
|
||||
protected:
|
||||
nsStylePosition();
|
||||
|
@ -70,9 +70,6 @@
|
||||
#define NS_STYLE_CLEAR_COLUMN 6
|
||||
#define NS_STYLE_CLEAR_PAGE 7
|
||||
|
||||
// See nsStyleXXX
|
||||
#define NS_STYLE_CLIP_AUTO 0
|
||||
|
||||
// See nsStyleColor
|
||||
#define NS_STYLE_CURSOR_INHERIT 0
|
||||
#define NS_STYLE_CURSOR_DEFAULT 1
|
||||
|
@ -238,6 +238,8 @@ struct StylePositionImpl: public nsStylePosition {
|
||||
mHeightFlags = NS_STYLE_POSITION_VALUE_AUTO;
|
||||
mHeight = 0;
|
||||
mZIndex = 0;
|
||||
mClipFlags = NS_STYLE_CLIP_AUTO;
|
||||
mClip.SizeTo(0,0,0,0);
|
||||
}
|
||||
|
||||
~StylePositionImpl(void)
|
||||
|
@ -63,9 +63,9 @@ AbsoluteFrame::~AbsoluteFrame()
|
||||
{
|
||||
}
|
||||
|
||||
nsIView* AbsoluteFrame::CreateView(nsIView* aContainingView,
|
||||
const nsRect& aRect,
|
||||
PRInt32 aZIndex)
|
||||
nsIView* AbsoluteFrame::CreateView(nsIView* aContainingView,
|
||||
const nsRect& aRect,
|
||||
nsStylePosition* aPosition)
|
||||
{
|
||||
nsIView* view;
|
||||
|
||||
@ -85,17 +85,29 @@ nsIView* AbsoluteFrame::CreateView(nsIView* aContainingView,
|
||||
// See if the containing view is a scroll view
|
||||
nsIScrollableView* scrollView = nsnull;
|
||||
nsresult result;
|
||||
nsRect clip;
|
||||
nsRect* pClip = NS_STYLE_CLIP_RECT == aPosition->mClipFlags ?
|
||||
&clip : nsnull;
|
||||
|
||||
// Is there a clip rect specified?
|
||||
if (NS_STYLE_CLIP_RECT == aPosition->mClipFlags) {
|
||||
// XXX Michael: this needs to change
|
||||
clip.SetRect(aPosition->mClip.left, aPosition->mClip.top,
|
||||
aPosition->mClip.right, aPosition->mClip.bottom);
|
||||
}
|
||||
|
||||
result = aContainingView->QueryInterface(kIScrollableViewIID, (void**)&scrollView);
|
||||
if (NS_OK == result) {
|
||||
nsIView* scrolledView = scrollView->GetScrolledView();
|
||||
|
||||
view->Init(viewManager, aRect, scrolledView, nsnull, nsnull, nsnull, aZIndex);
|
||||
view->Init(viewManager, aRect, scrolledView, nsnull, nsnull, nsnull,
|
||||
aPosition->mZIndex, pClip);
|
||||
viewManager->InsertChild(scrolledView, view, 0);
|
||||
NS_RELEASE(scrolledView);
|
||||
NS_RELEASE(scrollView);
|
||||
} else {
|
||||
view->Init(viewManager, aRect, aContainingView, nsnull, nsnull, nsnull, aZIndex);
|
||||
view->Init(viewManager, aRect, aContainingView, nsnull, nsnull, nsnull,
|
||||
aPosition->mZIndex, pClip);
|
||||
viewManager->InsertChild(aContainingView, view, 0);
|
||||
}
|
||||
|
||||
@ -250,7 +262,7 @@ NS_METHOD AbsoluteFrame::ResizeReflow(nsIPresContext* aPresContext,
|
||||
ComputeViewBounds(containingRect, position, rect);
|
||||
|
||||
// Create a view for the frame
|
||||
nsIView* view = CreateView(containingView, rect, position->mZIndex);
|
||||
nsIView* view = CreateView(containingView, rect, position);
|
||||
NS_RELEASE(containingView);
|
||||
|
||||
mFrame->SetView(view);
|
||||
|
@ -53,9 +53,9 @@ protected:
|
||||
|
||||
virtual ~AbsoluteFrame();
|
||||
|
||||
nsIView* CreateView(nsIView* aContainingView,
|
||||
const nsRect& aRect,
|
||||
PRInt32 aZIndex);
|
||||
nsIView* CreateView(nsIView* aContainingView,
|
||||
const nsRect& aRect,
|
||||
nsStylePosition* aPosition);
|
||||
nsIFrame* GetContainingBlock();
|
||||
void ComputeViewBounds(const nsRect& aContainingInnerRect,
|
||||
nsStylePosition* aPosition,
|
||||
|
@ -1017,6 +1017,32 @@ void CSSStyleRuleImpl::MapStyleInto(nsIStyleContext* aContext, nsIPresContext* a
|
||||
} else if (ourPosition->mZIndex.GetUnit() == eCSSUnit_Absolute) {
|
||||
position->mZIndex = ourPosition->mZIndex.GetIntValue();
|
||||
}
|
||||
|
||||
// clip property
|
||||
if (nsnull != ourPosition->mClip) {
|
||||
position->mClipFlags = NS_STYLE_CLIP_RECT;
|
||||
|
||||
if (ourPosition->mClip->mTop.GetUnit() == eCSSUnit_Enumerated) {
|
||||
position->mClip.top = ourPosition->mClip->mTop.GetIntValue();
|
||||
} else if (ourPosition->mClip->mTop.IsLengthUnit()) {
|
||||
position->mClip.top = CalcLength(ourPosition->mClip->mTop, font, aPresContext);
|
||||
}
|
||||
if (ourPosition->mClip->mRight.GetUnit() == eCSSUnit_Enumerated) {
|
||||
position->mClip.right = ourPosition->mClip->mRight.GetIntValue();
|
||||
} else if (ourPosition->mClip->mRight.IsLengthUnit()) {
|
||||
position->mClip.right = CalcLength(ourPosition->mClip->mRight, font, aPresContext);
|
||||
}
|
||||
if (ourPosition->mClip->mBottom.GetUnit() == eCSSUnit_Enumerated) {
|
||||
position->mClip.bottom = ourPosition->mClip->mBottom.GetIntValue();
|
||||
} else if (ourPosition->mClip->mBottom.IsLengthUnit()) {
|
||||
position->mClip.bottom = CalcLength(ourPosition->mClip->mBottom, font, aPresContext);
|
||||
}
|
||||
if (ourPosition->mClip->mLeft.GetUnit() == eCSSUnit_Enumerated) {
|
||||
position->mClip.left = ourPosition->mClip->mLeft.GetIntValue();
|
||||
} else if (ourPosition->mClip->mLeft.IsLengthUnit()) {
|
||||
position->mClip.left = CalcLength(ourPosition->mClip->mLeft, font, aPresContext);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1017,6 +1017,32 @@ void CSSStyleRuleImpl::MapStyleInto(nsIStyleContext* aContext, nsIPresContext* a
|
||||
} else if (ourPosition->mZIndex.GetUnit() == eCSSUnit_Absolute) {
|
||||
position->mZIndex = ourPosition->mZIndex.GetIntValue();
|
||||
}
|
||||
|
||||
// clip property
|
||||
if (nsnull != ourPosition->mClip) {
|
||||
position->mClipFlags = NS_STYLE_CLIP_RECT;
|
||||
|
||||
if (ourPosition->mClip->mTop.GetUnit() == eCSSUnit_Enumerated) {
|
||||
position->mClip.top = ourPosition->mClip->mTop.GetIntValue();
|
||||
} else if (ourPosition->mClip->mTop.IsLengthUnit()) {
|
||||
position->mClip.top = CalcLength(ourPosition->mClip->mTop, font, aPresContext);
|
||||
}
|
||||
if (ourPosition->mClip->mRight.GetUnit() == eCSSUnit_Enumerated) {
|
||||
position->mClip.right = ourPosition->mClip->mRight.GetIntValue();
|
||||
} else if (ourPosition->mClip->mRight.IsLengthUnit()) {
|
||||
position->mClip.right = CalcLength(ourPosition->mClip->mRight, font, aPresContext);
|
||||
}
|
||||
if (ourPosition->mClip->mBottom.GetUnit() == eCSSUnit_Enumerated) {
|
||||
position->mClip.bottom = ourPosition->mClip->mBottom.GetIntValue();
|
||||
} else if (ourPosition->mClip->mBottom.IsLengthUnit()) {
|
||||
position->mClip.bottom = CalcLength(ourPosition->mClip->mBottom, font, aPresContext);
|
||||
}
|
||||
if (ourPosition->mClip->mLeft.GetUnit() == eCSSUnit_Enumerated) {
|
||||
position->mClip.left = ourPosition->mClip->mLeft.GetIntValue();
|
||||
} else if (ourPosition->mClip->mLeft.IsLengthUnit()) {
|
||||
position->mClip.left = CalcLength(ourPosition->mClip->mLeft, font, aPresContext);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -238,6 +238,8 @@ struct StylePositionImpl: public nsStylePosition {
|
||||
mHeightFlags = NS_STYLE_POSITION_VALUE_AUTO;
|
||||
mHeight = 0;
|
||||
mZIndex = 0;
|
||||
mClipFlags = NS_STYLE_CLIP_AUTO;
|
||||
mClip.SizeTo(0,0,0,0);
|
||||
}
|
||||
|
||||
~StylePositionImpl(void)
|
||||
|
Loading…
x
Reference in New Issue
Block a user