diff --git a/view/public/nsIView.h b/view/public/nsIView.h index 9ad3e0174d2e..5291f9a30753 100644 --- a/view/public/nsIView.h +++ b/view/public/nsIView.h @@ -189,7 +189,7 @@ public: * @param width new width * @param height new height */ - virtual void SetDimensions(nscoord width, nscoord height) = 0; + virtual void SetDimensions(nscoord width, nscoord height, PRBool aPaint = PR_TRUE) = 0; virtual void GetDimensions(nscoord *width, nscoord *height) = 0; /** @@ -197,7 +197,7 @@ public: * been changed. * @param aBounds new bounds */ - virtual void SetBounds(const nsRect &aBounds) = 0; + virtual void SetBounds(const nsRect &aBounds, PRBool aPaint = PR_TRUE) = 0; /** * Called to indicate that the dimensions and position of the view have @@ -207,7 +207,9 @@ public: * @param aWidth new width * @param aHeight new height */ - virtual void SetBounds(nscoord aX, nscoord aY, nscoord aWidth, nscoord aHeight) = 0; + virtual void SetBounds(nscoord aX, nscoord aY, + nscoord aWidth, nscoord aHeight, + PRBool aPaint = PR_TRUE) = 0; /** * Called to get the dimensions and position of the view. diff --git a/view/public/nsIViewManager.h b/view/public/nsIViewManager.h index 21867b2178b7..7dae4b4f5c4f 100644 --- a/view/public/nsIViewManager.h +++ b/view/public/nsIViewManager.h @@ -54,18 +54,6 @@ public: */ virtual nsresult Init(nsIPresContext* aPresContext) = 0; - /** - * Set the window for which the manager is responsible. - * @param aRootWindow window to set as root - */ - virtual void SetRootWindow(nsIWidget *aRootWindow) = 0; - - /** - * Get the window for which the manager is responsible. - * @result the root window - */ - virtual nsIWidget *GetRootWindow() = 0; - /** * Get the root of the view tree. * @result the root view diff --git a/view/src/nsScrollingView.cpp b/view/src/nsScrollingView.cpp index 4fbb2f9dda94..5de22c3ac619 100644 --- a/view/src/nsScrollingView.cpp +++ b/view/src/nsScrollingView.cpp @@ -40,7 +40,7 @@ public: ~ScrollBarView(); nsEventStatus HandleEvent(nsGUIEvent *aEvent, PRUint32 aEventFlags); void SetPosition(nscoord x, nscoord y); - void SetDimensions(nscoord width, nscoord height); + void SetDimensions(nscoord width, nscoord height, PRBool aPaint = PR_TRUE); public: nsScrollingView *mScrollingView; @@ -100,7 +100,7 @@ void ScrollBarView :: SetPosition(nscoord x, nscoord y) } } -void ScrollBarView :: SetDimensions(nscoord width, nscoord height) +void ScrollBarView :: SetDimensions(nscoord width, nscoord height, PRBool aPaint) { mBounds.SizeTo(width, height); @@ -110,7 +110,7 @@ void ScrollBarView :: SetDimensions(nscoord width, nscoord height) float t2p = px->GetTwipsToPixels(); mWindow->Resize(NSTwipsToIntPixels(width, t2p), NSTwipsToIntPixels(height, t2p), - PR_TRUE); + aPaint); NS_RELEASE(px); } @@ -462,7 +462,7 @@ nsresult nsScrollingView :: Init(nsIViewManager* aManager, return rv; } -void nsScrollingView :: SetDimensions(nscoord width, nscoord height) +void nsScrollingView :: SetDimensions(nscoord width, nscoord height, PRBool aPaint) { nsRect trect; nsIPresContext *cx = mViewManager->GetPresContext(); @@ -478,7 +478,7 @@ void nsScrollingView :: SetDimensions(nscoord width, nscoord height) trect.y = height - scrollHeight; trect.x = width - scrollWidth; - mCornerView->SetBounds(trect); + mCornerView->SetBounds(trect, aPaint); } if (mHScrollBarView && (mHScrollBarView->GetVisibility() == nsViewVisibility_kShow)) @@ -487,7 +487,7 @@ void nsScrollingView :: SetDimensions(nscoord width, nscoord height) if (mVScrollBarView && (mVScrollBarView->GetVisibility() == nsViewVisibility_kShow)) showVert = scrollWidth; -// nsView :: SetDimensions(width, height); +// nsView :: SetDimensions(width, height, aPaint); mBounds.SizeTo(width, height); @@ -500,7 +500,7 @@ void nsScrollingView :: SetDimensions(nscoord width, nscoord height) mWindow->Resize(NSTwipsToIntPixels((width - showVert), t2p), NSTwipsToIntPixels((height - showHorz), t2p), - PR_TRUE); + aPaint); } else { @@ -520,7 +520,7 @@ void nsScrollingView :: SetDimensions(nscoord width, nscoord height) trect.x = width - scrollWidth; trect.y = 0; - mVScrollBarView->SetBounds(trect); + mVScrollBarView->SetBounds(trect, aPaint); } if (nsnull != mHScrollBarView) @@ -535,7 +535,7 @@ void nsScrollingView :: SetDimensions(nscoord width, nscoord height) trect.y = height - scrollHeight; trect.x = 0; - mHScrollBarView->SetBounds(trect); + mHScrollBarView->SetBounds(trect, aPaint); } //this will fix the size of the thumb when we resize the root window, diff --git a/view/src/nsScrollingView.h b/view/src/nsScrollingView.h index 4b3150b1e6d6..c0b24144f4f0 100644 --- a/view/src/nsScrollingView.h +++ b/view/src/nsScrollingView.h @@ -47,7 +47,7 @@ public: nsViewVisibility aVisibilityFlag = nsViewVisibility_kShow); //overrides - virtual void SetDimensions(nscoord width, nscoord height); + virtual void SetDimensions(nscoord width, nscoord height, PRBool aPaint = PR_TRUE); virtual void SetPosition(nscoord aX, nscoord aY); virtual void HandleScrollEvent(nsGUIEvent *aEvent, PRUint32 aEventFlags); virtual nsEventStatus HandleEvent(nsGUIEvent *aEvent, PRUint32 aEventFlags); diff --git a/view/src/nsView.cpp b/view/src/nsView.cpp index 67c72f56a654..0c231a0bdd3b 100644 --- a/view/src/nsView.cpp +++ b/view/src/nsView.cpp @@ -583,7 +583,7 @@ void nsView :: GetPosition(nscoord *x, nscoord *y) } } -void nsView :: SetDimensions(nscoord width, nscoord height) +void nsView :: SetDimensions(nscoord width, nscoord height, PRBool aPaint) { mBounds.SizeTo(width, height); @@ -605,7 +605,7 @@ void nsView :: SetDimensions(nscoord width, nscoord height) float t2p = px->GetTwipsToPixels(); mWindow->Resize(NSTwipsToIntPixels(width, t2p), NSTwipsToIntPixels(height, t2p), - PR_TRUE); + aPaint); NS_RELEASE(px); } @@ -617,16 +617,16 @@ void nsView :: GetDimensions(nscoord *width, nscoord *height) *height = mBounds.height; } -void nsView :: SetBounds(const nsRect &aBounds) +void nsView :: SetBounds(const nsRect &aBounds, PRBool aPaint) { SetPosition(aBounds.x, aBounds.y); - SetDimensions(aBounds.width, aBounds.height); + SetDimensions(aBounds.width, aBounds.height, aPaint); } -void nsView :: SetBounds(nscoord aX, nscoord aY, nscoord aWidth, nscoord aHeight) +void nsView :: SetBounds(nscoord aX, nscoord aY, nscoord aWidth, nscoord aHeight, PRBool aPaint) { SetPosition(aX, aY); - SetDimensions(aWidth, aHeight); + SetDimensions(aWidth, aHeight, aPaint); } void nsView :: GetBounds(nsRect &aBounds) const diff --git a/view/src/nsView.h b/view/src/nsView.h index a641931fc84f..6b0d57279ace 100644 --- a/view/src/nsView.h +++ b/view/src/nsView.h @@ -64,10 +64,10 @@ public: virtual nsEventStatus HandleEvent(nsGUIEvent *event, PRUint32 aEventFlags); virtual void SetPosition(nscoord x, nscoord y); virtual void GetPosition(nscoord *x, nscoord *y); - virtual void SetDimensions(nscoord width, nscoord height); + virtual void SetDimensions(nscoord width, nscoord height, PRBool aPaint = PR_TRUE); virtual void GetDimensions(nscoord *width, nscoord *height); - virtual void SetBounds(const nsRect &aBounds); - virtual void SetBounds(nscoord aX, nscoord aY, nscoord aWidth, nscoord aHeight); + virtual void SetBounds(const nsRect &aBounds, PRBool aPaint = PR_TRUE); + virtual void SetBounds(nscoord aX, nscoord aY, nscoord aWidth, nscoord aHeight, PRBool aPaint = PR_TRUE); virtual void GetBounds(nsRect &aBounds) const; virtual void SetClip(nscoord aX, nscoord aY, nscoord aWidth, nscoord aHeight); virtual PRBool GetClip(nscoord *aLeft, nscoord *aTop, nscoord *aRight, nscoord *aBottom); diff --git a/view/src/nsViewManager.cpp b/view/src/nsViewManager.cpp index 4105dfca30cf..70128a04a2c1 100644 --- a/view/src/nsViewManager.cpp +++ b/view/src/nsViewManager.cpp @@ -154,19 +154,6 @@ nsresult nsViewManager::Init(nsIPresContext* aPresContext) return rv; } -nsIWidget * nsViewManager :: GetRootWindow() -{ - NS_IF_ADDREF(mRootWindow); - return mRootWindow; -} - -void nsViewManager :: SetRootWindow(nsIWidget *aRootWindow) -{ - NS_IF_RELEASE(mRootWindow); - mRootWindow = aRootWindow; - NS_IF_ADDREF(mRootWindow); -} - nsIView * nsViewManager :: GetRootView() { return mRootView; @@ -178,6 +165,12 @@ void nsViewManager :: SetRootView(nsIView *aView) // Do NOT destroy the current root view. It's the caller's responsibility // to destroy it mRootView = aView; + + //now get the window too. + NS_IF_RELEASE(mRootWindow); + + if (nsnull != mRootView) + mRootWindow = mRootView->GetWidget(); } PRUint32 nsViewManager :: GetFrameRate() diff --git a/view/src/nsViewManager.h b/view/src/nsViewManager.h index ed36accb0b07..517241a87c0f 100644 --- a/view/src/nsViewManager.h +++ b/view/src/nsViewManager.h @@ -41,9 +41,6 @@ public: virtual nsresult Init(nsIPresContext* aPresContext); - virtual void SetRootWindow(nsIWidget *aRootWindow); - virtual nsIWidget *GetRootWindow(); - virtual nsIView *GetRootView(); virtual void SetRootView(nsIView *aView);