Changes to bring clipping inline with upcoming CSS2 errata
git-svn-id: svn://10.0.0.236/trunk@66887 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
@@ -88,14 +88,12 @@ public:
|
||||
* @param aParent intended parent for view. this is not actually set in the
|
||||
* nsIView through this method. it is only used by the initialization
|
||||
* code to walk up the view tree, if necessary, to find resources.
|
||||
* @param aCilpRect initial clip rect of view
|
||||
* @param aVisibilityFlag initial visibility state of view
|
||||
* @result The result of the initialization, NS_OK if no errors
|
||||
*/
|
||||
NS_IMETHOD Init(nsIViewManager* aManager,
|
||||
const nsRect &aBounds,
|
||||
const nsIView *aParent,
|
||||
const nsViewClip *aClip = nsnull,
|
||||
nsViewVisibility aVisibilityFlag = nsViewVisibility_kShow) = 0;
|
||||
|
||||
/**
|
||||
|
||||
@@ -103,10 +103,9 @@ nsrefcnt nsScrollPortView::Release()
|
||||
NS_IMETHODIMP nsScrollPortView::Init(nsIViewManager* aManager,
|
||||
const nsRect &aBounds,
|
||||
const nsIView *aParent,
|
||||
const nsViewClip *aClip,
|
||||
nsViewVisibility aVisibilityFlag)
|
||||
{
|
||||
return nsView::Init(aManager, aBounds, aParent, aClip, aVisibilityFlag);
|
||||
return nsView::Init(aManager, aBounds, aParent, aVisibilityFlag);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsScrollPortView::SetDimensions(nscoord width, nscoord height, PRBool aPaint)
|
||||
|
||||
@@ -43,7 +43,6 @@ public:
|
||||
NS_IMETHOD Init(nsIViewManager* aManager,
|
||||
const nsRect &aBounds,
|
||||
const nsIView *aParent,
|
||||
const nsViewClip *aClip = nsnull,
|
||||
nsViewVisibility aVisibilityFlag = nsViewVisibility_kShow);
|
||||
NS_IMETHOD SetDimensions(nscoord width, nscoord height, PRBool aPaint = PR_TRUE);
|
||||
NS_IMETHOD SetPosition(nscoord aX, nscoord aY);
|
||||
|
||||
@@ -444,7 +444,6 @@ nsrefcnt nsScrollingView::Release()
|
||||
NS_IMETHODIMP nsScrollingView::Init(nsIViewManager* aManager,
|
||||
const nsRect &aBounds,
|
||||
const nsIView *aParent,
|
||||
const nsViewClip *aClip,
|
||||
nsViewVisibility aVisibilityFlag)
|
||||
{
|
||||
nsIDeviceContext *dx = nsnull;
|
||||
@@ -463,7 +462,7 @@ NS_IMETHODIMP nsScrollingView::Init(nsIViewManager* aManager,
|
||||
NS_RELEASE(dx);
|
||||
}
|
||||
|
||||
return nsView::Init(aManager, aBounds, aParent, aClip, aVisibilityFlag);
|
||||
return nsView::Init(aManager, aBounds, aParent, aVisibilityFlag);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsScrollingView::SetDimensions(nscoord width, nscoord height, PRBool aPaint)
|
||||
@@ -840,8 +839,7 @@ NS_IMETHODIMP nsScrollingView::CreateScrollControls(nsNativeWidget aNative)
|
||||
trect.height = NSToCoordRound(sbHeight);
|
||||
trect.y = mBounds.y + mBounds.YMost() - trect.height;
|
||||
|
||||
rv = mCornerView->Init(mViewManager, trect, this,
|
||||
nsnull, nsViewVisibility_kHide);
|
||||
rv = mCornerView->Init(mViewManager, trect, this, nsViewVisibility_kHide);
|
||||
mViewManager->InsertChild(this, mCornerView, mZindex);
|
||||
mCornerView->CreateWidget(kWidgetCID, &initData,
|
||||
mWindow ? nsnull : aNative);
|
||||
|
||||
@@ -45,7 +45,6 @@ public:
|
||||
NS_IMETHOD Init(nsIViewManager* aManager,
|
||||
const nsRect &aBounds,
|
||||
const nsIView *aParent,
|
||||
const nsViewClip *aClip = nsnull,
|
||||
nsViewVisibility aVisibilityFlag = nsViewVisibility_kShow);
|
||||
NS_IMETHOD SetDimensions(nscoord width, nscoord height, PRBool aPaint = PR_TRUE);
|
||||
NS_IMETHOD SetPosition(nscoord aX, nscoord aY);
|
||||
|
||||
@@ -210,7 +210,6 @@ nsIView* nsView::GetViewFor(nsIWidget* aWidget)
|
||||
NS_IMETHODIMP nsView :: Init(nsIViewManager* aManager,
|
||||
const nsRect &aBounds,
|
||||
const nsIView *aParent,
|
||||
const nsViewClip *aClip,
|
||||
nsViewVisibility aVisibilityFlag)
|
||||
{
|
||||
//printf(" \n callback=%d data=%d", aWidgetCreateCallback, aCallbackData);
|
||||
@@ -224,15 +223,10 @@ NS_IMETHODIMP nsView :: Init(nsIViewManager* aManager,
|
||||
// we don't hold a reference to the view manager
|
||||
mViewManager = aManager;
|
||||
|
||||
if (aClip != nsnull)
|
||||
mClip = *aClip;
|
||||
else
|
||||
{
|
||||
mClip.mLeft = 0;
|
||||
mClip.mRight = 0;
|
||||
mClip.mTop = 0;
|
||||
mClip.mBottom = 0;
|
||||
}
|
||||
mChildClip.mLeft = 0;
|
||||
mChildClip.mRight = 0;
|
||||
mChildClip.mTop = 0;
|
||||
mChildClip.mBottom = 0;
|
||||
|
||||
SetBounds(aBounds);
|
||||
|
||||
@@ -273,18 +267,7 @@ NS_IMETHODIMP nsView :: Paint(nsIRenderingContext& rc, const nsRect& rect,
|
||||
if (nsnull != mClientData) {
|
||||
nsCOMPtr<nsIViewObserver> observer;
|
||||
if (NS_OK == mViewManager->GetViewObserver(*getter_AddRefs(observer))) {
|
||||
if ((mClip.mLeft != mClip.mRight) && (mClip.mTop != mClip.mBottom)) {
|
||||
nsRect crect;
|
||||
crect.x = mClip.mLeft;
|
||||
crect.y = mClip.mTop;
|
||||
crect.width = mClip.mRight - mClip.mLeft;
|
||||
crect.height = mClip.mBottom - mClip.mTop;
|
||||
rc.SetClipRect(crect, nsClipCombine_kIntersect, aResult);
|
||||
if (!aResult)
|
||||
observer->Paint((nsIView *)this, rc, rect);
|
||||
} else {
|
||||
observer->Paint((nsIView *)this, rc, rect);
|
||||
}
|
||||
observer->Paint((nsIView *)this, rc, rect);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -308,11 +291,7 @@ NS_IMETHODIMP nsView :: Paint(nsIRenderingContext& rc, const nsRect& rect,
|
||||
{
|
||||
nsRect brect;
|
||||
GetBounds(brect);
|
||||
|
||||
// what does this test mean?
|
||||
if ((mClip.mLeft == mClip.mRight) || (mClip.mTop == mClip.mBottom) && (this != pRoot)) {
|
||||
rc.SetClipRect(brect, nsClipCombine_kIntersect, clipres);
|
||||
}
|
||||
rc.SetClipRect(brect, nsClipCombine_kIntersect, clipres);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -580,12 +559,6 @@ NS_IMETHODIMP nsView :: Paint(nsIRenderingContext& rc, const nsRect& rect,
|
||||
if (nsnull != mClientData) {
|
||||
nsCOMPtr<nsIViewObserver> observer;
|
||||
if (NS_OK == mViewManager->GetViewObserver(*getter_AddRefs(observer))) {
|
||||
if ((mClip.mLeft != mClip.mRight) && (mClip.mTop != mClip.mBottom)) {
|
||||
nsRect crect(mClip.mLeft, mClip.mTop,
|
||||
mClip.mRight - mClip.mLeft,
|
||||
mClip.mBottom - mClip.mTop);
|
||||
localcx->SetClipRect(crect, nsClipCombine_kIntersect, clipres);
|
||||
}
|
||||
observer->Paint((nsIView *)this, *localcx, rect);
|
||||
}
|
||||
}
|
||||
@@ -696,17 +669,7 @@ NS_IMETHODIMP nsView :: Paint(nsIRenderingContext& rc, const nsRect& rect,
|
||||
nsRect brect;
|
||||
GetBounds(brect);
|
||||
|
||||
if ((mClip.mLeft != mClip.mRight) && (mClip.mTop != mClip.mBottom))
|
||||
{
|
||||
nsRect crect;
|
||||
|
||||
crect.x = mClip.mLeft + brect.x;
|
||||
crect.y = mClip.mTop + brect.y;
|
||||
crect.width = mClip.mRight - mClip.mLeft;
|
||||
crect.height = mClip.mBottom - mClip.mTop;
|
||||
|
||||
rc.SetClipRect(crect, nsClipCombine_kSubtract, clipres);
|
||||
} else if (this != pRoot)
|
||||
if (this != pRoot)
|
||||
rc.SetClipRect(brect, nsClipCombine_kSubtract, clipres);
|
||||
}
|
||||
|
||||
@@ -1049,20 +1012,20 @@ NS_IMETHODIMP nsView :: GetBounds(nsRect &aBounds) const
|
||||
NS_IMETHODIMP nsView :: SetChildClip(nscoord aLeft, nscoord aTop, nscoord aRight, nscoord aBottom)
|
||||
{
|
||||
NS_PRECONDITION(aLeft <= aRight && aTop <= aBottom, "bad clip values");
|
||||
mClip.mLeft = aLeft;
|
||||
mClip.mTop = aTop;
|
||||
mClip.mRight = aRight;
|
||||
mClip.mBottom = aBottom;
|
||||
mChildClip.mLeft = aLeft;
|
||||
mChildClip.mTop = aTop;
|
||||
mChildClip.mRight = aRight;
|
||||
mChildClip.mBottom = aBottom;
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsView :: GetChildClip(nscoord *aLeft, nscoord *aTop, nscoord *aRight, nscoord *aBottom) const
|
||||
{
|
||||
*aLeft = mClip.mLeft;
|
||||
*aTop = mClip.mTop;
|
||||
*aRight = mClip.mRight;
|
||||
*aBottom = mClip.mBottom;
|
||||
*aLeft = mChildClip.mLeft;
|
||||
*aTop = mChildClip.mTop;
|
||||
*aRight = mChildClip.mRight;
|
||||
*aBottom = mChildClip.mBottom;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
@@ -49,7 +49,6 @@ public:
|
||||
NS_IMETHOD Init(nsIViewManager* aManager,
|
||||
const nsRect &aBounds,
|
||||
const nsIView *aParent,
|
||||
const nsViewClip *aClip = nsnull,
|
||||
nsViewVisibility aVisibilityFlag = nsViewVisibility_kShow);
|
||||
|
||||
NS_IMETHOD Destroy();
|
||||
@@ -145,7 +144,7 @@ protected:
|
||||
nsViewVisibility mVis;
|
||||
PRInt32 mNumKids;
|
||||
nsRect mBounds;
|
||||
nsViewClip mClip;
|
||||
nsViewClip mChildClip;
|
||||
nsTransform2D *mXForm;
|
||||
float mOpacity;
|
||||
PRUint32 mVFlags;
|
||||
|
||||
Reference in New Issue
Block a user