diff --git a/layout/base/nsPresShell.cpp b/layout/base/nsPresShell.cpp index 15c59bbccc3..565de0d51d0 100644 --- a/layout/base/nsPresShell.cpp +++ b/layout/base/nsPresShell.cpp @@ -902,7 +902,7 @@ IncrementalReflow::Dispatch(nsIPresContext *aPresContext, if (first == root) size = aMaxSize; else - first->GetSize(size); + size = first->GetSize(); nsHTMLReflowState reflowState(aPresContext, first, path, &aRendContext, size); @@ -916,11 +916,9 @@ IncrementalReflow::Dispatch(nsIPresContext *aPresContext, (aDesiredSize.width == size.width && aDesiredSize.height == size.height), "non-root frame's desired size changed during an incremental reflow"); - first->SizeTo(aPresContext, aDesiredSize.width, aDesiredSize.height); + first->SetSize(nsSize(aDesiredSize.width, aDesiredSize.height)); - nsIView* view = first->GetView(aPresContext); - if (view) - nsContainerFrame::SyncFrameViewAfterReflow(aPresContext, first, view, nsnull); + nsContainerFrame::SyncFrameViewAfterReflow(aPresContext, first, first->GetView(), nsnull); first->DidReflow(aPresContext, nsnull, NS_FRAME_REFLOW_FINISHED); } @@ -938,12 +936,10 @@ IncrementalReflow::AddCommand(nsIPresContext *aPresContext, // parent chain until we reach either a `reflow root' or the root // frame in the frame hierarchy. nsAutoVoidArray path; - nsFrameState state; do { path.AppendElement(frame); - frame->GetFrameState(&state); - } while (!(state & NS_FRAME_REFLOW_ROOT) && - (frame->GetParent(&frame), frame != nsnull)); + } while (!(frame->GetStateBits() & NS_FRAME_REFLOW_ROOT) && + (frame = frame->GetParent()) != nsnull); // Pop off the root, add it to the set if it's not there already. PRInt32 lastIndex = path.Count() - 1; @@ -1046,6 +1042,7 @@ public: NS_IMETHOD GetDocument(nsIDocument** aResult); NS_IMETHOD GetPresContext(nsIPresContext** aResult); NS_IMETHOD GetViewManager(nsIViewManager** aResult); + nsIViewManager* GetViewManager() { return mViewManager; } NS_IMETHOD GetStyleSet(nsIStyleSet** aResult); NS_IMETHOD GetActiveAlternateStyleSheet(nsString& aSheetTitle); NS_IMETHOD SelectAlternateStyleSheet(const nsString& aSheetTitle); @@ -2869,14 +2866,11 @@ PresShell::InitialReflow(nscoord aWidth, nscoord aHeight) rootFrame->WillReflow(mPresContext); nsContainerFrame::PositionFrameView(mPresContext, rootFrame); rootFrame->Reflow(mPresContext, desiredSize, reflowState, status); - rootFrame->SizeTo(mPresContext, desiredSize.width, desiredSize.height); + rootFrame->SetSize(nsSize(desiredSize.width, desiredSize.height)); mPresContext->SetVisibleArea(nsRect(0,0,desiredSize.width,desiredSize.height)); - nsIView* view = rootFrame->GetView(mPresContext); - if (view) { - nsContainerFrame::SyncFrameViewAfterReflow(mPresContext, rootFrame, view, - nsnull); - } + nsContainerFrame::SyncFrameViewAfterReflow(mPresContext, rootFrame, rootFrame->GetView(), + nsnull); rootFrame->DidReflow(mPresContext, nsnull, NS_FRAME_REFLOW_FINISHED); #ifdef NS_DEBUG @@ -3014,11 +3008,8 @@ PresShell::ResizeReflow(nscoord aWidth, nscoord aHeight) rootFrame->SizeTo(mPresContext, desiredSize.width, desiredSize.height); mPresContext->SetVisibleArea(nsRect(0,0,desiredSize.width,desiredSize.height)); - nsIView* view = rootFrame->GetView(mPresContext); - if (view) { - nsContainerFrame::SyncFrameViewAfterReflow(mPresContext, rootFrame, view, - nsnull); - } + nsContainerFrame::SyncFrameViewAfterReflow(mPresContext, rootFrame, rootFrame->GetView(), + nsnull); rootFrame->DidReflow(mPresContext, nsnull, NS_FRAME_REFLOW_FINISHED); #ifdef NS_DEBUG if (nsIFrameDebug::GetVerifyTreeEnable()) { @@ -3272,11 +3263,8 @@ NS_IMETHODIMP PresShell::PageMove(PRBool aForward, PRBool aExtend) { nsresult result; - nsCOMPtr viewManager; + nsIViewManager* viewManager = GetViewManager(); nsIScrollableView *scrollableView; - result = GetViewManager(getter_AddRefs(viewManager)); - if (NS_FAILED(result)) - return result; if (!viewManager) return NS_ERROR_UNEXPECTED; result = viewManager->GetRootScrollableView(&scrollableView); @@ -3296,9 +3284,9 @@ PresShell::PageMove(PRBool aForward, PRBool aExtend) NS_IMETHODIMP PresShell::ScrollPage(PRBool aForward) { - nsCOMPtr viewManager; - nsresult result = GetViewManager(getter_AddRefs(viewManager)); - if (NS_SUCCEEDED(result) && viewManager) + nsIViewManager* viewManager = GetViewManager(); + nsresult result = NS_OK; + if (viewManager) { nsIScrollableView *scrollView; result = viewManager->GetRootScrollableView(&scrollView); @@ -3313,9 +3301,9 @@ PresShell::ScrollPage(PRBool aForward) NS_IMETHODIMP PresShell::ScrollLine(PRBool aForward) { - nsCOMPtr viewManager; - nsresult result = GetViewManager(getter_AddRefs(viewManager)); - if (NS_SUCCEEDED(result) && viewManager) + nsIViewManager* viewManager = GetViewManager(); + nsresult result = NS_OK; + if (viewManager) { nsIScrollableView *scrollView; result = viewManager->GetRootScrollableView(&scrollView); @@ -3345,9 +3333,9 @@ PresShell::ScrollLine(PRBool aForward) NS_IMETHODIMP PresShell::ScrollHorizontal(PRBool aLeft) { - nsCOMPtr viewManager; - nsresult result = GetViewManager(getter_AddRefs(viewManager)); - if (NS_SUCCEEDED(result) && viewManager) + nsIViewManager* viewManager = GetViewManager(); + nsresult result = NS_OK; + if (viewManager) { nsIScrollableView *scrollView; result = viewManager->GetRootScrollableView(&scrollView); @@ -3370,9 +3358,9 @@ PresShell::ScrollHorizontal(PRBool aLeft) NS_IMETHODIMP PresShell::CompleteScroll(PRBool aForward) { - nsCOMPtr viewManager; - nsresult result = GetViewManager(getter_AddRefs(viewManager)); - if (NS_SUCCEEDED(result) && viewManager) + nsIViewManager* viewManager = GetViewManager(); + nsresult result = NS_OK; + if (viewManager) { nsIScrollableView *scrollView; result = viewManager->GetRootScrollableView(&scrollView); @@ -3398,9 +3386,7 @@ PresShell::CompleteMove(PRBool aForward, PRBool aExtend) nsIView *scrolledView; result = scrollableView->GetScrolledView(scrolledView); // get a frame - void *clientData; - scrolledView->GetClientData(clientData); - nsIFrame *frame = (nsIFrame *)clientData; + nsIFrame *frame = (nsIFrame*)scrolledView->GetClientData(); if (!frame) return NS_ERROR_FAILURE; //we need to get to the area frame. @@ -3430,9 +3416,7 @@ PresShell::CompleteMove(PRBool aForward, PRBool aExtend) if (aForward) { outsideLimit = 1;//search from end - nsRect rect; - frame->GetRect(rect); - pos.mDesiredX = rect.width * 2;//search way off to right of line + pos.mDesiredX = frame->GetRect().width * 2;//search way off to right of line pos.mDirection = eDirPrevious; //seach backwards from the end } else @@ -3498,24 +3482,19 @@ PresShell::CheckVisibility(nsIDOMNode *node, PRInt16 startOffset, PRInt16 EndOff static void UpdateViewProperties(nsIPresContext* aPresContext, nsIViewManager* aVM, nsIView* aView) { - nsCOMPtr thisVM; - aView->GetViewManager(*getter_AddRefs(thisVM)); + nsIViewManager* thisVM = aView->GetViewManager(); if (thisVM != aVM) { return; } - void* clientData; - aView->GetClientData(clientData); - nsIFrame* frame = NS_STATIC_CAST(nsIFrame*, clientData); + nsIFrame* frame = NS_STATIC_CAST(nsIFrame*, aView->GetClientData()); if (frame) { nsContainerFrame::SyncFrameViewProperties(aPresContext, frame, nsnull, aView); } - nsIView* child; - aView->GetFirstChild(child); - while (child) { + for (nsIView* child = aView->GetFirstChild(); child; + child = child->GetNextSibling()) { UpdateViewProperties(aPresContext, aVM, child); - child->GetNextSibling(child); } } @@ -3561,13 +3540,11 @@ PresShell::StyleChangeReflow() rootFrame->WillReflow(mPresContext); nsContainerFrame::PositionFrameView(mPresContext, rootFrame); rootFrame->Reflow(mPresContext, desiredSize, reflowState, status); - rootFrame->SizeTo(mPresContext, desiredSize.width, desiredSize.height); + rootFrame->SetSize(nsSize(desiredSize.width, desiredSize.height)); mPresContext->SetVisibleArea(nsRect(0,0,desiredSize.width,desiredSize.height)); - nsIView* view = rootFrame->GetView(mPresContext); - if (view) { - nsContainerFrame::SyncFrameViewAfterReflow(mPresContext, rootFrame, view, - nsnull); - } + nsIView* view = rootFrame->GetView(); + nsContainerFrame::SyncFrameViewAfterReflow(mPresContext, rootFrame, view, + nsnull); rootFrame->DidReflow(mPresContext, nsnull, NS_FRAME_REFLOW_FINISHED); #ifdef NS_DEBUG if (nsIFrameDebug::GetVerifyTreeEnable()) { @@ -3958,7 +3935,8 @@ PresShell::ClearFrameRefs(nsIFrame* aFrame) } if (aFrame == mCurrentEventFrame) { - aFrame->GetContent(&mCurrentEventContent); + mCurrentEventContent = aFrame->GetContent(); + NS_IF_ADDREF(mCurrentEventContent); mCurrentEventFrame = nsnull; } @@ -3966,8 +3944,8 @@ PresShell::ClearFrameRefs(nsIFrame* aFrame) if (aFrame == (nsIFrame*)mCurrentEventFrameStack.ElementAt(i)) { //One of our stack frames was deleted. Get its content so that when we //pop it we can still get its new frame from its content - nsIContent *currentEventContent; - aFrame->GetContent(¤tEventContent); + nsIContent *currentEventContent = aFrame->GetContent(); + NS_IF_ADDREF(currentEventContent); mCurrentEventContentStack.ReplaceElementAt((void*)currentEventContent, i); mCurrentEventFrameStack.ReplaceElementAt(nsnull, i); } @@ -3985,16 +3963,13 @@ PresShell::CreateRenderingContext(nsIFrame *aFrame, return NS_ERROR_NULL_POINTER; } - nsPoint pt; nsresult rv; - nsIView *view = aFrame->GetClosestView(mPresContext); + nsIView *view = aFrame->GetClosestView(); nsCOMPtr widget; - if (nsnull != view) { - nsCOMPtr vm; - view->GetViewManager(*getter_AddRefs(vm)); - vm->GetWidgetForView(view, getter_AddRefs(widget)); + if (view) { + view->GetViewManager()->GetWidgetForView(view, getter_AddRefs(widget)); } nsCOMPtr dx; @@ -4255,10 +4230,9 @@ static void ScrollViewToShowRect(nsIScrollableView* aScrollingView, // Determine the visible rect in the scrolling view's coordinate space. // The size of the visible area is the clip view size const nsIView* clipView; - nsRect visibleRect; aScrollingView->GetClipView(&clipView); - clipView->GetBounds(visibleRect); // get width and height + nsRect visibleRect = clipView->GetBounds(); // get width and height aScrollingView->GetScrollPosition(visibleRect.x, visibleRect.y); // The actual scroll offsets @@ -4363,9 +4337,8 @@ PresShell::ScrollFrameIntoView(nsIFrame *aFrame, // is not for the anchor link to scroll back into view. That is what // this check is preventing. // XXX: The dependency on the command dispatcher needs to be fixed. - nsCOMPtr content; - aFrame->GetContent(getter_AddRefs(content)); - if(content) { + nsIContent* content = aFrame->GetContent(); + if (content) { nsCOMPtr document; content->GetDocument(getter_AddRefs(document)); if(document){ @@ -4391,8 +4364,7 @@ PresShell::ScrollFrameIntoView(nsIFrame *aFrame, // Step 2: Walk the views that are parents of the frame and scroll them // appropriately. - nsRect frameBounds; - aFrame->GetRect(frameBounds); + nsRect frameBounds = aFrame->GetRect(); nsPoint offset; nsIView* closestView; aFrame->GetOffsetFromView(mPresContext, offset, &closestView); @@ -4407,7 +4379,7 @@ PresShell::ScrollFrameIntoView(nsIFrame *aFrame, while (frame && (frame->GetFrameType(getter_AddRefs(frameType)), frameType == nsLayoutAtoms::inlineFrame)) { prevFrame = frame; - prevFrame->GetParent(&frame); + frame = prevFrame->GetParent(); } if (frame != aFrame && @@ -4458,17 +4430,14 @@ PresShell::ScrollFrameIntoView(nsIFrame *aFrame, // make sure to get the scrolled view's position after it has been scrolled. nsIScrollableView* scrollingView = nsnull; while (closestView) { - nsIView* parent; - closestView->GetParent(parent); + nsIView* parent = closestView->GetParent(); if (parent) { CallQueryInterface(parent, &scrollingView); if (scrollingView) { ScrollViewToShowRect(scrollingView, frameBounds, aVPercent, aHPercent); } } - nscoord x, y; - closestView->GetPosition(&x, &y); - frameBounds.MoveBy(x, y); + frameBounds += closestView->GetPosition();; closestView = parent; } @@ -4968,8 +4937,7 @@ PresShell::UnsuppressAndInvalidate() nsIFrame* rootFrame; mFrameManager->GetRootFrame(&rootFrame); if (rootFrame) { - nsRect rect; - rootFrame->GetRect(rect); + nsRect rect = rootFrame->GetRect(); if (!rect.IsEmpty()) { ((nsFrame*)rootFrame)->Invalidate(mPresContext, rect, PR_FALSE); } @@ -5226,9 +5194,8 @@ PresShell::IsSafeToFlush(PRBool& aIsSafeToFlush) aIsSafeToFlush = PR_FALSE; } else { // Not safe if we are painting - nsCOMPtr viewManager; - nsresult rv = GetViewManager(getter_AddRefs(viewManager)); - if (NS_SUCCEEDED(rv) && (nsnull != viewManager)) { + nsIViewManager* viewManager = GetViewManager(); + if (viewManager) { PRBool isPainting = PR_FALSE; viewManager->IsPainting(isPainting); if (isPainting) { @@ -5468,8 +5435,7 @@ BuildFramechangeList(nsIFrame *aFrame, void *aClosure) // Ok, get our binding information. if (!aFrame->GetStyleDisplay()->mBinding.IsEmpty()) { // We had a binding. - nsCOMPtr content; - aFrame->GetContent(getter_AddRefs(content)); + nsIContent* content = aFrame->GetContent(); nsCOMPtr doc; content->GetDocument(getter_AddRefs(doc)); if (doc) { @@ -5528,9 +5494,7 @@ WalkFramesThroughPlaceholders(nsIPresContext *aPresContext, nsIFrame *aFrame, nsIFrame *child = nsnull; aFrame->FirstChild(aPresContext, childList, &child); while (child) { - nsFrameState state; - child->GetFrameState(&state); - if (!(state & NS_FRAME_OUT_OF_FLOW)) { + if (!(child->GetStateBits() & NS_FRAME_OUT_OF_FLOW)) { // only do frames that are in flow nsCOMPtr frameType; child->GetFrameType(getter_AddRefs(frameType)); @@ -5545,7 +5509,7 @@ WalkFramesThroughPlaceholders(nsIPresContext *aPresContext, nsIFrame *aFrame, else WalkFramesThroughPlaceholders(aPresContext, child, aFunc, aClosure); } - child->GetNextSibling(&child); + child = child->GetNextSibling(); } aFrame->GetAdditionalChildListName(listIndex++, getter_AddRefs(childList)); @@ -5803,10 +5767,9 @@ static PRBool ComputeClipRect(nsIFrame* aFrame, nsRect& aResult) { // element: border, padding, and content areas, and even scrollbars if // there are any. if (display->IsAbsolutelyPositioned() && (display->mClipFlags & NS_STYLE_CLIP_RECT)) { - nsSize size; + nsSize size = aFrame->GetSize(); // Start with the 'auto' values and then factor in user specified values - aFrame->GetSize(size); nsRect clipRect(0, 0, size.width, size.height); if (display->mClipFlags & NS_STYLE_CLIP_RECT) { @@ -5869,7 +5832,6 @@ PresShell::Paint(nsIView *aView, nsIRenderingContext& aRenderingContext, const nsRect& aDirtyRect) { - void* clientData; nsIFrame* frame; nsresult rv = NS_OK; @@ -5880,8 +5842,7 @@ PresShell::Paint(nsIView *aView, NS_ASSERTION(!(nsnull == aView), "null view"); - aView->GetClientData(clientData); - frame = (nsIFrame *)clientData; + frame = NS_STATIC_CAST(nsIFrame*, aView->GetClientData()); if (nsnull != frame) { @@ -5907,8 +5868,7 @@ PresShell::Paint(nsIView *aView, #ifdef NS_DEBUG // Draw a border around the frame if (nsIFrameDebug::GetShowFrameBorders()) { - nsRect r; - frame->GetRect(r); + nsRect r = frame->GetRect(); aRenderingContext.SetColor(NS_RGB(0,0,255)); aRenderingContext.DrawRect(0, 0, r.width, r.height); } @@ -6100,8 +6060,8 @@ PresShell::HandleEvent(nsIView *aView, // Check for a system color change up front, since the frame type is // irrelevant if ((aEvent->message == NS_SYSCOLORCHANGED) && mPresContext) { - nsCOMPtr vm; - if ((NS_SUCCEEDED(GetViewManager(getter_AddRefs(vm)))) && vm) { + nsIViewManager* vm = GetViewManager(); + if (vm) { // Only dispatch system color change when the message originates from // from the root views widget. This is necessary to prevent us from // dispatching the SysColorChanged notification for each child window @@ -6117,9 +6077,7 @@ PresShell::HandleEvent(nsIView *aView, return NS_OK; } - void* clientData; - aView->GetClientData(clientData); - nsIFrame* frame = (nsIFrame *)clientData; + nsIFrame* frame = NS_STATIC_CAST(nsIFrame*, aView->GetClientData()); nsresult rv = NS_OK; @@ -6195,8 +6153,7 @@ PresShell::HandleEvent(nsIView *aView, // GetFrameForPoint() work. The assumption here is that frame->GetView() // will return aView, and frame's parent view is aView's parent. - nsPoint eventPoint; - frame->GetOrigin(eventPoint); + nsPoint eventPoint = frame->GetPosition(); eventPoint += aEvent->point; nsPoint originOffset; @@ -6281,8 +6238,8 @@ PresShell::HandleEvent(nsIView *aView, nsIView *oldView = mCurrentTargetView; nsPoint offset(0,0); nsRect oldTargetRect(mCurrentTargetRect); - mCurrentEventFrame->GetRect(mCurrentTargetRect); - mCurrentTargetView = mCurrentEventFrame->GetView(mPresContext); + mCurrentTargetRect = mCurrentEventFrame->GetRect(); + mCurrentTargetView = mCurrentEventFrame->GetView(); if (!mCurrentTargetView ) { mCurrentEventFrame->GetOffsetFromView(mPresContext, offset, &mCurrentTargetView); @@ -6294,8 +6251,8 @@ PresShell::HandleEvent(nsIView *aView, if ((mCurrentTargetRect != oldTargetRect) || (mCurrentTargetView != oldView)) { - nsCOMPtr vm; - if ((NS_SUCCEEDED(GetViewManager(getter_AddRefs(vm)))) && vm) { + nsIViewManager* vm = GetViewManager(); + if (vm) { vm->UpdateView(mCurrentTargetView,mCurrentTargetRect,0); if (oldView) vm->UpdateView(oldView,oldTargetRect,0); @@ -6481,10 +6438,9 @@ struct ReflowEvent : public PLEvent { ps->ClearReflowEventStatus(); ps->GetReflowBatchingStatus(&isBatching); if (!isBatching) { - nsCOMPtr viewManager; // Set a kung fu death grip on the view manager associated with the pres shell // before processing that pres shell's reflow commands. Fixes bug 54868. - presShell->GetViewManager(getter_AddRefs(viewManager)); + nsCOMPtr viewManager = presShell->GetViewManager(); ps->ProcessReflowCommands(PR_TRUE); // Now, explicitly release the pres shell before the view manager @@ -6580,8 +6536,7 @@ PresShell::ProcessReflowCommands(PRBool aInterruptible) nsIRenderingContext* rcx; nsIFrame* rootFrame; mFrameManager->GetRootFrame(&rootFrame); - nsSize maxSize; - rootFrame->GetSize(maxSize); + nsSize maxSize = rootFrame->GetSize(); nsresult rv=CreateRenderingContext(rootFrame, &rcx); if (NS_FAILED(rv)) return rv; @@ -7006,8 +6961,6 @@ CompareTrees(nsIPresContext* aFirstPresContext, nsIFrame* aFirstFrame, nsRect r1, r2; nsIView* v1, *v2; - nsCOMPtr w1; - nsCOMPtr w2; for (;;) { if (((nsnull == k1) && (nsnull != k2)) || ((nsnull != k1) && (nsnull == k2))) { @@ -7017,33 +6970,29 @@ CompareTrees(nsIPresContext* aFirstPresContext, nsIFrame* aFirstFrame, } else if (nsnull != k1) { // Verify that the frames are the same size - k1->GetRect(r1); - k2->GetRect(r2); - if (r1 != r2) { + if (k1->GetRect() != k2->GetRect()) { ok = PR_FALSE; - LogVerifyMessage(k1, k2, "(frame rects)", r1, r2); + LogVerifyMessage(k1, k2, "(frame rects)", k1->GetRect(), k2->GetRect()); } // Make sure either both have views or neither have views; if they // do have views, make sure the views are the same size. If the // views have widgets, make sure they both do or neither does. If // they do, make sure the widgets are the same size. - v1 = k1->GetView(aFirstPresContext); - v2 = k2->GetView(aSecondPresContext); + v1 = k1->GetView(); + v2 = k2->GetView(); if (((nsnull == v1) && (nsnull != v2)) || ((nsnull != v1) && (nsnull == v2))) { ok = PR_FALSE; LogVerifyMessage(k1, k2, "child views are not matched\n"); } else if (nsnull != v1) { - v1->GetBounds(r1); - v2->GetBounds(r2); - if (r1 != r2) { - LogVerifyMessage(k1, k2, "(view rects)", r1, r2); + if (v1->GetBounds() != v2->GetBounds()) { + LogVerifyMessage(k1, k2, "(view rects)", v1->GetBounds(), v2->GetBounds()); } - v1->GetWidget(*getter_AddRefs(w1)); - v2->GetWidget(*getter_AddRefs(w2)); + nsIWidget* w1 = v1->GetWidget(); + nsIWidget* w2 = v2->GetWidget(); if (((nsnull == w1) && (nsnull != w2)) || ((nsnull != w1) && (nsnull == w2))) { ok = PR_FALSE; @@ -7179,8 +7128,8 @@ CompareTrees(nsIPresContext* aFirstPresContext, nsIFrame* aFirstFrame, } // Advance to next sibling - k1->GetNextSibling(&k1); - k2->GetNextSibling(&k2); + k1 = k1->GetNextSibling(); + k2 = k2->GetNextSibling(); } else { break; @@ -7232,18 +7181,15 @@ CompareTrees(nsIPresContext* aFirstPresContext, nsIFrame* aFirstFrame, static nsIFrame* FindTopFrame(nsIFrame* aRoot) { - if (nsnull != aRoot) { - nsIContent* content; - aRoot->GetContent(&content); - if (nsnull != content) { + if (aRoot) { + nsIContent* content = aRoot->GetContent(); + if (content) { nsIAtom* tag; content->GetTag(tag); if (nsnull != tag) { NS_RELEASE(tag); - NS_RELEASE(content); return aRoot; } - NS_RELEASE(content); } // Try one of the children @@ -7254,7 +7200,7 @@ FindTopFrame(nsIFrame* aRoot) if (nsnull != result) { return result; } - kid->GetNextSibling(&kid); + kid = kid->GetNextSibling(); } } return nsnull; @@ -7318,9 +7264,7 @@ PresShell::VerifyIncrementalReflow() if (NS_SUCCEEDED (rv)) { scrollView->GetScrollPreference(scrolling); } - nsCOMPtr rootWidget; - rootView->GetWidget(*getter_AddRefs(rootWidget)); - void* nativeParentWidget = rootWidget->GetNativeData(NS_NATIVE_WIDGET); + void* nativeParentWidget = rootView->GetWidget()->GetNativeData(NS_NATIVE_WIDGET); // Create a new view manager. rv = nsComponentManager::CreateInstance(kViewManagerCID, nsnull, @@ -7836,9 +7780,6 @@ void ReflowCountMgr::PaintCount(const char * aName, fm->GetHeight(height); fm->GetMaxAscent(y); - nsRect r; - aFrame->GetRect(r); - PRUint32 color; PRUint32 color2; if (aColor != 0) { @@ -7977,7 +7918,7 @@ static void RecurseIndiTotals(nsIPresContext* aPresContext, aParentFrame->FirstChild(aPresContext, nsnull, &child); while (child) { RecurseIndiTotals(aPresContext, aHT, child, aLevel+1); - child->GetNextSibling(&child); + child = child->GetNextSibling(); } } diff --git a/layout/forms/nsSelectsAreaFrame.cpp b/layout/forms/nsSelectsAreaFrame.cpp index 23d9479644d..08493bed16d 100644 --- a/layout/forms/nsSelectsAreaFrame.cpp +++ b/layout/forms/nsSelectsAreaFrame.cpp @@ -94,14 +94,11 @@ nsSelectsAreaFrame::IsOptionElement(nsIContent* aContent) PRBool nsSelectsAreaFrame::IsOptionElementFrame(nsIFrame *aFrame) { - nsIContent *content = nsnull; - aFrame->GetContent(&content); - PRBool result = PR_FALSE; - if (nsnull != content) { - result = IsOptionElement(content); - NS_RELEASE(content); + nsIContent *content = aFrame->GetContent(); + if (content) { + return IsOptionElement(content); } - return(result); + return PR_FALSE; } //--------------------------------------------------------- @@ -122,10 +119,10 @@ nsSelectsAreaFrame::GetFrameForPoint(nsIPresContext* aPresContext, if (result == NS_OK) { nsIFrame* selectedFrame = *aFrame; - while ((nsnull != selectedFrame) && (PR_FALSE == IsOptionElementFrame(selectedFrame))) { - selectedFrame->GetParent(&selectedFrame); + while (selectedFrame && !IsOptionElementFrame(selectedFrame)) { + selectedFrame = selectedFrame->GetParent(); } - if (nsnull != selectedFrame) { + if (selectedFrame) { *aFrame = selectedFrame; } // else, keep the original result as *aFrame, which could be this frame @@ -141,11 +138,11 @@ nsSelectsAreaFrame::Paint(nsIPresContext* aPresContext, nsFramePaintLayer aWhichLayer, PRUint32 aFlags) { - nsresult rv = nsAreaFrame::Paint(aPresContext, aRenderingContext, aDirtyRect, aWhichLayer, aFlags); + nsAreaFrame::Paint(aPresContext, aRenderingContext, aDirtyRect, aWhichLayer, aFlags); nsIFrame* frame = this; while (frame) { - frame->GetParent(&frame); + frame = frame->GetParent(); nsCOMPtr type; frame->GetFrameType(getter_AddRefs(type)); if (type == nsLayoutAtoms::listControlFrame) { diff --git a/layout/generic/nsInlineFrame.cpp b/layout/generic/nsInlineFrame.cpp index 94d0e194531..99b267ed55f 100644 --- a/layout/generic/nsInlineFrame.cpp +++ b/layout/generic/nsInlineFrame.cpp @@ -177,7 +177,7 @@ nsInlineFrame::IsEmpty(nsCompatibility aCompatMode, PRBool aIsPre, } *aResult = PR_TRUE; - for (nsIFrame *kid = mFrames.FirstChild(); kid; kid->GetNextSibling(&kid)) { + for (nsIFrame *kid = mFrames.FirstChild(); kid; kid = kid->GetNextSibling()) { kid->IsEmpty(aCompatMode, aIsPre, aResult); if (! *aResult) break; @@ -254,17 +254,14 @@ nsInlineFrame::RemoveFrame(nsIPresContext* aPresContext, if (frameType == nsLayoutAtoms::brFrame) generateReflowCommand = PR_TRUE; - nsIFrame* oldFrameParent; - aOldFrame->GetParent(&oldFrameParent); - nsInlineFrame* parent = (nsInlineFrame*) oldFrameParent; - while (nsnull != aOldFrame) { + nsInlineFrame* parent = NS_STATIC_CAST(nsInlineFrame*, aOldFrame->GetParent()); + while (aOldFrame) { #ifdef IBMBIDI if (nsLayoutAtoms::nextBidi != aListName) { #endif // If the frame being removed has zero size then don't bother // generating a reflow command, otherwise make sure we do. - nsRect bbox; - aOldFrame->GetRect(bbox); + nsRect bbox = aOldFrame->GetRect(); if (bbox.width || bbox.height) { generateReflowCommand = PR_TRUE; } @@ -279,8 +276,8 @@ nsInlineFrame::RemoveFrame(nsIPresContext* aPresContext, aOldFrame->GetNextInFlow(&oldFrameNextInFlow); parent->mFrames.DestroyFrame(aPresContext, aOldFrame); aOldFrame = oldFrameNextInFlow; - if (nsnull != aOldFrame) { - aOldFrame->GetParent((nsIFrame**) &parent); + if (aOldFrame) { + parent = NS_STATIC_CAST(nsInlineFrame*, aOldFrame->GetParent()); } } @@ -416,9 +413,7 @@ nsInlineFrame::Reflow(nsIPresContext* aPresContext, // our prev-in-flow's overflow list, it's possible that we have not set // the parent pointer for these frames. Check the first frame to see, and // if we haven't set the parent pointer then set it now - nsIFrame* parent; - overflowFrames->GetParent(&parent); - mFrames.AppendFrames(parent == this ? nsnull : this, overflowFrames); + mFrames.AppendFrames(overflowFrames->GetParent() == this ? nsnull : this, overflowFrames); } } @@ -553,7 +548,7 @@ nsInlineFrame::ReflowFrames(nsIPresContext* aPresContext, break; } irs.mPrevFrame = frame; - frame->GetNextSibling(&frame); + frame = frame->GetNextSibling(); } // Attempt to pull frames from our next-in-flow until we can't @@ -686,9 +681,7 @@ nsInlineFrame::ReflowFrames(nsIPresContext* aPresContext, static void SetContainsPercentAwareChild(nsIFrame *aFrame) { - nsFrameState myFrameState; - aFrame->GetFrameState(&myFrameState); - aFrame->SetFrameState(myFrameState | NS_INLINE_FRAME_CONTAINS_PERCENT_AWARE_CHILD); + aFrame->AddStateBits(NS_INLINE_FRAME_CONTAINS_PERCENT_AWARE_CHILD); } static @@ -696,9 +689,7 @@ void MarkPercentAwareFrame(nsIPresContext *aPresContext, nsInlineFrame *aInline, nsIFrame *aFrame) { - nsFrameState childFrameState; - aFrame->GetFrameState(&childFrameState); - if (childFrameState & NS_FRAME_REPLACED_ELEMENT) + if (aFrame->GetStateBits() & NS_FRAME_REPLACED_ELEMENT) { // aFrame is a replaced element, check it's style if (nsLineLayout::IsPercentageAwareReplacedElement(aPresContext, aFrame)) { SetContainsPercentAwareChild(aInline); @@ -710,7 +701,7 @@ void MarkPercentAwareFrame(nsIPresContext *aPresContext, aFrame->FirstChild(aPresContext, nsnull, &child); if (child) { // aFrame is an inline container frame, check my frame state - if (childFrameState & NS_INLINE_FRAME_CONTAINS_PERCENT_AWARE_CHILD) { + if (child->GetStateBits() & NS_INLINE_FRAME_CONTAINS_PERCENT_AWARE_CHILD) { SetContainsPercentAwareChild(aInline); // if a child container is effected, so am I } } @@ -760,11 +751,8 @@ nsInlineFrame::ReflowInlineFrame(nsIPresContext* aPresContext, // remaining child frames in our child list with the wrong parent // frame pointer... if (irs.mSetParentPointer) { - nsIFrame* f; - aFrame->GetNextSibling(&f); - while (f) { + for (nsIFrame* f = aFrame->GetNextSibling(); f; f = f->GetNextSibling()) { f->SetParent(this); - f->GetNextSibling(&f); } } } @@ -778,9 +766,8 @@ nsInlineFrame::ReflowInlineFrame(nsIPresContext* aPresContext, return rv; } } - nsIFrame* nextFrame; - aFrame->GetNextSibling(&nextFrame); - if (nsnull != nextFrame) { + nsIFrame* nextFrame = aFrame->GetNextSibling(); + if (nextFrame) { aStatus |= NS_FRAME_NOT_COMPLETE; PushFrames(aPresContext, nextFrame, aFrame); } @@ -812,9 +799,8 @@ nsInlineFrame::ReflowInlineFrame(nsIPresContext* aPresContext, return rv; } if (!reflowingFirstLetter) { - nsIFrame* nextFrame; - aFrame->GetNextSibling(&nextFrame); - if (nsnull != nextFrame) { + nsIFrame* nextFrame = aFrame->GetNextSibling(); + if (nextFrame) { PushFrames(aPresContext, nextFrame, aFrame); } } @@ -854,11 +840,7 @@ nsInlineFrame::PushFrames(nsIPresContext* aPresContext, { NS_PRECONDITION(nsnull != aFromChild, "null pointer"); NS_PRECONDITION(nsnull != aPrevSibling, "pushing first child"); -#ifdef DEBUG - nsIFrame* prevNextSibling; - aPrevSibling->GetNextSibling(&prevNextSibling); - NS_PRECONDITION(prevNextSibling == aFromChild, "bad prev sibling"); -#endif + NS_PRECONDITION(aPrevSibling->GetNextSibling() == aFromChild, "bad prev sibling"); #ifdef NOISY_PUSHING printf("%p pushing aFromChild %p, disconnecting from prev sib %p\n", @@ -943,10 +925,9 @@ ReParentChildListStyle(nsIPresContext* aPresContext, nsStyleContext* aParentStyleContext, nsFrameList& aFrameList) { - nsIFrame* kid = aFrameList.FirstChild(); - while (nsnull != kid) { + for (nsIFrame* kid = aFrameList.FirstChild(); kid; + kid = kid->GetNextSibling()) { aPresContext->ReParentStyleContext(kid, aParentStyleContext); - kid->GetNextSibling(&kid); } } @@ -1085,9 +1066,7 @@ nsFirstLineFrame::Reflow(nsIPresContext* aPresContext, if (mStyleContext == first->mStyleContext) { // Fixup our style context and our children. First get the // proper parent context. - nsIFrame* parentFrame; - first->GetParent(&parentFrame); - nsStyleContext* parentContext = parentFrame->GetStyleContext(); + nsStyleContext* parentContext = first->GetParent()->GetStyleContext(); if (parentContext) { // Create a new style context that is a child of the parent // style context thus removing the :first-line style. This way diff --git a/layout/generic/nsLineBox.cpp b/layout/generic/nsLineBox.cpp index b891e8f7c3f..2e5f4f08b92 100644 --- a/layout/generic/nsLineBox.cpp +++ b/layout/generic/nsLineBox.cpp @@ -227,7 +227,7 @@ nsLineBox::List(nsIPresContext* aPresContext, FILE* out, PRInt32 aIndent) const if (NS_SUCCEEDED(frame->QueryInterface(NS_GET_IID(nsIFrameDebug), (void**)&frameDebug))) { frameDebug->List(aPresContext, out, aIndent + 1); } - frame->GetNextSibling(&frame); + frame = frame->GetNextSibling(); } for (i = aIndent; --i >= 0; ) fputs(" ", out); @@ -246,7 +246,7 @@ nsLineBox::LastChild() const nsIFrame* frame = mFirstChild; PRInt32 n = GetChildCount() - 1; while (--n >= 0) { - frame->GetNextSibling(&frame); + frame = frame->GetNextSibling(); } return frame; } @@ -267,7 +267,7 @@ nsLineBox::IndexOf(nsIFrame* aFrame) const if (frame == aFrame) { return i; } - frame->GetNextSibling(&frame); + frame = frame->GetNextSibling(); } return -1; } @@ -284,7 +284,7 @@ nsLineBox::IsEmpty(nsCompatibility aCompatMode, PRBool aParentIsPre, nsIFrame *kid; for (n = GetChildCount(), kid = mFirstChild; n > 0; - --n, kid->GetNextSibling(&kid)) + --n, kid = kid->GetNextSibling()) { kid->IsEmpty(aCompatMode, aParentIsPre, aResult); if (! *aResult) @@ -301,8 +301,7 @@ nsLineBox::DeleteLineList(nsIPresContext* aPresContext, nsLineList& aLines) // we do all of this before our base class releases it's hold on the // view. for (nsIFrame* child = aLines.front()->mFirstChild; child; ) { - nsIFrame* nextChild; - child->GetNextSibling(&nextChild); + nsIFrame* nextChild = child->GetNextSibling(); child->Destroy(aPresContext); child = nextChild; } @@ -660,7 +659,6 @@ nsLineIterator::CheckLineOrder(PRInt32 aLine, nsIFrame **aFirstVisual, nsIFrame **aLastVisual) { - nsRect checkRect; PRInt32 currentLine, saveLine, testLine; nscoord saveX; nsIFrame *checkFrame; @@ -689,16 +687,13 @@ nsLineIterator::CheckLineOrder(PRInt32 aLine, checkFrame = line->mFirstChild; - checkFrame->GetRect(checkRect); result = FindLineContaining(checkFrame, &saveLine); if (NS_FAILED(result)) return result; - saveX = checkRect.x; + saveX = checkFrame->GetRect().x; lineFrameCount = line->GetChildCount(); - for (; checkFrame; result = checkFrame->GetNextSibling(&checkFrame)) { - if (NS_FAILED(result)) - break; + for (; checkFrame; checkFrame = checkFrame->GetNextSibling()) { result = FindLineContaining(checkFrame, &testLine); if (NS_FAILED(result)) return result; @@ -707,7 +702,7 @@ nsLineIterator::CheckLineOrder(PRInt32 aLine, break; } - checkFrame->GetRect(checkRect); + nsRect checkRect = checkFrame->GetRect(); // If the origin of any frame is less than the previous frame, the line is reordered if (checkRect.x < saveX) { *aIsReordered = PR_TRUE; @@ -731,19 +726,12 @@ nsLineIterator::CheckLineOrder(PRInt32 aLine, return result; leftmostFrame = rightmostFrame = firstFrame; - firstFrame->GetRect(checkRect); - maxX = checkRect.x; - minX = checkRect.x; + maxX = minX = firstFrame->GetRect().x; for (;lineFrameCount > 1;lineFrameCount--) { - result = firstFrame->GetNextSibling(&firstFrame); + firstFrame = firstFrame->GetNextSibling(); - if (NS_FAILED(result)){ - NS_ASSERTION(0,"should not be reached nsLineBox\n"); - return NS_ERROR_FAILURE; - } - - firstFrame->GetRect(checkRect); + nsRect checkRect = firstFrame->GetRect(); if (checkRect.x > maxX) { maxX = checkRect.x; rightmostFrame = firstFrame; @@ -796,7 +784,6 @@ nsLineIterator::FindFrameAt(PRInt32 aLineNumber, if (line->mBounds.width == 0) return NS_ERROR_FAILURE; - nsRect r1, r2; nsIFrame *stoppingFrame = nsnull; if (aX < line->mBounds.x) { @@ -807,8 +794,7 @@ nsLineIterator::FindFrameAt(PRInt32 aLineNumber, else { frame = line->mFirstChild; } - frame->GetRect(r1); - if (r1.width > 0) + if (frame->GetRect().width > 0) { *aFrameFound = frame; *aXIsBeforeFirstFrame = PR_TRUE; @@ -828,8 +814,7 @@ nsLineIterator::FindFrameAt(PRInt32 aLineNumber, else { frame = line->LastChild(); } - frame->GetRect(r1); - if (r1.width > 0) + if (frame->GetRect().width > 0) { *aFrameFound = frame; *aXIsBeforeFirstFrame = PR_FALSE; @@ -868,37 +853,36 @@ nsLineIterator::FindFrameAt(PRInt32 aLineNumber, if (isReordered) { nscoord maxX, limX; PRInt32 testLine; - nsRect tempRect; nsIFrame* tempFrame; maxX = -0x7fffffff; - frame->GetRect(tempRect); - limX = tempRect.x; + limX = frame->GetRect().x; tempFrame = line->mFirstChild; nextFrame = nsnull; while (tempFrame) { if (NS_SUCCEEDED(FindLineContaining(tempFrame, &testLine)) && testLine == aLineNumber) { - tempFrame->GetRect(tempRect); + nsRect tempRect = tempFrame->GetRect(); if (tempRect.x > maxX && tempRect.x < limX) { // we are looking for the highest value less than the current one maxX = tempRect.x; nextFrame = tempFrame; } } - tempFrame->GetNextSibling(&tempFrame); + tempFrame = tempFrame->GetNextSibling(); } } else #endif // IBMBIDI - frame->GetNextSibling(&nextFrame); - frame->GetRect(r1); + nextFrame = frame->GetNextSibling(); + + nsRect r1 = frame->GetRect(); if (r1.width && aX > r1.x) { break; } if (nextFrame) { - nextFrame->GetRect(r2); + nsRect r2 = nextFrame->GetRect(); if (r2.width && aX > r2.XMost()) { nscoord rightEdge = r2.XMost(); nscoord delta = r1.x - rightEdge; @@ -923,39 +907,38 @@ nsLineIterator::FindFrameAt(PRInt32 aLineNumber, if (!frame) break; if (isReordered) { - nsRect tempRect; nsIFrame* tempFrame; nscoord minX, limX; PRInt32 testLine; minX = 0x7fffffff; - frame->GetRect(tempRect); - limX = tempRect.x; + limX = frame->GetRect().x; tempFrame = line->mFirstChild; nextFrame = nsnull; while (tempFrame) { if (NS_SUCCEEDED(FindLineContaining(tempFrame, &testLine)) && testLine == aLineNumber) { - tempFrame->GetRect(tempRect); + nsRect tempRect = tempFrame->GetRect(); if (tempRect.width && tempRect.x < minX && tempRect.x > limX) { // we are looking for the lowest value greater than the current one minX = tempRect.x; nextFrame = tempFrame; } } - tempFrame->GetNextSibling(&tempFrame); + tempFrame = tempFrame->GetNextSibling(); } } else #endif // IBMBIDI - frame->GetNextSibling(&nextFrame); - frame->GetRect(r1); + nextFrame = frame->GetNextSibling(); + + nsRect r1 = frame->GetRect(); if (r1.width && aX < r1.XMost()) { break; } if (nextFrame) { - nextFrame->GetRect(r2); + nsRect r2 = nextFrame->GetRect(); if (r2.width && aX < r2.x) { nscoord rightEdge = r1.XMost(); nscoord delta = r2.x - rightEdge; @@ -981,7 +964,8 @@ nsLineIterator::FindFrameAt(PRInt32 aLineNumber, NS_IMETHODIMP nsLineIterator::GetNextSiblingOnLine(nsIFrame*& aFrame, PRInt32 aLineNumber) { - return aFrame->GetNextSibling(&aFrame); + aFrame = aFrame->GetNextSibling(); + return NS_OK; } //---------------------------------------------------------------------- diff --git a/layout/generic/nsLineLayout.cpp b/layout/generic/nsLineLayout.cpp index 666a0e284a6..356e9811f24 100644 --- a/layout/generic/nsLineLayout.cpp +++ b/layout/generic/nsLineLayout.cpp @@ -97,19 +97,17 @@ static nscoord AccumulateImageSizes(nsIPresContext& aPresContext, nsIFrame& aFra nsCOMPtr type; aFrame.GetFrameType(getter_AddRefs(type)); if(type.get() == nsLayoutAtoms::imageFrame) { - nsSize size; - aFrame.GetSize(size); - sizes += NS_STATIC_CAST(nscoord,size.width); + sizes += NS_STATIC_CAST(nscoord, aFrame.GetSize().width); } else { // see if there are children to process nsIFrame* child = nsnull; // XXX: process alternate child lists? aFrame.FirstChild(&aPresContext,nsnull,&child); - while(child) { + while (child) { // recurse: note that we already know we are in a child frame, so no need to track further sizes += AccumulateImageSizes(aPresContext, *child); // now next sibling - child->GetNextSibling(&child); + child = child->GetNextSibling(); } } @@ -879,9 +877,7 @@ nsLineLayout::ReflowFrame(nsIFrame* aFrame, // the frame state. const nsHTMLReflowState* rs = psd->mReflowState; nsReflowReason reason = eReflowReason_Resize; - nsFrameState state; - aFrame->GetFrameState(&state); - if (NS_FRAME_FIRST_REFLOW & state) { + if (NS_FRAME_FIRST_REFLOW & aFrame->GetStateBits()) { reason = eReflowReason_Initial; } else if (rs->reason == eReflowReason_Incremental) { // XXX @@ -914,7 +910,7 @@ nsLineLayout::ReflowFrame(nsIFrame* aFrame, } } else if (type == eReflowType_ReflowDirty && - (state & NS_FRAME_IS_DIRTY) && + (aFrame->GetStateBits() & NS_FRAME_IS_DIRTY) && !frameIsOnReflowPath) { reason = eReflowReason_Dirty; } @@ -924,7 +920,7 @@ nsLineLayout::ReflowFrame(nsIFrame* aFrame, reason = eReflowReason_StyleChange; } else if (rs->reason == eReflowReason_Dirty) { - if (state & NS_FRAME_IS_DIRTY) + if (aFrame->GetStateBits() & NS_FRAME_IS_DIRTY) reason = eReflowReason_Dirty; } @@ -1019,7 +1015,7 @@ nsLineLayout::ReflowFrame(nsIFrame* aFrame, PRInt32 start, end; if (bidiEnabled) { - if (state & NS_FRAME_IS_BIDI) { + if (aFrame->GetStateBits() & NS_FRAME_IS_BIDI) { aFrame->GetOffsets(start, end); } } @@ -1045,10 +1041,9 @@ nsLineLayout::ReflowFrame(nsIFrame* aFrame, // for the text frame's initial reflow (once in the text frame's lifetime) // and we don't make any expensive calls. // Doing it this way shields us from knowing anything about the frame structure inside a text control. - nsIFrame *parentFrame; - aFrame->GetParent(&parentFrame); PRBool inTextControl = PR_FALSE; - while (parentFrame) + for (nsIFrame *parentFrame = aFrame->GetParent(); parentFrame; + parentFrame = parentFrame->GetParent()) { nsCOMPtr parentFrameType; parentFrame->GetFrameType(getter_AddRefs(parentFrameType)); @@ -1060,7 +1055,6 @@ nsLineLayout::ReflowFrame(nsIFrame* aFrame, break; } } - parentFrame->GetParent(&parentFrame); // advance the loop up the frame tree } if (inTextControl) { @@ -1115,9 +1109,9 @@ nsLineLayout::ReflowFrame(nsIFrame* aFrame, // to have zero width. if (metrics.width) { pfd->SetFlag(PFD_ISNONEMPTYTEXTFRAME, PR_TRUE); - nsCOMPtr content; - nsresult result = pfd->mFrame->GetContent(getter_AddRefs(content)); - if ((NS_SUCCEEDED(result)) && content) { + nsIContent* content = pfd->mFrame->GetContent(); + if (content) { + nsresult result; nsCOMPtr textContent = do_QueryInterface(content, &result); if ((NS_SUCCEEDED(result)) && textContent) { @@ -1210,8 +1204,7 @@ nsLineLayout::ReflowFrame(nsIFrame* aFrame, } #endif - aFrame->GetFrameState(&state); - if (NS_FRAME_OUTSIDE_CHILDREN & state) { + if (NS_FRAME_OUTSIDE_CHILDREN & aFrame->GetStateBits()) { pfd->mCombinedArea = metrics.mOverflowArea; } else { @@ -1227,11 +1220,10 @@ nsLineLayout::ReflowFrame(nsIFrame* aFrame, } // Size the frame and size its view (if it has one) - aFrame->SizeTo(mPresContext, metrics.width, metrics.height); + aFrame->SetSize(nsSize(metrics.width, metrics.height)); if (aFrame->HasView()) { - nsIView* view = aFrame->GetView(mPresContext); - nsIViewManager *vm; - view->GetViewManager(vm); + nsIView* view = aFrame->GetView(); + nsIViewManager *vm = view->GetViewManager(); #if 0 // XXX This is the correct code. We'll turn it on later to mitigate risk. vm->ResizeView(view, pfd->mCombinedArea); @@ -1239,7 +1231,6 @@ nsLineLayout::ReflowFrame(nsIFrame* aFrame, nsRect r(0, 0, metrics.width, metrics.height); vm->ResizeView(view, r); #endif - NS_RELEASE(vm); } // Tell the frame that we're done reflowing it @@ -1261,8 +1252,8 @@ nsLineLayout::ReflowFrame(nsIFrame* aFrame, // Remove all of the childs next-in-flows. Make sure that we ask // the right parent to do the removal (it's possible that the // parent is not this because we are executing pullup code) - nsHTMLContainerFrame* parent; - kidNextInFlow->GetParent((nsIFrame**) &parent); + nsHTMLContainerFrame* parent = NS_STATIC_CAST(nsHTMLContainerFrame*, + kidNextInFlow->GetParent()); parent->DeleteNextInFlowChild(mPresContext, kidNextInFlow); } } @@ -1299,7 +1290,7 @@ nsLineLayout::ReflowFrame(nsIFrame* aFrame, printf(" status=%x\n", aReflowStatus); #endif - if (state & NS_FRAME_IS_BIDI) { + if (aFrame->GetStateBits() & NS_FRAME_IS_BIDI) { // Since aReflowStatus may change, check it at the end if (NS_INLINE_IS_BREAK_BEFORE(aReflowStatus) ) { aFrame->AdjustOffsetsForBidi(start, end); @@ -1643,7 +1634,7 @@ nsLineLayout::AddBulletFrame(nsIFrame* aFrame, pfd->mDescent = aMetrics.descent; // Note: y value will be updated during vertical alignment - aFrame->GetRect(pfd->mBounds); + pfd->mBounds = aFrame->GetRect(); pfd->mCombinedArea = aMetrics.mOverflowArea; if (mComputeMaxElementWidth) { pfd->mMaxElementWidth = aMetrics.width; @@ -1690,9 +1681,7 @@ PRBool nsLineLayout::IsPercentageAwareReplacedElement(nsIPresContext *aPresContext, nsIFrame* aFrame) { - nsFrameState frameState; - aFrame->GetFrameState(&frameState); - if (frameState & NS_FRAME_REPLACED_ELEMENT) + if (aFrame->GetStateBits() & NS_FRAME_REPLACED_ELEMENT) { nsCOMPtr frameType; aFrame->GetFrameType(getter_AddRefs(frameType)); @@ -1732,9 +1721,7 @@ nsLineLayout::IsPercentageAwareReplacedElement(nsIPresContext *aPresContext, PRBool IsPercentageAwareFrame(nsIPresContext *aPresContext, nsIFrame *aFrame) { - nsFrameState childFrameState; - aFrame->GetFrameState(&childFrameState); - if (childFrameState & NS_FRAME_REPLACED_ELEMENT) { + if (aFrame->GetStateBits() & NS_FRAME_REPLACED_ELEMENT) { if (nsLineLayout::IsPercentageAwareReplacedElement(aPresContext, aFrame)) { return PR_TRUE; } @@ -1745,7 +1732,7 @@ PRBool IsPercentageAwareFrame(nsIPresContext *aPresContext, nsIFrame *aFrame) aFrame->FirstChild(aPresContext, nsnull, &child); if (child) { // aFrame is an inline container frame, check my frame state - if (childFrameState & NS_INLINE_FRAME_CONTAINS_PERCENT_AWARE_CHILD) { + if (aFrame->GetStateBits() & NS_INLINE_FRAME_CONTAINS_PERCENT_AWARE_CHILD) { return PR_TRUE; } } @@ -1936,7 +1923,7 @@ nsLineLayout::VerticalAlignLine(nsLineBox* aLineBox, pfd->mBounds.y += baselineY; break; } - pfd->mFrame->SetRect(mPresContext, pfd->mBounds); + pfd->mFrame->SetRect(pfd->mBounds); #ifdef NOISY_VERTICAL_ALIGN printf(" [child of line]"); nsFrame::ListTag(stdout, pfd->mFrame); @@ -1999,7 +1986,7 @@ nsLineLayout::PlaceTopBottomFrames(PerSpanData* psd, else { pfd->mBounds.y = -aDistanceFromTop + pfd->mMargin.top; } - pfd->mFrame->SetRect(mPresContext, pfd->mBounds); + pfd->mFrame->SetRect(pfd->mBounds); #ifdef NOISY_VERTICAL_ALIGN printf(" "); nsFrame::ListTag(stdout, pfd->mFrame); @@ -2020,7 +2007,7 @@ nsLineLayout::PlaceTopBottomFrames(PerSpanData* psd, pfd->mBounds.y = -aDistanceFromTop + aLineHeight - pfd->mMargin.bottom - pfd->mBounds.height; } - pfd->mFrame->SetRect(mPresContext, pfd->mBounds); + pfd->mFrame->SetRect(pfd->mBounds); #ifdef NOISY_VERTICAL_ALIGN printf(" "); nsFrame::ListTag(stdout, pfd->mFrame); @@ -2514,7 +2501,7 @@ nsLineLayout::VerticalAlignFrames(PerSpanData* psd) #endif } if (psd != mRootSpan) { - frame->SetRect(mPresContext, pfd->mBounds); + frame->SetRect(pfd->mBounds); } } pfd = pfd->mNext; @@ -2543,11 +2530,10 @@ nsLineLayout::VerticalAlignFrames(PerSpanData* psd) // be checking for any particular content tag type, but rather should // be checking for the existence of a bullet frame to determine if it's a list element or not. if (!applyMinLH && (isFirstLine || isLastLine)) { - nsCOMPtr blockContent; - nsresult result = mRootSpan->mFrame->mFrame->GetContent(getter_AddRefs(blockContent)); - if ( NS_SUCCEEDED(result) && blockContent) { + nsIContent* blockContent = mRootSpan->mFrame->mFrame->GetContent(); + if (blockContent) { nsCOMPtr blockTagAtom; - result = blockContent->GetTag(getter_AddRefs(blockTagAtom)); + nsresult result = blockContent->GetTag(getter_AddRefs(blockTagAtom)); if ( NS_SUCCEEDED(result) && blockTagAtom) { // (2) above, if the first line of LI if (isFirstLine && blockTagAtom.get() == nsHTMLAtoms::li) { @@ -2648,7 +2634,7 @@ nsLineLayout::VerticalAlignFrames(PerSpanData* psd) pfd = psd->mFirstFrame; while (nsnull != pfd) { pfd->mBounds.y -= minY; // move all the children back up - pfd->mFrame->SetRect(mPresContext, pfd->mBounds); + pfd->mFrame->SetRect(pfd->mBounds); pfd = pfd->mNext; } maxY -= minY; // since minY is in the frame's own coordinate system @@ -2724,11 +2710,10 @@ nsLineLayout::TrimTrailingWhiteSpaceIn(PerSpanData* psd, // that are direct children of the block will be updated // later, however, because the VerticalAlignFrames method // will be run after this method. - nsRect r; nsIFrame* f = pfd->mFrame; - f->GetRect(r); + nsRect r = f->GetRect(); r.width -= deltaWidth; - f->SetRect(mPresContext, r); + f->SetRect(r); } // Adjust the right edge of the span that contains the child span @@ -2780,7 +2765,7 @@ nsLineLayout::TrimTrailingWhiteSpaceIn(PerSpanData* psd, if (psd != mRootSpan) { // The frame was already placed during psd's // reflow. Update the frames rectangle now. - pfd->mFrame->SetRect(mPresContext, pfd->mBounds); + pfd->mFrame->SetRect(pfd->mBounds); } // Adjust containing span's right edge @@ -2898,7 +2883,7 @@ nsLineLayout::ApplyFrameJustification(PerSpanData* aPSD, FrameJustificationState pfd->mBounds.width += dw; deltaX += dw; - pfd->mFrame->SetRect(mPresContext, pfd->mBounds); + pfd->mFrame->SetRect(pfd->mBounds); } } return deltaX; @@ -2949,8 +2934,7 @@ nsLineLayout::HorizontalAlignFrames(nsRect& aLineBounds, // than the frame type due to the changes for bug 141054.) if (!InStrictMode()) { if (psd->mFirstFrame && psd->mFirstFrame->mFrame) { - nsCOMPtr content; - psd->mFirstFrame->mFrame->GetContent(getter_AddRefs(content)); + nsIContent* content = psd->mFirstFrame->mFrame->GetContent(); if (content) { nsCOMPtr tag; content->GetTag(getter_AddRefs(tag)); @@ -2967,7 +2951,7 @@ nsLineLayout::HorizontalAlignFrames(nsRect& aLineBounds, // of its children. nsIFrame *child; for (hrFrame->FirstChild(mPresContext, nsnull, &child); - child; child->GetNextSibling(&child)) { + child; child = child->GetNextSibling()) { child->GetFrameType(getter_AddRefs(frameType)); if (frameType == nsLayoutAtoms::hrFrame) { hrFrame = child; @@ -3075,7 +3059,7 @@ nsLineLayout::HorizontalAlignFrames(nsRect& aLineBounds, if (bulletPfd) { bulletPfd->mBounds.x += maxX; - bulletPfd->mFrame->SetRect(mPresContext, bulletPfd->mBounds); + bulletPfd->mFrame->SetRect(bulletPfd->mBounds); } } if ( (0 != dx) || (visualRTL) ) @@ -3101,7 +3085,7 @@ nsLineLayout::HorizontalAlignFrames(nsRect& aLineBounds, maxX = pfd->mBounds.x = maxX - (pfd->mMargin.left + pfd->mBounds.width + pfd->mMargin.right); } #endif // IBMBIDI - pfd->mFrame->SetRect(mPresContext, pfd->mBounds); + pfd->mFrame->SetRect(pfd->mBounds); } aLineBounds.x += dx; } @@ -3118,7 +3102,7 @@ nsLineLayout::HorizontalAlignFrames(nsRect& aLineBounds, PRUint32 maxX = psd->mRightEdge; while (nsnull != pfd) { pfd->mBounds.x = maxX - (pfd->mMargin.left + pfd->mBounds.width + pfd->mMargin.right); - pfd->mFrame->SetRect(mPresContext, pfd->mBounds); + pfd->mFrame->SetRect(pfd->mBounds); maxX = pfd->mBounds.x; pfd = pfd->mNext; } @@ -3138,7 +3122,6 @@ nsLineLayout::RelativePositionFrames(nsRect& aCombinedArea) void nsLineLayout::RelativePositionFrames(PerSpanData* psd, nsRect& aCombinedArea) { - nsPoint origin; nsRect spanCombinedArea; PerFrameData* pfd; @@ -3172,11 +3155,10 @@ nsLineLayout::RelativePositionFrames(PerSpanData* psd, nsRect& aCombinedArea) // Adjust the origin of the frame if (pfd->GetFlag(PFD_RELATIVEPOS)) { nsIFrame* frame = pfd->mFrame; - frame->GetOrigin(origin); // XXX what about right and bottom? nscoord dx = pfd->mOffsets.left; nscoord dy = pfd->mOffsets.top; - frame->MoveTo(mPresContext, origin.x + dx, origin.y + dy); + frame->SetPosition(frame->GetPosition() + nsPoint(dx, dy)); x += dx; y += dy; } @@ -3244,18 +3226,14 @@ nsLineLayout::RelativePositionFrames(PerSpanData* psd, nsRect& aCombinedArea) // If we just computed a spans combined area, we need to update its // NS_FRAME_OUTSIDE_CHILDREN bit.. - if (nsnull != psd->mFrame) { + if (psd->mFrame) { pfd = psd->mFrame; nsIFrame* frame = pfd->mFrame; - nsFrameState oldState; - frame->GetFrameState(&oldState); - nsFrameState newState = oldState & ~NS_FRAME_OUTSIDE_CHILDREN; if ((minX < 0) || (minY < 0) || (maxX > pfd->mBounds.width) || (maxY > pfd->mBounds.height)) { - newState |= NS_FRAME_OUTSIDE_CHILDREN; - } - if (newState != oldState) { - frame->SetFrameState(newState); + frame->AddStateBits(NS_FRAME_OUTSIDE_CHILDREN); + } else { + frame->RemoveStateBits(NS_FRAME_OUTSIDE_CHILDREN); } } } @@ -3291,9 +3269,9 @@ nsLineLayout::FindNextText(nsIPresContext* aPresContext, nsIFrame* aFrame) for (;;) { stack.InsertElementAt(aFrame, 0); - aFrame->GetParent(&aFrame); + aFrame = aFrame->GetParent(); - NS_ASSERTION(aFrame != nsnull, "wow, no block frame found"); + NS_ASSERTION(aFrame, "wow, no block frame found"); if (! aFrame) break; @@ -3315,8 +3293,7 @@ nsLineLayout::FindNextText(nsIPresContext* aPresContext, nsIFrame* aFrame) return nsnull; // Advance to top's next sibling - nsIFrame* next; - top->GetNextSibling(&next); + nsIFrame* next = top->GetNextSibling(); if (! next) { // No more siblings. Pop the top element to walk back up the @@ -3327,9 +3304,7 @@ nsLineLayout::FindNextText(nsIPresContext* aPresContext, nsIFrame* aFrame) // We know top's parent is good, but next's might not be. So let's // set it to be sure. - nsIFrame* parent; - top->GetParent(&parent); - next->SetParent(parent); + next->SetParent(top->GetParent()); // Save next at the top of the stack... stack.ReplaceElementAt(next, lastIndex); diff --git a/layout/generic/nsObjectFrame.cpp b/layout/generic/nsObjectFrame.cpp index 53b35db039d..bcc779e27bd 100644 --- a/layout/generic/nsObjectFrame.cpp +++ b/layout/generic/nsObjectFrame.cpp @@ -792,65 +792,57 @@ nsObjectFrame::CreateWidget(nsIPresContext* aPresContext, if (NS_OK != result) { return result; } - nsCOMPtr viewMan; nsRect boundBox(0, 0, aWidth, aHeight); - nsIFrame* parWithView; + nsIView *parView = GetAncestorWithView()->GetView(); + nsIViewManager* viewMan = parView->GetViewManager(); - GetParentWithView(aPresContext, &parWithView); - nsIView *parView = parWithView->GetView(aPresContext); - - if (NS_SUCCEEDED(parView->GetViewManager(*getter_AddRefs(viewMan)))) - { // nsWidgetInitData* initData = GetWidgetInitData(aPresContext); // needs to be deleted // initialize the view as hidden since we don't know the (x,y) until Paint - result = view->Init(viewMan, boundBox, parView, nsViewVisibility_kHide); + result = view->Init(viewMan, boundBox, parView, nsViewVisibility_kHide); // if (nsnull != initData) { // delete(initData); // } - if (NS_FAILED(result)) { - return NS_OK; //XXX why OK? MMP - } + if (NS_FAILED(result)) { + return NS_OK; //XXX why OK? MMP + } #if 0 - // set the content's widget, so it can get content modified by the widget - nsIWidget *widget; - result = GetWidget(view, &widget); - if (NS_OK == result) { - nsInput* content = (nsInput *)mContent; // change this cast to QueryInterface - content->SetWidget(widget); - NS_IF_RELEASE(widget); - } else { - NS_ASSERTION(0, "could not get widget"); - } + // set the content's widget, so it can get content modified by the widget + nsIWidget *widget = view->GetWidget(); + if (widget) { + nsInput* content = (nsInput *)mContent; // change this cast to QueryInterface + content->SetWidget(widget); + } else { + NS_ASSERTION(0, "could not get widget"); + } #endif - // Turn off double buffering on the Mac. This depends on bug 49743 and partially - // fixes 32327, 19931 amd 51787 + // Turn off double buffering on the Mac. This depends on bug 49743 and partially + // fixes 32327, 19931 amd 51787 #if defined(XP_MAC) || defined(XP_MACOSX) - nsCOMPtr prefBranch(do_GetService(NS_PREFSERVICE_CONTRACTID)); - PRBool doubleBuffer = PR_FALSE; - if (prefBranch) { - prefBranch->GetBoolPref("plugin.enable_double_buffer", &doubleBuffer); - } - - viewMan->AllowDoubleBuffering(doubleBuffer); + nsCOMPtr prefBranch(do_GetService(NS_PREFSERVICE_CONTRACTID)); + PRBool doubleBuffer = PR_FALSE; + if (prefBranch) { + prefBranch->GetBoolPref("plugin.enable_double_buffer", &doubleBuffer); + } + + viewMan->AllowDoubleBuffering(doubleBuffer); #endif - - // XXX Put this last in document order - // XXX Should we be setting the z-index here? - viewMan->InsertChild(parView, view, nsnull, PR_TRUE); - - if(aViewOnly != PR_TRUE) { - // Bug 179822: Create widget and allow non-unicode SubClass - nsWidgetInitData initData; - initData.mUnicode = PR_FALSE; - result = view->CreateWidget(kWidgetCID, &initData); - if (NS_FAILED(result)) { - return NS_OK; //XXX why OK? MMP - } + + // XXX Put this last in document order + // XXX Should we be setting the z-index here? + viewMan->InsertChild(parView, view, nsnull, PR_TRUE); + + if(aViewOnly != PR_TRUE) { + // Bug 179822: Create widget and allow non-unicode SubClass + nsWidgetInitData initData; + initData.mUnicode = PR_FALSE; + result = view->CreateWidget(kWidgetCID, &initData); + if (NS_FAILED(result)) { + return NS_OK; //XXX why OK? MMP } } @@ -859,11 +851,10 @@ nsObjectFrame::CreateWidget(nsIPresContext* aPresContext, // the child window background color when painting. If it's not set, it may default to gray // Sometimes, a frame doesn't have a background color or is transparent. In this // case, walk up the frame tree until we do find a frame with a background color - for (nsIFrame* frame = this; frame; frame->GetParent(&frame)) { + for (nsIFrame* frame = this; frame; frame = frame->GetParent()) { const nsStyleBackground* background = frame->GetStyleBackground(); if (!background->IsTransparent()) { // make sure we got an actual color - nsCOMPtr win; - view->GetWidget(*getter_AddRefs(win)); + nsIWidget* win = view->GetWidget(); if (win) win->SetBackgroundColor(background->mBackgroundColor); break; @@ -885,7 +876,7 @@ nsObjectFrame::CreateWidget(nsIPresContext* aPresContext, viewMan->MoveViewTo(view, origin.x, origin.y); } - SetView(aPresContext, view); + SetView(view); return result; } @@ -1490,23 +1481,17 @@ nsresult nsObjectFrame::GetWindowOriginInPixels(nsIPresContext * aPresContext, P // if it's windowless, let's make sure we have our origin set right // it may need to be corrected, like after scrolling if (aWindowless && parentWithView) { - nsPoint correction(0,0); - nsCOMPtr parentVM; - parentWithView->GetViewManager(*getter_AddRefs(parentVM)); + nsIViewManager* parentVM = parentWithView->GetViewManager(); // Walk up all the views and add up their positions. This will give us our // absolute position which is what we want to give the plugin nsIView* theView = parentWithView; while (theView) { - nsCOMPtr vm; - theView->GetViewManager(*getter_AddRefs(vm)); - if (vm != parentVM) + if (theView->GetViewManager() != parentVM) break; - theView->GetPosition(&correction.x, &correction.y); - origin += correction; - - theView->GetParent(theView); + origin += theView->GetPosition(); + theView = theView->GetParent(); } } @@ -1533,9 +1518,8 @@ nsObjectFrame::DidReflow(nsIPresContext* aPresContext, PRBool bHidden = IsHidden(); if (HasView()) { - nsIView* view = GetView(aPresContext); - nsCOMPtr vm; - view->GetViewManager(*getter_AddRefs(vm)); + nsIView* view = GetView(); + nsIViewManager* vm = view->GetViewManager(); if (vm) vm->SetViewVisibility(view, bHidden ? nsViewVisibility_kHide : nsViewVisibility_kShow); } @@ -1807,17 +1791,12 @@ nsObjectFrame::Paint(nsIPresContext* aPresContext, #ifdef XP_WIN // Windowless plugins on windows need a special event to update their location, see bug 135737 // first, lets find out how big the window is, in pixels - nsCOMPtr shell; - nsCOMPtr vm; - aPresContext->GetShell(getter_AddRefs(shell)); - if (shell) { - shell->GetViewManager(getter_AddRefs(vm)); - if (vm) { + nsIViewManager* vm = aPresContext->GetViewManager(); + if (vm) { nsIView* view; vm->GetRootView(view); if (view) { - nsCOMPtr win; - view->GetWidget(*getter_AddRefs(win)); + nsIWidget* win = view->GetWidget(); if (win) { nsRect visibleRect; win->GetBounds(visibleRect); @@ -1851,7 +1830,6 @@ nsObjectFrame::Paint(nsIPresContext* aPresContext, } } } - } #endif inst->SetWindow(window); @@ -1881,8 +1859,7 @@ nsObjectFrame::HandleEvent(nsIPresContext* aPresContext, if (anEvent->message == NS_PLUGIN_ACTIVATE) { - nsCOMPtr content; - GetContent(getter_AddRefs(content)); + nsIContent* content = GetContent(); if (content) { content->SetFocus(aPresContext); @@ -2004,7 +1981,7 @@ nsObjectFrame::GetNextObjectFrame(nsIPresContext* aPresContext, nsIFrame * child; aRoot->FirstChild(aPresContext, nsnull, &child); - while (child != nsnull) { + while (child) { *outFrame = nsnull; CallQueryInterface(child, outFrame); if (nsnull != *outFrame) { @@ -2014,7 +1991,7 @@ nsObjectFrame::GetNextObjectFrame(nsIPresContext* aPresContext, } GetNextObjectFrame(aPresContext, child, outFrame); - child->GetNextSibling(&child); + child = child->GetNextSibling(); } return NS_ERROR_FAILURE; @@ -2050,8 +2027,7 @@ NS_IMPL_ISUPPORTS2(nsPluginDOMContextMenuListener, nsIDOMContextMenuListener, ns nsresult nsPluginDOMContextMenuListener::Init(nsObjectFrame *aFrame) { - nsCOMPtr content; - aFrame->GetContent(getter_AddRefs(content)); + nsIContent* content = aFrame->GetContent(); // Register context menu listener if (content) { @@ -2071,8 +2047,7 @@ nsresult nsPluginDOMContextMenuListener::Init(nsObjectFrame *aFrame) nsresult nsPluginDOMContextMenuListener::Destroy(nsObjectFrame *aFrame) { - nsCOMPtr content; - aFrame->GetContent(getter_AddRefs(content)); + nsIContent* content = aFrame->GetContent(); // Unregister context menu listener if (content) { @@ -2272,14 +2247,10 @@ NS_IMETHODIMP nsPluginInstanceOwner::GetDOMElement(nsIDOMElement* *result) if (nsnull != mOwner) { - nsIContent *cont; - - mOwner->GetContent(&cont); - - if (nsnull != cont) + nsIContent* cont = mOwner->GetContent(); + if (cont) { rv = cont->QueryInterface(NS_GET_IID(nsIDOMElement), (void **)result); - NS_RELEASE(cont); } } @@ -2328,8 +2299,7 @@ NS_IMETHODIMP nsPluginInstanceOwner::GetURL(const char *aURL, const char *aTarge rv = NS_NewURI(getter_AddRefs(uri), aURL, baseURL); NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); - nsCOMPtr content; - mOwner->GetContent(getter_AddRefs(content)); + nsIContent* content = mOwner->GetContent(); NS_ENSURE_TRUE(content, NS_ERROR_FAILURE); nsCOMPtr postDataStream; @@ -2425,7 +2395,7 @@ NS_IMETHODIMP nsPluginInstanceOwner::InvalidateRect(nsPluginRect *invalidRect) if(invalidRect) { //no reference count on view - nsIView* view = mOwner->GetView(mContext); + nsIView* view = mOwner->GetView(); if (view) { @@ -2437,15 +2407,8 @@ NS_IMETHODIMP nsPluginInstanceOwner::InvalidateRect(nsPluginRect *invalidRect) (int)(ptot * (invalidRect->right - invalidRect->left)), (int)(ptot * (invalidRect->bottom - invalidRect->top))); - nsIViewManager* manager; - rv = view->GetViewManager(manager); - //set flags to not do a synchronous update, force update does the redraw - if((rv == NS_OK) && manager) - { - rv = manager->UpdateView(view, rect, NS_VMREFRESH_NO_SYNC); - NS_RELEASE(manager); - } + view->GetViewManager()->UpdateView(view, rect, NS_VMREFRESH_NO_SYNC); } } @@ -2459,23 +2422,13 @@ NS_IMETHODIMP nsPluginInstanceOwner::InvalidateRegion(nsPluginRegion invalidRegi NS_IMETHODIMP nsPluginInstanceOwner::ForceRedraw() { - nsresult rv = NS_OK; - //no reference count on view - nsIView* view = mOwner->GetView(mContext); - + nsIView* view = mOwner->GetView(); if (view) { - nsIViewManager* manager; - rv = view->GetViewManager(manager); - - if((rv == NS_OK) && manager) - { - rv = manager->Composite(); - NS_RELEASE(manager); - } + return view->GetViewManager()->Composite(); } - return rv; + return NS_OK; } NS_IMETHODIMP nsPluginInstanceOwner::GetValue(nsPluginInstancePeerVariable variable, void *value) @@ -2490,11 +2443,7 @@ NS_IMETHODIMP nsPluginInstanceOwner::GetValue(nsPluginInstancePeerVariable varia // get the view manager from the pres shell, not from the view! // we may not have a view if we are hidden if (mContext) { - nsCOMPtr shell; - mContext->GetShell(getter_AddRefs(shell)); - if (shell) { - nsCOMPtr vm; - shell->GetViewManager(getter_AddRefs(vm)); + nsIViewManager* vm = mContext->GetViewManager(); if (vm) { nsCOMPtr widget; rv = vm->GetWidget(getter_AddRefs(widget)); @@ -2505,7 +2454,6 @@ NS_IMETHODIMP nsPluginInstanceOwner::GetValue(nsPluginInstancePeerVariable varia } else NS_ASSERTION(widget, "couldn't get doc's widget in getting doc's window handle"); } else NS_ASSERTION(vm, "couldn't get view manager in getting doc's window handle"); - } else NS_ASSERTION(shell, "couldn't get pres shell in getting doc's window handle"); } else NS_ASSERTION(mContext, "plugin owner has no pres context in getting doc's window handle"); break; @@ -2522,13 +2470,10 @@ NS_IMETHODIMP nsPluginInstanceOwner::GetTagType(nsPluginTagType *result) *result = nsPluginTagType_Unknown; - if (nsnull != mOwner) + if (mOwner) { - nsIContent *cont; - - mOwner->GetContent(&cont); - - if (nsnull != cont) + nsIContent* cont = mOwner->GetContent(); + if (cont) { nsCOMPtr atom; cont->GetTag(getter_AddRefs(atom)); @@ -2544,8 +2489,6 @@ NS_IMETHODIMP nsPluginInstanceOwner::GetTagType(nsPluginTagType *result) rv = NS_OK; } - - NS_RELEASE(cont); } } @@ -2557,10 +2500,8 @@ NS_IMETHODIMP nsPluginInstanceOwner::GetTagText(const char* *result) NS_ENSURE_ARG_POINTER(result); if (nsnull == mTagText) { nsresult rv; - nsCOMPtr content; - rv = mOwner->GetContent(getter_AddRefs(content)); - if (NS_FAILED(rv)) - return rv; + nsIContent* content = mOwner->GetContent(); + nsCOMPtr node(do_QueryInterface(content, &rv)); if (NS_FAILED(rv)) return rv; @@ -2936,8 +2877,8 @@ nsresult nsPluginInstanceOwner::EnsureCachedAttrParamArrays() // arrays count up attributes mNumCachedAttrs = 0; - nsCOMPtr content; - nsresult rv = mOwner->GetContent(getter_AddRefs(content)); + nsIContent* content = mOwner->GetContent(); + nsresult rv = NS_OK; NS_ENSURE_TRUE(content, rv); PRInt32 cattrs; @@ -3159,8 +3100,7 @@ void nsPluginInstanceOwner::GUItoMacEvent(const nsGUIEvent& anEvent, EventRecord case NS_FOCUS_EVENT_START: // this is the same as NS_FOCUS_CONTENT aMacEvent.what = nsPluginEventType_GetFocusEvent; if (mOwner && mOwner->mPresContext) { - nsCOMPtr content; - mOwner->GetContent(getter_AddRefs(content)); + nsIContent* content = mOwner->GetContent(); if (content) content->SetFocus(mOwner->mPresContext); } @@ -3169,8 +3109,7 @@ void nsPluginInstanceOwner::GUItoMacEvent(const nsGUIEvent& anEvent, EventRecord case NS_BLUR_CONTENT: aMacEvent.what = nsPluginEventType_LoseFocusEvent; if (mOwner && mOwner->mPresContext) { - nsCOMPtr content; - mOwner->GetContent(getter_AddRefs(content)); + nsIContent* content = mOwner->GetContent(); if (content) content->RemoveFocus(mOwner->mPresContext); } @@ -3537,8 +3476,7 @@ nsPluginInstanceOwner::MouseDown(nsIDOMEvent* aMouseEvent) // if the plugin is windowless, we need to set focus ourselves // otherwise, we might not get key events if (mPluginWindow && mPluginWindow->type == nsPluginWindowType_Drawable) { - nsCOMPtr content; - mOwner->GetContent(getter_AddRefs(content)); + nsIContent* content = mOwner->GetContent(); if (content) content->SetFocus(mContext); } @@ -3691,8 +3629,7 @@ nsEventStatus nsPluginInstanceOwner::ProcessEvent(const nsGUIEvent& anEvent) nsresult nsPluginInstanceOwner::Destroy() { - nsCOMPtr content; - mOwner->GetContent(getter_AddRefs(content)); + nsIContent* content = mOwner->GetContent(); // stop the timer explicitly to reduce reference count. CancelTimer(); @@ -3732,19 +3669,15 @@ nsPluginInstanceOwner::Destroy() } // Unregister scroll position listener - nsIFrame* parentWithView; - mOwner->GetParentWithView(mContext, &parentWithView); - - nsIView* curView = nsnull; - if (parentWithView) - curView = parentWithView->GetView(mContext); + nsIFrame* parentWithView = mOwner->GetAncestorWithView(); + nsIView* curView = parentWithView ? parentWithView->GetView() : nsnull; while (curView) { nsIScrollableView* scrollingView; if (NS_SUCCEEDED(CallQueryInterface(curView, &scrollingView))) scrollingView->RemoveScrollPositionListener((nsIScrollPositionListener *)this); - curView->GetParent(curView); + curView = curView->GetParent(); } mOwner = nsnull; // break relationship between frame and plugin instance owner @@ -3888,8 +3821,7 @@ NS_IMETHODIMP nsPluginInstanceOwner::Init(nsIPresContext* aPresContext, nsObject mContext = aPresContext; mOwner = aFrame; - nsCOMPtr content; - mOwner->GetContent(getter_AddRefs(content)); + nsIContent* content = mOwner->GetContent(); // Some plugins require a specific sequence of shutdown and startup when // a page is reloaded. Shutdown happens usually when the last instance @@ -3960,18 +3892,15 @@ NS_IMETHODIMP nsPluginInstanceOwner::Init(nsIPresContext* aPresContext, nsObject // Register scroll position listener // We need to register a scroll pos listener on every scrollable // view up to the top - nsIFrame* parentWithView; - mOwner->GetParentWithView(mContext, &parentWithView); - nsIView* curView = nsnull; - if (parentWithView) - curView = parentWithView->GetView(mContext); + nsIFrame* parentWithView = mOwner->GetAncestorWithView(); + nsIView* curView = parentWithView ? parentWithView->GetView() : nsnull; while (curView) { nsIScrollableView* scrollingView; if (NS_SUCCEEDED(CallQueryInterface(curView, &scrollingView))) scrollingView->AddScrollPositionListener((nsIScrollPositionListener *)this); - curView->GetParent(curView); + curView = curView->GetParent(); } return NS_OK; @@ -4017,7 +3946,7 @@ NS_IMETHODIMP nsPluginInstanceOwner::CreateWidget(void) { // Create view if necessary - view = mOwner->GetView(mContext); + view = mOwner->GetView(); if (!view || !mWidget) { @@ -4033,18 +3962,14 @@ NS_IMETHODIMP nsPluginInstanceOwner::CreateWidget(void) windowless); if (NS_OK == rv) { - view = mOwner->GetView(mContext); + view = mOwner->GetView(); if (view) { - view->GetWidget(*getter_AddRefs(mWidget)); + mWidget = view->GetWidget(); PRBool fTransparent = PR_FALSE; mInstance->GetValue(nsPluginInstanceVariable_TransparentBool, (void *)&fTransparent); - nsCOMPtr vm; - view->GetViewManager(*getter_AddRefs(vm)); - if (vm) { - vm->SetViewContentTransparency(view, fTransparent); - } + view->GetViewManager()->SetViewContentTransparency(view, fTransparent); } if (PR_TRUE == windowless) @@ -4100,34 +4025,32 @@ static void ConvertTwipsToPixels(nsIPresContext& aPresContext, nsRect& aTwipsRec #ifdef DO_DIRTY_INTERSECT // Convert from a frame relative coordinate to a coordinate relative to its // containing window -static void ConvertRelativeToWindowAbsolute(nsIFrame* aFrame, nsIPresContext* aPresContext, nsPoint& aRel, nsPoint& aAbs, nsIWidget *& -aContainerWidget) +static void ConvertRelativeToWindowAbsolute(nsIFrame* aFrame, + nsIPresContext* aPresContext, nsPoint& aRel, nsPoint& aAbs, + nsIWidget *& aContainerWidget) { - aAbs.x = 0; - aAbs.y = 0; - // See if this frame has a view - nsIView *view = aFrame->GetView(aPresContext); - if (nsnull == view) { - // Calculate frames offset from its nearest view - aFrame->GetOffsetFromView(aPresContext, + nsIView *view = aFrame->GetView(); + if (!view) { + aAbs.x = 0; + aAbs.y = 0; + // Calculate frames offset from its nearest view + aFrame->GetOffsetFromView(aPresContext, aAbs, &view); } else { - // Store frames offset from its view. - nsRect rect; - aFrame->GetRect(rect); - aAbs.x = rect.x; - aAbs.y = rect.y; + // Store frames offset from its view. + aAbs = aFrame->GetPosition(); } - if (view != nsnull) { + if (view) { // Caclulate the views offset from its nearest widget nscoord viewx = 0; nscoord viewy = 0; - view->GetWidget(aContainerWidget); - if (nsnull == aContainerWidget) { + aContainerWidget = view->GetWidget(); + NS_IF_ADDREF(aContainerWidget); + if (!aContainerWidget) { view->GetOffsetFromWidget(&viewx, &viewy, aContainerWidget/**getter_AddRefs(widget)*/); aAbs.x += viewx; aAbs.y += viewy; @@ -4135,10 +4058,7 @@ aContainerWidget) // GetOffsetFromWidget does not include the views offset, so we need to add // that in. - nscoord x, y; - view->GetPosition(&x, &y); - aAbs.x += x; - aAbs.y += y; + aAbs += view->GetPosition(); } nsRect widgetBounds; @@ -4163,10 +4083,8 @@ nsPluginPort* nsPluginInstanceOwner::FixUpPluginWindow(PRInt32 inPaintState) return nsnull; // first, check our view for CSS visibility style - nsIView *view = mOwner->GetView(mContext); - nsViewVisibility vis; - view->GetVisibility(vis); - PRBool isVisible = (vis == nsViewVisibility_kShow) ? PR_TRUE : PR_FALSE; + PRBool isVisible = + mOwner->GetView()->GetVisibility() == nsViewVisibility_kShow; nsCOMPtr pluginWidget = do_QueryInterface(mWidget); @@ -4174,7 +4092,8 @@ nsPluginPort* nsPluginInstanceOwner::FixUpPluginWindow(PRInt32 inPaintState) nsRect widgetClip; PRBool widgetVisible; pluginWidget->GetPluginClipRect(widgetClip, pluginOrigin, widgetVisible); - isVisible &= widgetVisible; + if (!widgetVisible) + isVisible = FALSE; if (!isVisible) widgetClip.Empty(); @@ -4221,17 +4140,9 @@ nsPluginPort* nsPluginInstanceOwner::FixUpPluginWindow(PRInt32 inPaintState) void nsPluginInstanceOwner::Composite() { //no reference count on view - nsIView* view = mOwner->GetView(mContext); - + nsIView* view = mOwner->GetView(); if (view) { - nsIViewManager* manager; - nsresult rv = view->GetViewManager(manager); - - //set flags to not do a synchronous update, force update does the redraw - if (NS_SUCCEEDED(rv) && manager) { - rv = manager->UpdateView(view, NS_VMREFRESH_IMMEDIATE); - NS_RELEASE(manager); - } + view->GetViewManager()->UpdateView(view, NS_VMREFRESH_IMMEDIATE); } } diff --git a/layout/generic/nsPageContentFrame.cpp b/layout/generic/nsPageContentFrame.cpp index b06db87ecca..5c92e151dbf 100644 --- a/layout/generic/nsPageContentFrame.cpp +++ b/layout/generic/nsPageContentFrame.cpp @@ -100,17 +100,15 @@ NS_IMETHODIMP nsPageContentFrame::Reflow(nsIPresContext* aPresContext, // absolutely positioned elements nsMargin border(0,0,0,0); nsMargin padding(0,0,0,0); - nsFrameState kidState; // Ignore the return values for these // Typically they are zero and if they fail // we should keep going anyway, there impact is small kidReflowState.mStyleBorder->GetBorder(border); kidReflowState.mStylePadding->GetPadding(padding); - frame->GetFrameState(&kidState); // First check the combined area - if (NS_FRAME_OUTSIDE_CHILDREN & kidState) { + if (NS_FRAME_OUTSIDE_CHILDREN & frame->GetStateBits()) { // The background covers the content area and padding area, so check // for children sticking outside the child frame's padding edge nscoord paddingEdgeX = aDesiredSize.width - border.right - padding.right; @@ -133,12 +131,11 @@ NS_IMETHODIMP nsPageContentFrame::Reflow(nsIPresContext* aPresContext, #endif #ifdef DEBUG_PRINTING - nsRect r; - frame->GetRect(r); + nsRect r = frame->GetRect(); printf("PCF: Area Frame %p Bounds: %5d,%5d,%5d,%5d\n", frame, r.x, r.y, r.width, r.height); - nsIView* view = frame->GetView(aPresContext); + nsIView* view = frame->GetView(); if (view) { - view->GetBounds(r); + r = view->GetBounds(); printf("PCF: Area Frame View Bounds: %5d,%5d,%5d,%5d\n", r.x, r.y, r.width, r.height); } else { printf("PCF: Area Frame View Bounds: NO VIEW\n"); diff --git a/layout/generic/nsPageFrame.cpp b/layout/generic/nsPageFrame.cpp index 983b9bbcbcd..b27aec3d302 100644 --- a/layout/generic/nsPageFrame.cpp +++ b/layout/generic/nsPageFrame.cpp @@ -125,8 +125,8 @@ nsPageFrame::SetInitialChildList(nsIPresContext* aPresContext, nsIAtom* aListName, nsIFrame* aChildList) { - nsIView* view = aChildList->GetView(aPresContext); - if (view != nsnull && mDoCreateWidget) { + nsIView* view = aChildList->GetView(); + if (view && mDoCreateWidget) { nscoord dx, dy; nsCOMPtr widget; view->GetOffsetFromWidget(&dx, &dy, *getter_AddRefs(widget)); @@ -227,13 +227,11 @@ NS_IMETHODIMP nsPageFrame::Reflow(nsIPresContext* aPresContext, aDesiredSize.height = aReflowState.availableHeight; } - nsIView* view = frame->GetView(aPresContext); + nsIView* view = frame->GetView(); if (view) { - nsCOMPtr vm; - view->GetViewManager(*getter_AddRefs(vm)); nsRegion region; region.Copy(nsRect(0, 0, aDesiredSize.width, aDesiredSize.height)); - vm->SetViewChildClipRegion(view, ®ion); + view->GetViewManager()->SetViewChildClipRegion(view, ®ion); } #ifdef NS_DEBUG @@ -742,13 +740,11 @@ nsPageFrame::DrawBackground(nsIPresContext* aPresContext, nsIFrame* pageContentFrame = mFrames.FirstChild(); NS_ASSERTION(pageContentFrame, "Must always be there."); - nsRect rect; - pageContentFrame->GetRect(rect); const nsStyleBorder* border = GetStyleBorder(); const nsStylePadding* padding = GetStylePadding(); nsCSSRendering::PaintBackground(aPresContext, aRenderingContext, this, - aDirtyRect, rect, *border, *padding, + aDirtyRect, pageContentFrame->GetRect(), *border, *padding, PR_TRUE); } } diff --git a/layout/generic/nsPlaceholderFrame.cpp b/layout/generic/nsPlaceholderFrame.cpp index 12a4650f9fb..793c6dd354f 100644 --- a/layout/generic/nsPlaceholderFrame.cpp +++ b/layout/generic/nsPlaceholderFrame.cpp @@ -142,7 +142,7 @@ nsPlaceholderFrame::List(nsIPresContext* aPresContext, FILE* out, PRInt32 aInden fprintf(out, " [parent=%p]", NS_STATIC_CAST(void*, mParent)); #endif if (HasView()) { - fprintf(out, " [view=%p]", (void*)GetView(aPresContext)); + fprintf(out, " [view=%p]", (void*)GetView()); } fprintf(out, " {%d,%d,%d,%d}", mRect.x, mRect.y, mRect.width, mRect.height); if (0 != mState) { diff --git a/layout/html/base/src/nsInlineFrame.cpp b/layout/html/base/src/nsInlineFrame.cpp index 94d0e194531..99b267ed55f 100644 --- a/layout/html/base/src/nsInlineFrame.cpp +++ b/layout/html/base/src/nsInlineFrame.cpp @@ -177,7 +177,7 @@ nsInlineFrame::IsEmpty(nsCompatibility aCompatMode, PRBool aIsPre, } *aResult = PR_TRUE; - for (nsIFrame *kid = mFrames.FirstChild(); kid; kid->GetNextSibling(&kid)) { + for (nsIFrame *kid = mFrames.FirstChild(); kid; kid = kid->GetNextSibling()) { kid->IsEmpty(aCompatMode, aIsPre, aResult); if (! *aResult) break; @@ -254,17 +254,14 @@ nsInlineFrame::RemoveFrame(nsIPresContext* aPresContext, if (frameType == nsLayoutAtoms::brFrame) generateReflowCommand = PR_TRUE; - nsIFrame* oldFrameParent; - aOldFrame->GetParent(&oldFrameParent); - nsInlineFrame* parent = (nsInlineFrame*) oldFrameParent; - while (nsnull != aOldFrame) { + nsInlineFrame* parent = NS_STATIC_CAST(nsInlineFrame*, aOldFrame->GetParent()); + while (aOldFrame) { #ifdef IBMBIDI if (nsLayoutAtoms::nextBidi != aListName) { #endif // If the frame being removed has zero size then don't bother // generating a reflow command, otherwise make sure we do. - nsRect bbox; - aOldFrame->GetRect(bbox); + nsRect bbox = aOldFrame->GetRect(); if (bbox.width || bbox.height) { generateReflowCommand = PR_TRUE; } @@ -279,8 +276,8 @@ nsInlineFrame::RemoveFrame(nsIPresContext* aPresContext, aOldFrame->GetNextInFlow(&oldFrameNextInFlow); parent->mFrames.DestroyFrame(aPresContext, aOldFrame); aOldFrame = oldFrameNextInFlow; - if (nsnull != aOldFrame) { - aOldFrame->GetParent((nsIFrame**) &parent); + if (aOldFrame) { + parent = NS_STATIC_CAST(nsInlineFrame*, aOldFrame->GetParent()); } } @@ -416,9 +413,7 @@ nsInlineFrame::Reflow(nsIPresContext* aPresContext, // our prev-in-flow's overflow list, it's possible that we have not set // the parent pointer for these frames. Check the first frame to see, and // if we haven't set the parent pointer then set it now - nsIFrame* parent; - overflowFrames->GetParent(&parent); - mFrames.AppendFrames(parent == this ? nsnull : this, overflowFrames); + mFrames.AppendFrames(overflowFrames->GetParent() == this ? nsnull : this, overflowFrames); } } @@ -553,7 +548,7 @@ nsInlineFrame::ReflowFrames(nsIPresContext* aPresContext, break; } irs.mPrevFrame = frame; - frame->GetNextSibling(&frame); + frame = frame->GetNextSibling(); } // Attempt to pull frames from our next-in-flow until we can't @@ -686,9 +681,7 @@ nsInlineFrame::ReflowFrames(nsIPresContext* aPresContext, static void SetContainsPercentAwareChild(nsIFrame *aFrame) { - nsFrameState myFrameState; - aFrame->GetFrameState(&myFrameState); - aFrame->SetFrameState(myFrameState | NS_INLINE_FRAME_CONTAINS_PERCENT_AWARE_CHILD); + aFrame->AddStateBits(NS_INLINE_FRAME_CONTAINS_PERCENT_AWARE_CHILD); } static @@ -696,9 +689,7 @@ void MarkPercentAwareFrame(nsIPresContext *aPresContext, nsInlineFrame *aInline, nsIFrame *aFrame) { - nsFrameState childFrameState; - aFrame->GetFrameState(&childFrameState); - if (childFrameState & NS_FRAME_REPLACED_ELEMENT) + if (aFrame->GetStateBits() & NS_FRAME_REPLACED_ELEMENT) { // aFrame is a replaced element, check it's style if (nsLineLayout::IsPercentageAwareReplacedElement(aPresContext, aFrame)) { SetContainsPercentAwareChild(aInline); @@ -710,7 +701,7 @@ void MarkPercentAwareFrame(nsIPresContext *aPresContext, aFrame->FirstChild(aPresContext, nsnull, &child); if (child) { // aFrame is an inline container frame, check my frame state - if (childFrameState & NS_INLINE_FRAME_CONTAINS_PERCENT_AWARE_CHILD) { + if (child->GetStateBits() & NS_INLINE_FRAME_CONTAINS_PERCENT_AWARE_CHILD) { SetContainsPercentAwareChild(aInline); // if a child container is effected, so am I } } @@ -760,11 +751,8 @@ nsInlineFrame::ReflowInlineFrame(nsIPresContext* aPresContext, // remaining child frames in our child list with the wrong parent // frame pointer... if (irs.mSetParentPointer) { - nsIFrame* f; - aFrame->GetNextSibling(&f); - while (f) { + for (nsIFrame* f = aFrame->GetNextSibling(); f; f = f->GetNextSibling()) { f->SetParent(this); - f->GetNextSibling(&f); } } } @@ -778,9 +766,8 @@ nsInlineFrame::ReflowInlineFrame(nsIPresContext* aPresContext, return rv; } } - nsIFrame* nextFrame; - aFrame->GetNextSibling(&nextFrame); - if (nsnull != nextFrame) { + nsIFrame* nextFrame = aFrame->GetNextSibling(); + if (nextFrame) { aStatus |= NS_FRAME_NOT_COMPLETE; PushFrames(aPresContext, nextFrame, aFrame); } @@ -812,9 +799,8 @@ nsInlineFrame::ReflowInlineFrame(nsIPresContext* aPresContext, return rv; } if (!reflowingFirstLetter) { - nsIFrame* nextFrame; - aFrame->GetNextSibling(&nextFrame); - if (nsnull != nextFrame) { + nsIFrame* nextFrame = aFrame->GetNextSibling(); + if (nextFrame) { PushFrames(aPresContext, nextFrame, aFrame); } } @@ -854,11 +840,7 @@ nsInlineFrame::PushFrames(nsIPresContext* aPresContext, { NS_PRECONDITION(nsnull != aFromChild, "null pointer"); NS_PRECONDITION(nsnull != aPrevSibling, "pushing first child"); -#ifdef DEBUG - nsIFrame* prevNextSibling; - aPrevSibling->GetNextSibling(&prevNextSibling); - NS_PRECONDITION(prevNextSibling == aFromChild, "bad prev sibling"); -#endif + NS_PRECONDITION(aPrevSibling->GetNextSibling() == aFromChild, "bad prev sibling"); #ifdef NOISY_PUSHING printf("%p pushing aFromChild %p, disconnecting from prev sib %p\n", @@ -943,10 +925,9 @@ ReParentChildListStyle(nsIPresContext* aPresContext, nsStyleContext* aParentStyleContext, nsFrameList& aFrameList) { - nsIFrame* kid = aFrameList.FirstChild(); - while (nsnull != kid) { + for (nsIFrame* kid = aFrameList.FirstChild(); kid; + kid = kid->GetNextSibling()) { aPresContext->ReParentStyleContext(kid, aParentStyleContext); - kid->GetNextSibling(&kid); } } @@ -1085,9 +1066,7 @@ nsFirstLineFrame::Reflow(nsIPresContext* aPresContext, if (mStyleContext == first->mStyleContext) { // Fixup our style context and our children. First get the // proper parent context. - nsIFrame* parentFrame; - first->GetParent(&parentFrame); - nsStyleContext* parentContext = parentFrame->GetStyleContext(); + nsStyleContext* parentContext = first->GetParent()->GetStyleContext(); if (parentContext) { // Create a new style context that is a child of the parent // style context thus removing the :first-line style. This way diff --git a/layout/html/base/src/nsLineBox.cpp b/layout/html/base/src/nsLineBox.cpp index b891e8f7c3f..2e5f4f08b92 100644 --- a/layout/html/base/src/nsLineBox.cpp +++ b/layout/html/base/src/nsLineBox.cpp @@ -227,7 +227,7 @@ nsLineBox::List(nsIPresContext* aPresContext, FILE* out, PRInt32 aIndent) const if (NS_SUCCEEDED(frame->QueryInterface(NS_GET_IID(nsIFrameDebug), (void**)&frameDebug))) { frameDebug->List(aPresContext, out, aIndent + 1); } - frame->GetNextSibling(&frame); + frame = frame->GetNextSibling(); } for (i = aIndent; --i >= 0; ) fputs(" ", out); @@ -246,7 +246,7 @@ nsLineBox::LastChild() const nsIFrame* frame = mFirstChild; PRInt32 n = GetChildCount() - 1; while (--n >= 0) { - frame->GetNextSibling(&frame); + frame = frame->GetNextSibling(); } return frame; } @@ -267,7 +267,7 @@ nsLineBox::IndexOf(nsIFrame* aFrame) const if (frame == aFrame) { return i; } - frame->GetNextSibling(&frame); + frame = frame->GetNextSibling(); } return -1; } @@ -284,7 +284,7 @@ nsLineBox::IsEmpty(nsCompatibility aCompatMode, PRBool aParentIsPre, nsIFrame *kid; for (n = GetChildCount(), kid = mFirstChild; n > 0; - --n, kid->GetNextSibling(&kid)) + --n, kid = kid->GetNextSibling()) { kid->IsEmpty(aCompatMode, aParentIsPre, aResult); if (! *aResult) @@ -301,8 +301,7 @@ nsLineBox::DeleteLineList(nsIPresContext* aPresContext, nsLineList& aLines) // we do all of this before our base class releases it's hold on the // view. for (nsIFrame* child = aLines.front()->mFirstChild; child; ) { - nsIFrame* nextChild; - child->GetNextSibling(&nextChild); + nsIFrame* nextChild = child->GetNextSibling(); child->Destroy(aPresContext); child = nextChild; } @@ -660,7 +659,6 @@ nsLineIterator::CheckLineOrder(PRInt32 aLine, nsIFrame **aFirstVisual, nsIFrame **aLastVisual) { - nsRect checkRect; PRInt32 currentLine, saveLine, testLine; nscoord saveX; nsIFrame *checkFrame; @@ -689,16 +687,13 @@ nsLineIterator::CheckLineOrder(PRInt32 aLine, checkFrame = line->mFirstChild; - checkFrame->GetRect(checkRect); result = FindLineContaining(checkFrame, &saveLine); if (NS_FAILED(result)) return result; - saveX = checkRect.x; + saveX = checkFrame->GetRect().x; lineFrameCount = line->GetChildCount(); - for (; checkFrame; result = checkFrame->GetNextSibling(&checkFrame)) { - if (NS_FAILED(result)) - break; + for (; checkFrame; checkFrame = checkFrame->GetNextSibling()) { result = FindLineContaining(checkFrame, &testLine); if (NS_FAILED(result)) return result; @@ -707,7 +702,7 @@ nsLineIterator::CheckLineOrder(PRInt32 aLine, break; } - checkFrame->GetRect(checkRect); + nsRect checkRect = checkFrame->GetRect(); // If the origin of any frame is less than the previous frame, the line is reordered if (checkRect.x < saveX) { *aIsReordered = PR_TRUE; @@ -731,19 +726,12 @@ nsLineIterator::CheckLineOrder(PRInt32 aLine, return result; leftmostFrame = rightmostFrame = firstFrame; - firstFrame->GetRect(checkRect); - maxX = checkRect.x; - minX = checkRect.x; + maxX = minX = firstFrame->GetRect().x; for (;lineFrameCount > 1;lineFrameCount--) { - result = firstFrame->GetNextSibling(&firstFrame); + firstFrame = firstFrame->GetNextSibling(); - if (NS_FAILED(result)){ - NS_ASSERTION(0,"should not be reached nsLineBox\n"); - return NS_ERROR_FAILURE; - } - - firstFrame->GetRect(checkRect); + nsRect checkRect = firstFrame->GetRect(); if (checkRect.x > maxX) { maxX = checkRect.x; rightmostFrame = firstFrame; @@ -796,7 +784,6 @@ nsLineIterator::FindFrameAt(PRInt32 aLineNumber, if (line->mBounds.width == 0) return NS_ERROR_FAILURE; - nsRect r1, r2; nsIFrame *stoppingFrame = nsnull; if (aX < line->mBounds.x) { @@ -807,8 +794,7 @@ nsLineIterator::FindFrameAt(PRInt32 aLineNumber, else { frame = line->mFirstChild; } - frame->GetRect(r1); - if (r1.width > 0) + if (frame->GetRect().width > 0) { *aFrameFound = frame; *aXIsBeforeFirstFrame = PR_TRUE; @@ -828,8 +814,7 @@ nsLineIterator::FindFrameAt(PRInt32 aLineNumber, else { frame = line->LastChild(); } - frame->GetRect(r1); - if (r1.width > 0) + if (frame->GetRect().width > 0) { *aFrameFound = frame; *aXIsBeforeFirstFrame = PR_FALSE; @@ -868,37 +853,36 @@ nsLineIterator::FindFrameAt(PRInt32 aLineNumber, if (isReordered) { nscoord maxX, limX; PRInt32 testLine; - nsRect tempRect; nsIFrame* tempFrame; maxX = -0x7fffffff; - frame->GetRect(tempRect); - limX = tempRect.x; + limX = frame->GetRect().x; tempFrame = line->mFirstChild; nextFrame = nsnull; while (tempFrame) { if (NS_SUCCEEDED(FindLineContaining(tempFrame, &testLine)) && testLine == aLineNumber) { - tempFrame->GetRect(tempRect); + nsRect tempRect = tempFrame->GetRect(); if (tempRect.x > maxX && tempRect.x < limX) { // we are looking for the highest value less than the current one maxX = tempRect.x; nextFrame = tempFrame; } } - tempFrame->GetNextSibling(&tempFrame); + tempFrame = tempFrame->GetNextSibling(); } } else #endif // IBMBIDI - frame->GetNextSibling(&nextFrame); - frame->GetRect(r1); + nextFrame = frame->GetNextSibling(); + + nsRect r1 = frame->GetRect(); if (r1.width && aX > r1.x) { break; } if (nextFrame) { - nextFrame->GetRect(r2); + nsRect r2 = nextFrame->GetRect(); if (r2.width && aX > r2.XMost()) { nscoord rightEdge = r2.XMost(); nscoord delta = r1.x - rightEdge; @@ -923,39 +907,38 @@ nsLineIterator::FindFrameAt(PRInt32 aLineNumber, if (!frame) break; if (isReordered) { - nsRect tempRect; nsIFrame* tempFrame; nscoord minX, limX; PRInt32 testLine; minX = 0x7fffffff; - frame->GetRect(tempRect); - limX = tempRect.x; + limX = frame->GetRect().x; tempFrame = line->mFirstChild; nextFrame = nsnull; while (tempFrame) { if (NS_SUCCEEDED(FindLineContaining(tempFrame, &testLine)) && testLine == aLineNumber) { - tempFrame->GetRect(tempRect); + nsRect tempRect = tempFrame->GetRect(); if (tempRect.width && tempRect.x < minX && tempRect.x > limX) { // we are looking for the lowest value greater than the current one minX = tempRect.x; nextFrame = tempFrame; } } - tempFrame->GetNextSibling(&tempFrame); + tempFrame = tempFrame->GetNextSibling(); } } else #endif // IBMBIDI - frame->GetNextSibling(&nextFrame); - frame->GetRect(r1); + nextFrame = frame->GetNextSibling(); + + nsRect r1 = frame->GetRect(); if (r1.width && aX < r1.XMost()) { break; } if (nextFrame) { - nextFrame->GetRect(r2); + nsRect r2 = nextFrame->GetRect(); if (r2.width && aX < r2.x) { nscoord rightEdge = r1.XMost(); nscoord delta = r2.x - rightEdge; @@ -981,7 +964,8 @@ nsLineIterator::FindFrameAt(PRInt32 aLineNumber, NS_IMETHODIMP nsLineIterator::GetNextSiblingOnLine(nsIFrame*& aFrame, PRInt32 aLineNumber) { - return aFrame->GetNextSibling(&aFrame); + aFrame = aFrame->GetNextSibling(); + return NS_OK; } //---------------------------------------------------------------------- diff --git a/layout/html/base/src/nsLineLayout.cpp b/layout/html/base/src/nsLineLayout.cpp index 666a0e284a6..356e9811f24 100644 --- a/layout/html/base/src/nsLineLayout.cpp +++ b/layout/html/base/src/nsLineLayout.cpp @@ -97,19 +97,17 @@ static nscoord AccumulateImageSizes(nsIPresContext& aPresContext, nsIFrame& aFra nsCOMPtr type; aFrame.GetFrameType(getter_AddRefs(type)); if(type.get() == nsLayoutAtoms::imageFrame) { - nsSize size; - aFrame.GetSize(size); - sizes += NS_STATIC_CAST(nscoord,size.width); + sizes += NS_STATIC_CAST(nscoord, aFrame.GetSize().width); } else { // see if there are children to process nsIFrame* child = nsnull; // XXX: process alternate child lists? aFrame.FirstChild(&aPresContext,nsnull,&child); - while(child) { + while (child) { // recurse: note that we already know we are in a child frame, so no need to track further sizes += AccumulateImageSizes(aPresContext, *child); // now next sibling - child->GetNextSibling(&child); + child = child->GetNextSibling(); } } @@ -879,9 +877,7 @@ nsLineLayout::ReflowFrame(nsIFrame* aFrame, // the frame state. const nsHTMLReflowState* rs = psd->mReflowState; nsReflowReason reason = eReflowReason_Resize; - nsFrameState state; - aFrame->GetFrameState(&state); - if (NS_FRAME_FIRST_REFLOW & state) { + if (NS_FRAME_FIRST_REFLOW & aFrame->GetStateBits()) { reason = eReflowReason_Initial; } else if (rs->reason == eReflowReason_Incremental) { // XXX @@ -914,7 +910,7 @@ nsLineLayout::ReflowFrame(nsIFrame* aFrame, } } else if (type == eReflowType_ReflowDirty && - (state & NS_FRAME_IS_DIRTY) && + (aFrame->GetStateBits() & NS_FRAME_IS_DIRTY) && !frameIsOnReflowPath) { reason = eReflowReason_Dirty; } @@ -924,7 +920,7 @@ nsLineLayout::ReflowFrame(nsIFrame* aFrame, reason = eReflowReason_StyleChange; } else if (rs->reason == eReflowReason_Dirty) { - if (state & NS_FRAME_IS_DIRTY) + if (aFrame->GetStateBits() & NS_FRAME_IS_DIRTY) reason = eReflowReason_Dirty; } @@ -1019,7 +1015,7 @@ nsLineLayout::ReflowFrame(nsIFrame* aFrame, PRInt32 start, end; if (bidiEnabled) { - if (state & NS_FRAME_IS_BIDI) { + if (aFrame->GetStateBits() & NS_FRAME_IS_BIDI) { aFrame->GetOffsets(start, end); } } @@ -1045,10 +1041,9 @@ nsLineLayout::ReflowFrame(nsIFrame* aFrame, // for the text frame's initial reflow (once in the text frame's lifetime) // and we don't make any expensive calls. // Doing it this way shields us from knowing anything about the frame structure inside a text control. - nsIFrame *parentFrame; - aFrame->GetParent(&parentFrame); PRBool inTextControl = PR_FALSE; - while (parentFrame) + for (nsIFrame *parentFrame = aFrame->GetParent(); parentFrame; + parentFrame = parentFrame->GetParent()) { nsCOMPtr parentFrameType; parentFrame->GetFrameType(getter_AddRefs(parentFrameType)); @@ -1060,7 +1055,6 @@ nsLineLayout::ReflowFrame(nsIFrame* aFrame, break; } } - parentFrame->GetParent(&parentFrame); // advance the loop up the frame tree } if (inTextControl) { @@ -1115,9 +1109,9 @@ nsLineLayout::ReflowFrame(nsIFrame* aFrame, // to have zero width. if (metrics.width) { pfd->SetFlag(PFD_ISNONEMPTYTEXTFRAME, PR_TRUE); - nsCOMPtr content; - nsresult result = pfd->mFrame->GetContent(getter_AddRefs(content)); - if ((NS_SUCCEEDED(result)) && content) { + nsIContent* content = pfd->mFrame->GetContent(); + if (content) { + nsresult result; nsCOMPtr textContent = do_QueryInterface(content, &result); if ((NS_SUCCEEDED(result)) && textContent) { @@ -1210,8 +1204,7 @@ nsLineLayout::ReflowFrame(nsIFrame* aFrame, } #endif - aFrame->GetFrameState(&state); - if (NS_FRAME_OUTSIDE_CHILDREN & state) { + if (NS_FRAME_OUTSIDE_CHILDREN & aFrame->GetStateBits()) { pfd->mCombinedArea = metrics.mOverflowArea; } else { @@ -1227,11 +1220,10 @@ nsLineLayout::ReflowFrame(nsIFrame* aFrame, } // Size the frame and size its view (if it has one) - aFrame->SizeTo(mPresContext, metrics.width, metrics.height); + aFrame->SetSize(nsSize(metrics.width, metrics.height)); if (aFrame->HasView()) { - nsIView* view = aFrame->GetView(mPresContext); - nsIViewManager *vm; - view->GetViewManager(vm); + nsIView* view = aFrame->GetView(); + nsIViewManager *vm = view->GetViewManager(); #if 0 // XXX This is the correct code. We'll turn it on later to mitigate risk. vm->ResizeView(view, pfd->mCombinedArea); @@ -1239,7 +1231,6 @@ nsLineLayout::ReflowFrame(nsIFrame* aFrame, nsRect r(0, 0, metrics.width, metrics.height); vm->ResizeView(view, r); #endif - NS_RELEASE(vm); } // Tell the frame that we're done reflowing it @@ -1261,8 +1252,8 @@ nsLineLayout::ReflowFrame(nsIFrame* aFrame, // Remove all of the childs next-in-flows. Make sure that we ask // the right parent to do the removal (it's possible that the // parent is not this because we are executing pullup code) - nsHTMLContainerFrame* parent; - kidNextInFlow->GetParent((nsIFrame**) &parent); + nsHTMLContainerFrame* parent = NS_STATIC_CAST(nsHTMLContainerFrame*, + kidNextInFlow->GetParent()); parent->DeleteNextInFlowChild(mPresContext, kidNextInFlow); } } @@ -1299,7 +1290,7 @@ nsLineLayout::ReflowFrame(nsIFrame* aFrame, printf(" status=%x\n", aReflowStatus); #endif - if (state & NS_FRAME_IS_BIDI) { + if (aFrame->GetStateBits() & NS_FRAME_IS_BIDI) { // Since aReflowStatus may change, check it at the end if (NS_INLINE_IS_BREAK_BEFORE(aReflowStatus) ) { aFrame->AdjustOffsetsForBidi(start, end); @@ -1643,7 +1634,7 @@ nsLineLayout::AddBulletFrame(nsIFrame* aFrame, pfd->mDescent = aMetrics.descent; // Note: y value will be updated during vertical alignment - aFrame->GetRect(pfd->mBounds); + pfd->mBounds = aFrame->GetRect(); pfd->mCombinedArea = aMetrics.mOverflowArea; if (mComputeMaxElementWidth) { pfd->mMaxElementWidth = aMetrics.width; @@ -1690,9 +1681,7 @@ PRBool nsLineLayout::IsPercentageAwareReplacedElement(nsIPresContext *aPresContext, nsIFrame* aFrame) { - nsFrameState frameState; - aFrame->GetFrameState(&frameState); - if (frameState & NS_FRAME_REPLACED_ELEMENT) + if (aFrame->GetStateBits() & NS_FRAME_REPLACED_ELEMENT) { nsCOMPtr frameType; aFrame->GetFrameType(getter_AddRefs(frameType)); @@ -1732,9 +1721,7 @@ nsLineLayout::IsPercentageAwareReplacedElement(nsIPresContext *aPresContext, PRBool IsPercentageAwareFrame(nsIPresContext *aPresContext, nsIFrame *aFrame) { - nsFrameState childFrameState; - aFrame->GetFrameState(&childFrameState); - if (childFrameState & NS_FRAME_REPLACED_ELEMENT) { + if (aFrame->GetStateBits() & NS_FRAME_REPLACED_ELEMENT) { if (nsLineLayout::IsPercentageAwareReplacedElement(aPresContext, aFrame)) { return PR_TRUE; } @@ -1745,7 +1732,7 @@ PRBool IsPercentageAwareFrame(nsIPresContext *aPresContext, nsIFrame *aFrame) aFrame->FirstChild(aPresContext, nsnull, &child); if (child) { // aFrame is an inline container frame, check my frame state - if (childFrameState & NS_INLINE_FRAME_CONTAINS_PERCENT_AWARE_CHILD) { + if (aFrame->GetStateBits() & NS_INLINE_FRAME_CONTAINS_PERCENT_AWARE_CHILD) { return PR_TRUE; } } @@ -1936,7 +1923,7 @@ nsLineLayout::VerticalAlignLine(nsLineBox* aLineBox, pfd->mBounds.y += baselineY; break; } - pfd->mFrame->SetRect(mPresContext, pfd->mBounds); + pfd->mFrame->SetRect(pfd->mBounds); #ifdef NOISY_VERTICAL_ALIGN printf(" [child of line]"); nsFrame::ListTag(stdout, pfd->mFrame); @@ -1999,7 +1986,7 @@ nsLineLayout::PlaceTopBottomFrames(PerSpanData* psd, else { pfd->mBounds.y = -aDistanceFromTop + pfd->mMargin.top; } - pfd->mFrame->SetRect(mPresContext, pfd->mBounds); + pfd->mFrame->SetRect(pfd->mBounds); #ifdef NOISY_VERTICAL_ALIGN printf(" "); nsFrame::ListTag(stdout, pfd->mFrame); @@ -2020,7 +2007,7 @@ nsLineLayout::PlaceTopBottomFrames(PerSpanData* psd, pfd->mBounds.y = -aDistanceFromTop + aLineHeight - pfd->mMargin.bottom - pfd->mBounds.height; } - pfd->mFrame->SetRect(mPresContext, pfd->mBounds); + pfd->mFrame->SetRect(pfd->mBounds); #ifdef NOISY_VERTICAL_ALIGN printf(" "); nsFrame::ListTag(stdout, pfd->mFrame); @@ -2514,7 +2501,7 @@ nsLineLayout::VerticalAlignFrames(PerSpanData* psd) #endif } if (psd != mRootSpan) { - frame->SetRect(mPresContext, pfd->mBounds); + frame->SetRect(pfd->mBounds); } } pfd = pfd->mNext; @@ -2543,11 +2530,10 @@ nsLineLayout::VerticalAlignFrames(PerSpanData* psd) // be checking for any particular content tag type, but rather should // be checking for the existence of a bullet frame to determine if it's a list element or not. if (!applyMinLH && (isFirstLine || isLastLine)) { - nsCOMPtr blockContent; - nsresult result = mRootSpan->mFrame->mFrame->GetContent(getter_AddRefs(blockContent)); - if ( NS_SUCCEEDED(result) && blockContent) { + nsIContent* blockContent = mRootSpan->mFrame->mFrame->GetContent(); + if (blockContent) { nsCOMPtr blockTagAtom; - result = blockContent->GetTag(getter_AddRefs(blockTagAtom)); + nsresult result = blockContent->GetTag(getter_AddRefs(blockTagAtom)); if ( NS_SUCCEEDED(result) && blockTagAtom) { // (2) above, if the first line of LI if (isFirstLine && blockTagAtom.get() == nsHTMLAtoms::li) { @@ -2648,7 +2634,7 @@ nsLineLayout::VerticalAlignFrames(PerSpanData* psd) pfd = psd->mFirstFrame; while (nsnull != pfd) { pfd->mBounds.y -= minY; // move all the children back up - pfd->mFrame->SetRect(mPresContext, pfd->mBounds); + pfd->mFrame->SetRect(pfd->mBounds); pfd = pfd->mNext; } maxY -= minY; // since minY is in the frame's own coordinate system @@ -2724,11 +2710,10 @@ nsLineLayout::TrimTrailingWhiteSpaceIn(PerSpanData* psd, // that are direct children of the block will be updated // later, however, because the VerticalAlignFrames method // will be run after this method. - nsRect r; nsIFrame* f = pfd->mFrame; - f->GetRect(r); + nsRect r = f->GetRect(); r.width -= deltaWidth; - f->SetRect(mPresContext, r); + f->SetRect(r); } // Adjust the right edge of the span that contains the child span @@ -2780,7 +2765,7 @@ nsLineLayout::TrimTrailingWhiteSpaceIn(PerSpanData* psd, if (psd != mRootSpan) { // The frame was already placed during psd's // reflow. Update the frames rectangle now. - pfd->mFrame->SetRect(mPresContext, pfd->mBounds); + pfd->mFrame->SetRect(pfd->mBounds); } // Adjust containing span's right edge @@ -2898,7 +2883,7 @@ nsLineLayout::ApplyFrameJustification(PerSpanData* aPSD, FrameJustificationState pfd->mBounds.width += dw; deltaX += dw; - pfd->mFrame->SetRect(mPresContext, pfd->mBounds); + pfd->mFrame->SetRect(pfd->mBounds); } } return deltaX; @@ -2949,8 +2934,7 @@ nsLineLayout::HorizontalAlignFrames(nsRect& aLineBounds, // than the frame type due to the changes for bug 141054.) if (!InStrictMode()) { if (psd->mFirstFrame && psd->mFirstFrame->mFrame) { - nsCOMPtr content; - psd->mFirstFrame->mFrame->GetContent(getter_AddRefs(content)); + nsIContent* content = psd->mFirstFrame->mFrame->GetContent(); if (content) { nsCOMPtr tag; content->GetTag(getter_AddRefs(tag)); @@ -2967,7 +2951,7 @@ nsLineLayout::HorizontalAlignFrames(nsRect& aLineBounds, // of its children. nsIFrame *child; for (hrFrame->FirstChild(mPresContext, nsnull, &child); - child; child->GetNextSibling(&child)) { + child; child = child->GetNextSibling()) { child->GetFrameType(getter_AddRefs(frameType)); if (frameType == nsLayoutAtoms::hrFrame) { hrFrame = child; @@ -3075,7 +3059,7 @@ nsLineLayout::HorizontalAlignFrames(nsRect& aLineBounds, if (bulletPfd) { bulletPfd->mBounds.x += maxX; - bulletPfd->mFrame->SetRect(mPresContext, bulletPfd->mBounds); + bulletPfd->mFrame->SetRect(bulletPfd->mBounds); } } if ( (0 != dx) || (visualRTL) ) @@ -3101,7 +3085,7 @@ nsLineLayout::HorizontalAlignFrames(nsRect& aLineBounds, maxX = pfd->mBounds.x = maxX - (pfd->mMargin.left + pfd->mBounds.width + pfd->mMargin.right); } #endif // IBMBIDI - pfd->mFrame->SetRect(mPresContext, pfd->mBounds); + pfd->mFrame->SetRect(pfd->mBounds); } aLineBounds.x += dx; } @@ -3118,7 +3102,7 @@ nsLineLayout::HorizontalAlignFrames(nsRect& aLineBounds, PRUint32 maxX = psd->mRightEdge; while (nsnull != pfd) { pfd->mBounds.x = maxX - (pfd->mMargin.left + pfd->mBounds.width + pfd->mMargin.right); - pfd->mFrame->SetRect(mPresContext, pfd->mBounds); + pfd->mFrame->SetRect(pfd->mBounds); maxX = pfd->mBounds.x; pfd = pfd->mNext; } @@ -3138,7 +3122,6 @@ nsLineLayout::RelativePositionFrames(nsRect& aCombinedArea) void nsLineLayout::RelativePositionFrames(PerSpanData* psd, nsRect& aCombinedArea) { - nsPoint origin; nsRect spanCombinedArea; PerFrameData* pfd; @@ -3172,11 +3155,10 @@ nsLineLayout::RelativePositionFrames(PerSpanData* psd, nsRect& aCombinedArea) // Adjust the origin of the frame if (pfd->GetFlag(PFD_RELATIVEPOS)) { nsIFrame* frame = pfd->mFrame; - frame->GetOrigin(origin); // XXX what about right and bottom? nscoord dx = pfd->mOffsets.left; nscoord dy = pfd->mOffsets.top; - frame->MoveTo(mPresContext, origin.x + dx, origin.y + dy); + frame->SetPosition(frame->GetPosition() + nsPoint(dx, dy)); x += dx; y += dy; } @@ -3244,18 +3226,14 @@ nsLineLayout::RelativePositionFrames(PerSpanData* psd, nsRect& aCombinedArea) // If we just computed a spans combined area, we need to update its // NS_FRAME_OUTSIDE_CHILDREN bit.. - if (nsnull != psd->mFrame) { + if (psd->mFrame) { pfd = psd->mFrame; nsIFrame* frame = pfd->mFrame; - nsFrameState oldState; - frame->GetFrameState(&oldState); - nsFrameState newState = oldState & ~NS_FRAME_OUTSIDE_CHILDREN; if ((minX < 0) || (minY < 0) || (maxX > pfd->mBounds.width) || (maxY > pfd->mBounds.height)) { - newState |= NS_FRAME_OUTSIDE_CHILDREN; - } - if (newState != oldState) { - frame->SetFrameState(newState); + frame->AddStateBits(NS_FRAME_OUTSIDE_CHILDREN); + } else { + frame->RemoveStateBits(NS_FRAME_OUTSIDE_CHILDREN); } } } @@ -3291,9 +3269,9 @@ nsLineLayout::FindNextText(nsIPresContext* aPresContext, nsIFrame* aFrame) for (;;) { stack.InsertElementAt(aFrame, 0); - aFrame->GetParent(&aFrame); + aFrame = aFrame->GetParent(); - NS_ASSERTION(aFrame != nsnull, "wow, no block frame found"); + NS_ASSERTION(aFrame, "wow, no block frame found"); if (! aFrame) break; @@ -3315,8 +3293,7 @@ nsLineLayout::FindNextText(nsIPresContext* aPresContext, nsIFrame* aFrame) return nsnull; // Advance to top's next sibling - nsIFrame* next; - top->GetNextSibling(&next); + nsIFrame* next = top->GetNextSibling(); if (! next) { // No more siblings. Pop the top element to walk back up the @@ -3327,9 +3304,7 @@ nsLineLayout::FindNextText(nsIPresContext* aPresContext, nsIFrame* aFrame) // We know top's parent is good, but next's might not be. So let's // set it to be sure. - nsIFrame* parent; - top->GetParent(&parent); - next->SetParent(parent); + next->SetParent(top->GetParent()); // Save next at the top of the stack... stack.ReplaceElementAt(next, lastIndex); diff --git a/layout/html/base/src/nsObjectFrame.cpp b/layout/html/base/src/nsObjectFrame.cpp index 53b35db039d..bcc779e27bd 100644 --- a/layout/html/base/src/nsObjectFrame.cpp +++ b/layout/html/base/src/nsObjectFrame.cpp @@ -792,65 +792,57 @@ nsObjectFrame::CreateWidget(nsIPresContext* aPresContext, if (NS_OK != result) { return result; } - nsCOMPtr viewMan; nsRect boundBox(0, 0, aWidth, aHeight); - nsIFrame* parWithView; + nsIView *parView = GetAncestorWithView()->GetView(); + nsIViewManager* viewMan = parView->GetViewManager(); - GetParentWithView(aPresContext, &parWithView); - nsIView *parView = parWithView->GetView(aPresContext); - - if (NS_SUCCEEDED(parView->GetViewManager(*getter_AddRefs(viewMan)))) - { // nsWidgetInitData* initData = GetWidgetInitData(aPresContext); // needs to be deleted // initialize the view as hidden since we don't know the (x,y) until Paint - result = view->Init(viewMan, boundBox, parView, nsViewVisibility_kHide); + result = view->Init(viewMan, boundBox, parView, nsViewVisibility_kHide); // if (nsnull != initData) { // delete(initData); // } - if (NS_FAILED(result)) { - return NS_OK; //XXX why OK? MMP - } + if (NS_FAILED(result)) { + return NS_OK; //XXX why OK? MMP + } #if 0 - // set the content's widget, so it can get content modified by the widget - nsIWidget *widget; - result = GetWidget(view, &widget); - if (NS_OK == result) { - nsInput* content = (nsInput *)mContent; // change this cast to QueryInterface - content->SetWidget(widget); - NS_IF_RELEASE(widget); - } else { - NS_ASSERTION(0, "could not get widget"); - } + // set the content's widget, so it can get content modified by the widget + nsIWidget *widget = view->GetWidget(); + if (widget) { + nsInput* content = (nsInput *)mContent; // change this cast to QueryInterface + content->SetWidget(widget); + } else { + NS_ASSERTION(0, "could not get widget"); + } #endif - // Turn off double buffering on the Mac. This depends on bug 49743 and partially - // fixes 32327, 19931 amd 51787 + // Turn off double buffering on the Mac. This depends on bug 49743 and partially + // fixes 32327, 19931 amd 51787 #if defined(XP_MAC) || defined(XP_MACOSX) - nsCOMPtr prefBranch(do_GetService(NS_PREFSERVICE_CONTRACTID)); - PRBool doubleBuffer = PR_FALSE; - if (prefBranch) { - prefBranch->GetBoolPref("plugin.enable_double_buffer", &doubleBuffer); - } - - viewMan->AllowDoubleBuffering(doubleBuffer); + nsCOMPtr prefBranch(do_GetService(NS_PREFSERVICE_CONTRACTID)); + PRBool doubleBuffer = PR_FALSE; + if (prefBranch) { + prefBranch->GetBoolPref("plugin.enable_double_buffer", &doubleBuffer); + } + + viewMan->AllowDoubleBuffering(doubleBuffer); #endif - - // XXX Put this last in document order - // XXX Should we be setting the z-index here? - viewMan->InsertChild(parView, view, nsnull, PR_TRUE); - - if(aViewOnly != PR_TRUE) { - // Bug 179822: Create widget and allow non-unicode SubClass - nsWidgetInitData initData; - initData.mUnicode = PR_FALSE; - result = view->CreateWidget(kWidgetCID, &initData); - if (NS_FAILED(result)) { - return NS_OK; //XXX why OK? MMP - } + + // XXX Put this last in document order + // XXX Should we be setting the z-index here? + viewMan->InsertChild(parView, view, nsnull, PR_TRUE); + + if(aViewOnly != PR_TRUE) { + // Bug 179822: Create widget and allow non-unicode SubClass + nsWidgetInitData initData; + initData.mUnicode = PR_FALSE; + result = view->CreateWidget(kWidgetCID, &initData); + if (NS_FAILED(result)) { + return NS_OK; //XXX why OK? MMP } } @@ -859,11 +851,10 @@ nsObjectFrame::CreateWidget(nsIPresContext* aPresContext, // the child window background color when painting. If it's not set, it may default to gray // Sometimes, a frame doesn't have a background color or is transparent. In this // case, walk up the frame tree until we do find a frame with a background color - for (nsIFrame* frame = this; frame; frame->GetParent(&frame)) { + for (nsIFrame* frame = this; frame; frame = frame->GetParent()) { const nsStyleBackground* background = frame->GetStyleBackground(); if (!background->IsTransparent()) { // make sure we got an actual color - nsCOMPtr win; - view->GetWidget(*getter_AddRefs(win)); + nsIWidget* win = view->GetWidget(); if (win) win->SetBackgroundColor(background->mBackgroundColor); break; @@ -885,7 +876,7 @@ nsObjectFrame::CreateWidget(nsIPresContext* aPresContext, viewMan->MoveViewTo(view, origin.x, origin.y); } - SetView(aPresContext, view); + SetView(view); return result; } @@ -1490,23 +1481,17 @@ nsresult nsObjectFrame::GetWindowOriginInPixels(nsIPresContext * aPresContext, P // if it's windowless, let's make sure we have our origin set right // it may need to be corrected, like after scrolling if (aWindowless && parentWithView) { - nsPoint correction(0,0); - nsCOMPtr parentVM; - parentWithView->GetViewManager(*getter_AddRefs(parentVM)); + nsIViewManager* parentVM = parentWithView->GetViewManager(); // Walk up all the views and add up their positions. This will give us our // absolute position which is what we want to give the plugin nsIView* theView = parentWithView; while (theView) { - nsCOMPtr vm; - theView->GetViewManager(*getter_AddRefs(vm)); - if (vm != parentVM) + if (theView->GetViewManager() != parentVM) break; - theView->GetPosition(&correction.x, &correction.y); - origin += correction; - - theView->GetParent(theView); + origin += theView->GetPosition(); + theView = theView->GetParent(); } } @@ -1533,9 +1518,8 @@ nsObjectFrame::DidReflow(nsIPresContext* aPresContext, PRBool bHidden = IsHidden(); if (HasView()) { - nsIView* view = GetView(aPresContext); - nsCOMPtr vm; - view->GetViewManager(*getter_AddRefs(vm)); + nsIView* view = GetView(); + nsIViewManager* vm = view->GetViewManager(); if (vm) vm->SetViewVisibility(view, bHidden ? nsViewVisibility_kHide : nsViewVisibility_kShow); } @@ -1807,17 +1791,12 @@ nsObjectFrame::Paint(nsIPresContext* aPresContext, #ifdef XP_WIN // Windowless plugins on windows need a special event to update their location, see bug 135737 // first, lets find out how big the window is, in pixels - nsCOMPtr shell; - nsCOMPtr vm; - aPresContext->GetShell(getter_AddRefs(shell)); - if (shell) { - shell->GetViewManager(getter_AddRefs(vm)); - if (vm) { + nsIViewManager* vm = aPresContext->GetViewManager(); + if (vm) { nsIView* view; vm->GetRootView(view); if (view) { - nsCOMPtr win; - view->GetWidget(*getter_AddRefs(win)); + nsIWidget* win = view->GetWidget(); if (win) { nsRect visibleRect; win->GetBounds(visibleRect); @@ -1851,7 +1830,6 @@ nsObjectFrame::Paint(nsIPresContext* aPresContext, } } } - } #endif inst->SetWindow(window); @@ -1881,8 +1859,7 @@ nsObjectFrame::HandleEvent(nsIPresContext* aPresContext, if (anEvent->message == NS_PLUGIN_ACTIVATE) { - nsCOMPtr content; - GetContent(getter_AddRefs(content)); + nsIContent* content = GetContent(); if (content) { content->SetFocus(aPresContext); @@ -2004,7 +1981,7 @@ nsObjectFrame::GetNextObjectFrame(nsIPresContext* aPresContext, nsIFrame * child; aRoot->FirstChild(aPresContext, nsnull, &child); - while (child != nsnull) { + while (child) { *outFrame = nsnull; CallQueryInterface(child, outFrame); if (nsnull != *outFrame) { @@ -2014,7 +1991,7 @@ nsObjectFrame::GetNextObjectFrame(nsIPresContext* aPresContext, } GetNextObjectFrame(aPresContext, child, outFrame); - child->GetNextSibling(&child); + child = child->GetNextSibling(); } return NS_ERROR_FAILURE; @@ -2050,8 +2027,7 @@ NS_IMPL_ISUPPORTS2(nsPluginDOMContextMenuListener, nsIDOMContextMenuListener, ns nsresult nsPluginDOMContextMenuListener::Init(nsObjectFrame *aFrame) { - nsCOMPtr content; - aFrame->GetContent(getter_AddRefs(content)); + nsIContent* content = aFrame->GetContent(); // Register context menu listener if (content) { @@ -2071,8 +2047,7 @@ nsresult nsPluginDOMContextMenuListener::Init(nsObjectFrame *aFrame) nsresult nsPluginDOMContextMenuListener::Destroy(nsObjectFrame *aFrame) { - nsCOMPtr content; - aFrame->GetContent(getter_AddRefs(content)); + nsIContent* content = aFrame->GetContent(); // Unregister context menu listener if (content) { @@ -2272,14 +2247,10 @@ NS_IMETHODIMP nsPluginInstanceOwner::GetDOMElement(nsIDOMElement* *result) if (nsnull != mOwner) { - nsIContent *cont; - - mOwner->GetContent(&cont); - - if (nsnull != cont) + nsIContent* cont = mOwner->GetContent(); + if (cont) { rv = cont->QueryInterface(NS_GET_IID(nsIDOMElement), (void **)result); - NS_RELEASE(cont); } } @@ -2328,8 +2299,7 @@ NS_IMETHODIMP nsPluginInstanceOwner::GetURL(const char *aURL, const char *aTarge rv = NS_NewURI(getter_AddRefs(uri), aURL, baseURL); NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); - nsCOMPtr content; - mOwner->GetContent(getter_AddRefs(content)); + nsIContent* content = mOwner->GetContent(); NS_ENSURE_TRUE(content, NS_ERROR_FAILURE); nsCOMPtr postDataStream; @@ -2425,7 +2395,7 @@ NS_IMETHODIMP nsPluginInstanceOwner::InvalidateRect(nsPluginRect *invalidRect) if(invalidRect) { //no reference count on view - nsIView* view = mOwner->GetView(mContext); + nsIView* view = mOwner->GetView(); if (view) { @@ -2437,15 +2407,8 @@ NS_IMETHODIMP nsPluginInstanceOwner::InvalidateRect(nsPluginRect *invalidRect) (int)(ptot * (invalidRect->right - invalidRect->left)), (int)(ptot * (invalidRect->bottom - invalidRect->top))); - nsIViewManager* manager; - rv = view->GetViewManager(manager); - //set flags to not do a synchronous update, force update does the redraw - if((rv == NS_OK) && manager) - { - rv = manager->UpdateView(view, rect, NS_VMREFRESH_NO_SYNC); - NS_RELEASE(manager); - } + view->GetViewManager()->UpdateView(view, rect, NS_VMREFRESH_NO_SYNC); } } @@ -2459,23 +2422,13 @@ NS_IMETHODIMP nsPluginInstanceOwner::InvalidateRegion(nsPluginRegion invalidRegi NS_IMETHODIMP nsPluginInstanceOwner::ForceRedraw() { - nsresult rv = NS_OK; - //no reference count on view - nsIView* view = mOwner->GetView(mContext); - + nsIView* view = mOwner->GetView(); if (view) { - nsIViewManager* manager; - rv = view->GetViewManager(manager); - - if((rv == NS_OK) && manager) - { - rv = manager->Composite(); - NS_RELEASE(manager); - } + return view->GetViewManager()->Composite(); } - return rv; + return NS_OK; } NS_IMETHODIMP nsPluginInstanceOwner::GetValue(nsPluginInstancePeerVariable variable, void *value) @@ -2490,11 +2443,7 @@ NS_IMETHODIMP nsPluginInstanceOwner::GetValue(nsPluginInstancePeerVariable varia // get the view manager from the pres shell, not from the view! // we may not have a view if we are hidden if (mContext) { - nsCOMPtr shell; - mContext->GetShell(getter_AddRefs(shell)); - if (shell) { - nsCOMPtr vm; - shell->GetViewManager(getter_AddRefs(vm)); + nsIViewManager* vm = mContext->GetViewManager(); if (vm) { nsCOMPtr widget; rv = vm->GetWidget(getter_AddRefs(widget)); @@ -2505,7 +2454,6 @@ NS_IMETHODIMP nsPluginInstanceOwner::GetValue(nsPluginInstancePeerVariable varia } else NS_ASSERTION(widget, "couldn't get doc's widget in getting doc's window handle"); } else NS_ASSERTION(vm, "couldn't get view manager in getting doc's window handle"); - } else NS_ASSERTION(shell, "couldn't get pres shell in getting doc's window handle"); } else NS_ASSERTION(mContext, "plugin owner has no pres context in getting doc's window handle"); break; @@ -2522,13 +2470,10 @@ NS_IMETHODIMP nsPluginInstanceOwner::GetTagType(nsPluginTagType *result) *result = nsPluginTagType_Unknown; - if (nsnull != mOwner) + if (mOwner) { - nsIContent *cont; - - mOwner->GetContent(&cont); - - if (nsnull != cont) + nsIContent* cont = mOwner->GetContent(); + if (cont) { nsCOMPtr atom; cont->GetTag(getter_AddRefs(atom)); @@ -2544,8 +2489,6 @@ NS_IMETHODIMP nsPluginInstanceOwner::GetTagType(nsPluginTagType *result) rv = NS_OK; } - - NS_RELEASE(cont); } } @@ -2557,10 +2500,8 @@ NS_IMETHODIMP nsPluginInstanceOwner::GetTagText(const char* *result) NS_ENSURE_ARG_POINTER(result); if (nsnull == mTagText) { nsresult rv; - nsCOMPtr content; - rv = mOwner->GetContent(getter_AddRefs(content)); - if (NS_FAILED(rv)) - return rv; + nsIContent* content = mOwner->GetContent(); + nsCOMPtr node(do_QueryInterface(content, &rv)); if (NS_FAILED(rv)) return rv; @@ -2936,8 +2877,8 @@ nsresult nsPluginInstanceOwner::EnsureCachedAttrParamArrays() // arrays count up attributes mNumCachedAttrs = 0; - nsCOMPtr content; - nsresult rv = mOwner->GetContent(getter_AddRefs(content)); + nsIContent* content = mOwner->GetContent(); + nsresult rv = NS_OK; NS_ENSURE_TRUE(content, rv); PRInt32 cattrs; @@ -3159,8 +3100,7 @@ void nsPluginInstanceOwner::GUItoMacEvent(const nsGUIEvent& anEvent, EventRecord case NS_FOCUS_EVENT_START: // this is the same as NS_FOCUS_CONTENT aMacEvent.what = nsPluginEventType_GetFocusEvent; if (mOwner && mOwner->mPresContext) { - nsCOMPtr content; - mOwner->GetContent(getter_AddRefs(content)); + nsIContent* content = mOwner->GetContent(); if (content) content->SetFocus(mOwner->mPresContext); } @@ -3169,8 +3109,7 @@ void nsPluginInstanceOwner::GUItoMacEvent(const nsGUIEvent& anEvent, EventRecord case NS_BLUR_CONTENT: aMacEvent.what = nsPluginEventType_LoseFocusEvent; if (mOwner && mOwner->mPresContext) { - nsCOMPtr content; - mOwner->GetContent(getter_AddRefs(content)); + nsIContent* content = mOwner->GetContent(); if (content) content->RemoveFocus(mOwner->mPresContext); } @@ -3537,8 +3476,7 @@ nsPluginInstanceOwner::MouseDown(nsIDOMEvent* aMouseEvent) // if the plugin is windowless, we need to set focus ourselves // otherwise, we might not get key events if (mPluginWindow && mPluginWindow->type == nsPluginWindowType_Drawable) { - nsCOMPtr content; - mOwner->GetContent(getter_AddRefs(content)); + nsIContent* content = mOwner->GetContent(); if (content) content->SetFocus(mContext); } @@ -3691,8 +3629,7 @@ nsEventStatus nsPluginInstanceOwner::ProcessEvent(const nsGUIEvent& anEvent) nsresult nsPluginInstanceOwner::Destroy() { - nsCOMPtr content; - mOwner->GetContent(getter_AddRefs(content)); + nsIContent* content = mOwner->GetContent(); // stop the timer explicitly to reduce reference count. CancelTimer(); @@ -3732,19 +3669,15 @@ nsPluginInstanceOwner::Destroy() } // Unregister scroll position listener - nsIFrame* parentWithView; - mOwner->GetParentWithView(mContext, &parentWithView); - - nsIView* curView = nsnull; - if (parentWithView) - curView = parentWithView->GetView(mContext); + nsIFrame* parentWithView = mOwner->GetAncestorWithView(); + nsIView* curView = parentWithView ? parentWithView->GetView() : nsnull; while (curView) { nsIScrollableView* scrollingView; if (NS_SUCCEEDED(CallQueryInterface(curView, &scrollingView))) scrollingView->RemoveScrollPositionListener((nsIScrollPositionListener *)this); - curView->GetParent(curView); + curView = curView->GetParent(); } mOwner = nsnull; // break relationship between frame and plugin instance owner @@ -3888,8 +3821,7 @@ NS_IMETHODIMP nsPluginInstanceOwner::Init(nsIPresContext* aPresContext, nsObject mContext = aPresContext; mOwner = aFrame; - nsCOMPtr content; - mOwner->GetContent(getter_AddRefs(content)); + nsIContent* content = mOwner->GetContent(); // Some plugins require a specific sequence of shutdown and startup when // a page is reloaded. Shutdown happens usually when the last instance @@ -3960,18 +3892,15 @@ NS_IMETHODIMP nsPluginInstanceOwner::Init(nsIPresContext* aPresContext, nsObject // Register scroll position listener // We need to register a scroll pos listener on every scrollable // view up to the top - nsIFrame* parentWithView; - mOwner->GetParentWithView(mContext, &parentWithView); - nsIView* curView = nsnull; - if (parentWithView) - curView = parentWithView->GetView(mContext); + nsIFrame* parentWithView = mOwner->GetAncestorWithView(); + nsIView* curView = parentWithView ? parentWithView->GetView() : nsnull; while (curView) { nsIScrollableView* scrollingView; if (NS_SUCCEEDED(CallQueryInterface(curView, &scrollingView))) scrollingView->AddScrollPositionListener((nsIScrollPositionListener *)this); - curView->GetParent(curView); + curView = curView->GetParent(); } return NS_OK; @@ -4017,7 +3946,7 @@ NS_IMETHODIMP nsPluginInstanceOwner::CreateWidget(void) { // Create view if necessary - view = mOwner->GetView(mContext); + view = mOwner->GetView(); if (!view || !mWidget) { @@ -4033,18 +3962,14 @@ NS_IMETHODIMP nsPluginInstanceOwner::CreateWidget(void) windowless); if (NS_OK == rv) { - view = mOwner->GetView(mContext); + view = mOwner->GetView(); if (view) { - view->GetWidget(*getter_AddRefs(mWidget)); + mWidget = view->GetWidget(); PRBool fTransparent = PR_FALSE; mInstance->GetValue(nsPluginInstanceVariable_TransparentBool, (void *)&fTransparent); - nsCOMPtr vm; - view->GetViewManager(*getter_AddRefs(vm)); - if (vm) { - vm->SetViewContentTransparency(view, fTransparent); - } + view->GetViewManager()->SetViewContentTransparency(view, fTransparent); } if (PR_TRUE == windowless) @@ -4100,34 +4025,32 @@ static void ConvertTwipsToPixels(nsIPresContext& aPresContext, nsRect& aTwipsRec #ifdef DO_DIRTY_INTERSECT // Convert from a frame relative coordinate to a coordinate relative to its // containing window -static void ConvertRelativeToWindowAbsolute(nsIFrame* aFrame, nsIPresContext* aPresContext, nsPoint& aRel, nsPoint& aAbs, nsIWidget *& -aContainerWidget) +static void ConvertRelativeToWindowAbsolute(nsIFrame* aFrame, + nsIPresContext* aPresContext, nsPoint& aRel, nsPoint& aAbs, + nsIWidget *& aContainerWidget) { - aAbs.x = 0; - aAbs.y = 0; - // See if this frame has a view - nsIView *view = aFrame->GetView(aPresContext); - if (nsnull == view) { - // Calculate frames offset from its nearest view - aFrame->GetOffsetFromView(aPresContext, + nsIView *view = aFrame->GetView(); + if (!view) { + aAbs.x = 0; + aAbs.y = 0; + // Calculate frames offset from its nearest view + aFrame->GetOffsetFromView(aPresContext, aAbs, &view); } else { - // Store frames offset from its view. - nsRect rect; - aFrame->GetRect(rect); - aAbs.x = rect.x; - aAbs.y = rect.y; + // Store frames offset from its view. + aAbs = aFrame->GetPosition(); } - if (view != nsnull) { + if (view) { // Caclulate the views offset from its nearest widget nscoord viewx = 0; nscoord viewy = 0; - view->GetWidget(aContainerWidget); - if (nsnull == aContainerWidget) { + aContainerWidget = view->GetWidget(); + NS_IF_ADDREF(aContainerWidget); + if (!aContainerWidget) { view->GetOffsetFromWidget(&viewx, &viewy, aContainerWidget/**getter_AddRefs(widget)*/); aAbs.x += viewx; aAbs.y += viewy; @@ -4135,10 +4058,7 @@ aContainerWidget) // GetOffsetFromWidget does not include the views offset, so we need to add // that in. - nscoord x, y; - view->GetPosition(&x, &y); - aAbs.x += x; - aAbs.y += y; + aAbs += view->GetPosition(); } nsRect widgetBounds; @@ -4163,10 +4083,8 @@ nsPluginPort* nsPluginInstanceOwner::FixUpPluginWindow(PRInt32 inPaintState) return nsnull; // first, check our view for CSS visibility style - nsIView *view = mOwner->GetView(mContext); - nsViewVisibility vis; - view->GetVisibility(vis); - PRBool isVisible = (vis == nsViewVisibility_kShow) ? PR_TRUE : PR_FALSE; + PRBool isVisible = + mOwner->GetView()->GetVisibility() == nsViewVisibility_kShow; nsCOMPtr pluginWidget = do_QueryInterface(mWidget); @@ -4174,7 +4092,8 @@ nsPluginPort* nsPluginInstanceOwner::FixUpPluginWindow(PRInt32 inPaintState) nsRect widgetClip; PRBool widgetVisible; pluginWidget->GetPluginClipRect(widgetClip, pluginOrigin, widgetVisible); - isVisible &= widgetVisible; + if (!widgetVisible) + isVisible = FALSE; if (!isVisible) widgetClip.Empty(); @@ -4221,17 +4140,9 @@ nsPluginPort* nsPluginInstanceOwner::FixUpPluginWindow(PRInt32 inPaintState) void nsPluginInstanceOwner::Composite() { //no reference count on view - nsIView* view = mOwner->GetView(mContext); - + nsIView* view = mOwner->GetView(); if (view) { - nsIViewManager* manager; - nsresult rv = view->GetViewManager(manager); - - //set flags to not do a synchronous update, force update does the redraw - if (NS_SUCCEEDED(rv) && manager) { - rv = manager->UpdateView(view, NS_VMREFRESH_IMMEDIATE); - NS_RELEASE(manager); - } + view->GetViewManager()->UpdateView(view, NS_VMREFRESH_IMMEDIATE); } } diff --git a/layout/html/base/src/nsPageContentFrame.cpp b/layout/html/base/src/nsPageContentFrame.cpp index b06db87ecca..5c92e151dbf 100644 --- a/layout/html/base/src/nsPageContentFrame.cpp +++ b/layout/html/base/src/nsPageContentFrame.cpp @@ -100,17 +100,15 @@ NS_IMETHODIMP nsPageContentFrame::Reflow(nsIPresContext* aPresContext, // absolutely positioned elements nsMargin border(0,0,0,0); nsMargin padding(0,0,0,0); - nsFrameState kidState; // Ignore the return values for these // Typically they are zero and if they fail // we should keep going anyway, there impact is small kidReflowState.mStyleBorder->GetBorder(border); kidReflowState.mStylePadding->GetPadding(padding); - frame->GetFrameState(&kidState); // First check the combined area - if (NS_FRAME_OUTSIDE_CHILDREN & kidState) { + if (NS_FRAME_OUTSIDE_CHILDREN & frame->GetStateBits()) { // The background covers the content area and padding area, so check // for children sticking outside the child frame's padding edge nscoord paddingEdgeX = aDesiredSize.width - border.right - padding.right; @@ -133,12 +131,11 @@ NS_IMETHODIMP nsPageContentFrame::Reflow(nsIPresContext* aPresContext, #endif #ifdef DEBUG_PRINTING - nsRect r; - frame->GetRect(r); + nsRect r = frame->GetRect(); printf("PCF: Area Frame %p Bounds: %5d,%5d,%5d,%5d\n", frame, r.x, r.y, r.width, r.height); - nsIView* view = frame->GetView(aPresContext); + nsIView* view = frame->GetView(); if (view) { - view->GetBounds(r); + r = view->GetBounds(); printf("PCF: Area Frame View Bounds: %5d,%5d,%5d,%5d\n", r.x, r.y, r.width, r.height); } else { printf("PCF: Area Frame View Bounds: NO VIEW\n"); diff --git a/layout/html/base/src/nsPageFrame.cpp b/layout/html/base/src/nsPageFrame.cpp index 983b9bbcbcd..b27aec3d302 100644 --- a/layout/html/base/src/nsPageFrame.cpp +++ b/layout/html/base/src/nsPageFrame.cpp @@ -125,8 +125,8 @@ nsPageFrame::SetInitialChildList(nsIPresContext* aPresContext, nsIAtom* aListName, nsIFrame* aChildList) { - nsIView* view = aChildList->GetView(aPresContext); - if (view != nsnull && mDoCreateWidget) { + nsIView* view = aChildList->GetView(); + if (view && mDoCreateWidget) { nscoord dx, dy; nsCOMPtr widget; view->GetOffsetFromWidget(&dx, &dy, *getter_AddRefs(widget)); @@ -227,13 +227,11 @@ NS_IMETHODIMP nsPageFrame::Reflow(nsIPresContext* aPresContext, aDesiredSize.height = aReflowState.availableHeight; } - nsIView* view = frame->GetView(aPresContext); + nsIView* view = frame->GetView(); if (view) { - nsCOMPtr vm; - view->GetViewManager(*getter_AddRefs(vm)); nsRegion region; region.Copy(nsRect(0, 0, aDesiredSize.width, aDesiredSize.height)); - vm->SetViewChildClipRegion(view, ®ion); + view->GetViewManager()->SetViewChildClipRegion(view, ®ion); } #ifdef NS_DEBUG @@ -742,13 +740,11 @@ nsPageFrame::DrawBackground(nsIPresContext* aPresContext, nsIFrame* pageContentFrame = mFrames.FirstChild(); NS_ASSERTION(pageContentFrame, "Must always be there."); - nsRect rect; - pageContentFrame->GetRect(rect); const nsStyleBorder* border = GetStyleBorder(); const nsStylePadding* padding = GetStylePadding(); nsCSSRendering::PaintBackground(aPresContext, aRenderingContext, this, - aDirtyRect, rect, *border, *padding, + aDirtyRect, pageContentFrame->GetRect(), *border, *padding, PR_TRUE); } } diff --git a/layout/html/base/src/nsPlaceholderFrame.cpp b/layout/html/base/src/nsPlaceholderFrame.cpp index 12a4650f9fb..793c6dd354f 100644 --- a/layout/html/base/src/nsPlaceholderFrame.cpp +++ b/layout/html/base/src/nsPlaceholderFrame.cpp @@ -142,7 +142,7 @@ nsPlaceholderFrame::List(nsIPresContext* aPresContext, FILE* out, PRInt32 aInden fprintf(out, " [parent=%p]", NS_STATIC_CAST(void*, mParent)); #endif if (HasView()) { - fprintf(out, " [view=%p]", (void*)GetView(aPresContext)); + fprintf(out, " [view=%p]", (void*)GetView()); } fprintf(out, " {%d,%d,%d,%d}", mRect.x, mRect.y, mRect.width, mRect.height); if (0 != mState) { diff --git a/layout/html/base/src/nsPresShell.cpp b/layout/html/base/src/nsPresShell.cpp index 15c59bbccc3..565de0d51d0 100644 --- a/layout/html/base/src/nsPresShell.cpp +++ b/layout/html/base/src/nsPresShell.cpp @@ -902,7 +902,7 @@ IncrementalReflow::Dispatch(nsIPresContext *aPresContext, if (first == root) size = aMaxSize; else - first->GetSize(size); + size = first->GetSize(); nsHTMLReflowState reflowState(aPresContext, first, path, &aRendContext, size); @@ -916,11 +916,9 @@ IncrementalReflow::Dispatch(nsIPresContext *aPresContext, (aDesiredSize.width == size.width && aDesiredSize.height == size.height), "non-root frame's desired size changed during an incremental reflow"); - first->SizeTo(aPresContext, aDesiredSize.width, aDesiredSize.height); + first->SetSize(nsSize(aDesiredSize.width, aDesiredSize.height)); - nsIView* view = first->GetView(aPresContext); - if (view) - nsContainerFrame::SyncFrameViewAfterReflow(aPresContext, first, view, nsnull); + nsContainerFrame::SyncFrameViewAfterReflow(aPresContext, first, first->GetView(), nsnull); first->DidReflow(aPresContext, nsnull, NS_FRAME_REFLOW_FINISHED); } @@ -938,12 +936,10 @@ IncrementalReflow::AddCommand(nsIPresContext *aPresContext, // parent chain until we reach either a `reflow root' or the root // frame in the frame hierarchy. nsAutoVoidArray path; - nsFrameState state; do { path.AppendElement(frame); - frame->GetFrameState(&state); - } while (!(state & NS_FRAME_REFLOW_ROOT) && - (frame->GetParent(&frame), frame != nsnull)); + } while (!(frame->GetStateBits() & NS_FRAME_REFLOW_ROOT) && + (frame = frame->GetParent()) != nsnull); // Pop off the root, add it to the set if it's not there already. PRInt32 lastIndex = path.Count() - 1; @@ -1046,6 +1042,7 @@ public: NS_IMETHOD GetDocument(nsIDocument** aResult); NS_IMETHOD GetPresContext(nsIPresContext** aResult); NS_IMETHOD GetViewManager(nsIViewManager** aResult); + nsIViewManager* GetViewManager() { return mViewManager; } NS_IMETHOD GetStyleSet(nsIStyleSet** aResult); NS_IMETHOD GetActiveAlternateStyleSheet(nsString& aSheetTitle); NS_IMETHOD SelectAlternateStyleSheet(const nsString& aSheetTitle); @@ -2869,14 +2866,11 @@ PresShell::InitialReflow(nscoord aWidth, nscoord aHeight) rootFrame->WillReflow(mPresContext); nsContainerFrame::PositionFrameView(mPresContext, rootFrame); rootFrame->Reflow(mPresContext, desiredSize, reflowState, status); - rootFrame->SizeTo(mPresContext, desiredSize.width, desiredSize.height); + rootFrame->SetSize(nsSize(desiredSize.width, desiredSize.height)); mPresContext->SetVisibleArea(nsRect(0,0,desiredSize.width,desiredSize.height)); - nsIView* view = rootFrame->GetView(mPresContext); - if (view) { - nsContainerFrame::SyncFrameViewAfterReflow(mPresContext, rootFrame, view, - nsnull); - } + nsContainerFrame::SyncFrameViewAfterReflow(mPresContext, rootFrame, rootFrame->GetView(), + nsnull); rootFrame->DidReflow(mPresContext, nsnull, NS_FRAME_REFLOW_FINISHED); #ifdef NS_DEBUG @@ -3014,11 +3008,8 @@ PresShell::ResizeReflow(nscoord aWidth, nscoord aHeight) rootFrame->SizeTo(mPresContext, desiredSize.width, desiredSize.height); mPresContext->SetVisibleArea(nsRect(0,0,desiredSize.width,desiredSize.height)); - nsIView* view = rootFrame->GetView(mPresContext); - if (view) { - nsContainerFrame::SyncFrameViewAfterReflow(mPresContext, rootFrame, view, - nsnull); - } + nsContainerFrame::SyncFrameViewAfterReflow(mPresContext, rootFrame, rootFrame->GetView(), + nsnull); rootFrame->DidReflow(mPresContext, nsnull, NS_FRAME_REFLOW_FINISHED); #ifdef NS_DEBUG if (nsIFrameDebug::GetVerifyTreeEnable()) { @@ -3272,11 +3263,8 @@ NS_IMETHODIMP PresShell::PageMove(PRBool aForward, PRBool aExtend) { nsresult result; - nsCOMPtr viewManager; + nsIViewManager* viewManager = GetViewManager(); nsIScrollableView *scrollableView; - result = GetViewManager(getter_AddRefs(viewManager)); - if (NS_FAILED(result)) - return result; if (!viewManager) return NS_ERROR_UNEXPECTED; result = viewManager->GetRootScrollableView(&scrollableView); @@ -3296,9 +3284,9 @@ PresShell::PageMove(PRBool aForward, PRBool aExtend) NS_IMETHODIMP PresShell::ScrollPage(PRBool aForward) { - nsCOMPtr viewManager; - nsresult result = GetViewManager(getter_AddRefs(viewManager)); - if (NS_SUCCEEDED(result) && viewManager) + nsIViewManager* viewManager = GetViewManager(); + nsresult result = NS_OK; + if (viewManager) { nsIScrollableView *scrollView; result = viewManager->GetRootScrollableView(&scrollView); @@ -3313,9 +3301,9 @@ PresShell::ScrollPage(PRBool aForward) NS_IMETHODIMP PresShell::ScrollLine(PRBool aForward) { - nsCOMPtr viewManager; - nsresult result = GetViewManager(getter_AddRefs(viewManager)); - if (NS_SUCCEEDED(result) && viewManager) + nsIViewManager* viewManager = GetViewManager(); + nsresult result = NS_OK; + if (viewManager) { nsIScrollableView *scrollView; result = viewManager->GetRootScrollableView(&scrollView); @@ -3345,9 +3333,9 @@ PresShell::ScrollLine(PRBool aForward) NS_IMETHODIMP PresShell::ScrollHorizontal(PRBool aLeft) { - nsCOMPtr viewManager; - nsresult result = GetViewManager(getter_AddRefs(viewManager)); - if (NS_SUCCEEDED(result) && viewManager) + nsIViewManager* viewManager = GetViewManager(); + nsresult result = NS_OK; + if (viewManager) { nsIScrollableView *scrollView; result = viewManager->GetRootScrollableView(&scrollView); @@ -3370,9 +3358,9 @@ PresShell::ScrollHorizontal(PRBool aLeft) NS_IMETHODIMP PresShell::CompleteScroll(PRBool aForward) { - nsCOMPtr viewManager; - nsresult result = GetViewManager(getter_AddRefs(viewManager)); - if (NS_SUCCEEDED(result) && viewManager) + nsIViewManager* viewManager = GetViewManager(); + nsresult result = NS_OK; + if (viewManager) { nsIScrollableView *scrollView; result = viewManager->GetRootScrollableView(&scrollView); @@ -3398,9 +3386,7 @@ PresShell::CompleteMove(PRBool aForward, PRBool aExtend) nsIView *scrolledView; result = scrollableView->GetScrolledView(scrolledView); // get a frame - void *clientData; - scrolledView->GetClientData(clientData); - nsIFrame *frame = (nsIFrame *)clientData; + nsIFrame *frame = (nsIFrame*)scrolledView->GetClientData(); if (!frame) return NS_ERROR_FAILURE; //we need to get to the area frame. @@ -3430,9 +3416,7 @@ PresShell::CompleteMove(PRBool aForward, PRBool aExtend) if (aForward) { outsideLimit = 1;//search from end - nsRect rect; - frame->GetRect(rect); - pos.mDesiredX = rect.width * 2;//search way off to right of line + pos.mDesiredX = frame->GetRect().width * 2;//search way off to right of line pos.mDirection = eDirPrevious; //seach backwards from the end } else @@ -3498,24 +3482,19 @@ PresShell::CheckVisibility(nsIDOMNode *node, PRInt16 startOffset, PRInt16 EndOff static void UpdateViewProperties(nsIPresContext* aPresContext, nsIViewManager* aVM, nsIView* aView) { - nsCOMPtr thisVM; - aView->GetViewManager(*getter_AddRefs(thisVM)); + nsIViewManager* thisVM = aView->GetViewManager(); if (thisVM != aVM) { return; } - void* clientData; - aView->GetClientData(clientData); - nsIFrame* frame = NS_STATIC_CAST(nsIFrame*, clientData); + nsIFrame* frame = NS_STATIC_CAST(nsIFrame*, aView->GetClientData()); if (frame) { nsContainerFrame::SyncFrameViewProperties(aPresContext, frame, nsnull, aView); } - nsIView* child; - aView->GetFirstChild(child); - while (child) { + for (nsIView* child = aView->GetFirstChild(); child; + child = child->GetNextSibling()) { UpdateViewProperties(aPresContext, aVM, child); - child->GetNextSibling(child); } } @@ -3561,13 +3540,11 @@ PresShell::StyleChangeReflow() rootFrame->WillReflow(mPresContext); nsContainerFrame::PositionFrameView(mPresContext, rootFrame); rootFrame->Reflow(mPresContext, desiredSize, reflowState, status); - rootFrame->SizeTo(mPresContext, desiredSize.width, desiredSize.height); + rootFrame->SetSize(nsSize(desiredSize.width, desiredSize.height)); mPresContext->SetVisibleArea(nsRect(0,0,desiredSize.width,desiredSize.height)); - nsIView* view = rootFrame->GetView(mPresContext); - if (view) { - nsContainerFrame::SyncFrameViewAfterReflow(mPresContext, rootFrame, view, - nsnull); - } + nsIView* view = rootFrame->GetView(); + nsContainerFrame::SyncFrameViewAfterReflow(mPresContext, rootFrame, view, + nsnull); rootFrame->DidReflow(mPresContext, nsnull, NS_FRAME_REFLOW_FINISHED); #ifdef NS_DEBUG if (nsIFrameDebug::GetVerifyTreeEnable()) { @@ -3958,7 +3935,8 @@ PresShell::ClearFrameRefs(nsIFrame* aFrame) } if (aFrame == mCurrentEventFrame) { - aFrame->GetContent(&mCurrentEventContent); + mCurrentEventContent = aFrame->GetContent(); + NS_IF_ADDREF(mCurrentEventContent); mCurrentEventFrame = nsnull; } @@ -3966,8 +3944,8 @@ PresShell::ClearFrameRefs(nsIFrame* aFrame) if (aFrame == (nsIFrame*)mCurrentEventFrameStack.ElementAt(i)) { //One of our stack frames was deleted. Get its content so that when we //pop it we can still get its new frame from its content - nsIContent *currentEventContent; - aFrame->GetContent(¤tEventContent); + nsIContent *currentEventContent = aFrame->GetContent(); + NS_IF_ADDREF(currentEventContent); mCurrentEventContentStack.ReplaceElementAt((void*)currentEventContent, i); mCurrentEventFrameStack.ReplaceElementAt(nsnull, i); } @@ -3985,16 +3963,13 @@ PresShell::CreateRenderingContext(nsIFrame *aFrame, return NS_ERROR_NULL_POINTER; } - nsPoint pt; nsresult rv; - nsIView *view = aFrame->GetClosestView(mPresContext); + nsIView *view = aFrame->GetClosestView(); nsCOMPtr widget; - if (nsnull != view) { - nsCOMPtr vm; - view->GetViewManager(*getter_AddRefs(vm)); - vm->GetWidgetForView(view, getter_AddRefs(widget)); + if (view) { + view->GetViewManager()->GetWidgetForView(view, getter_AddRefs(widget)); } nsCOMPtr dx; @@ -4255,10 +4230,9 @@ static void ScrollViewToShowRect(nsIScrollableView* aScrollingView, // Determine the visible rect in the scrolling view's coordinate space. // The size of the visible area is the clip view size const nsIView* clipView; - nsRect visibleRect; aScrollingView->GetClipView(&clipView); - clipView->GetBounds(visibleRect); // get width and height + nsRect visibleRect = clipView->GetBounds(); // get width and height aScrollingView->GetScrollPosition(visibleRect.x, visibleRect.y); // The actual scroll offsets @@ -4363,9 +4337,8 @@ PresShell::ScrollFrameIntoView(nsIFrame *aFrame, // is not for the anchor link to scroll back into view. That is what // this check is preventing. // XXX: The dependency on the command dispatcher needs to be fixed. - nsCOMPtr content; - aFrame->GetContent(getter_AddRefs(content)); - if(content) { + nsIContent* content = aFrame->GetContent(); + if (content) { nsCOMPtr document; content->GetDocument(getter_AddRefs(document)); if(document){ @@ -4391,8 +4364,7 @@ PresShell::ScrollFrameIntoView(nsIFrame *aFrame, // Step 2: Walk the views that are parents of the frame and scroll them // appropriately. - nsRect frameBounds; - aFrame->GetRect(frameBounds); + nsRect frameBounds = aFrame->GetRect(); nsPoint offset; nsIView* closestView; aFrame->GetOffsetFromView(mPresContext, offset, &closestView); @@ -4407,7 +4379,7 @@ PresShell::ScrollFrameIntoView(nsIFrame *aFrame, while (frame && (frame->GetFrameType(getter_AddRefs(frameType)), frameType == nsLayoutAtoms::inlineFrame)) { prevFrame = frame; - prevFrame->GetParent(&frame); + frame = prevFrame->GetParent(); } if (frame != aFrame && @@ -4458,17 +4430,14 @@ PresShell::ScrollFrameIntoView(nsIFrame *aFrame, // make sure to get the scrolled view's position after it has been scrolled. nsIScrollableView* scrollingView = nsnull; while (closestView) { - nsIView* parent; - closestView->GetParent(parent); + nsIView* parent = closestView->GetParent(); if (parent) { CallQueryInterface(parent, &scrollingView); if (scrollingView) { ScrollViewToShowRect(scrollingView, frameBounds, aVPercent, aHPercent); } } - nscoord x, y; - closestView->GetPosition(&x, &y); - frameBounds.MoveBy(x, y); + frameBounds += closestView->GetPosition();; closestView = parent; } @@ -4968,8 +4937,7 @@ PresShell::UnsuppressAndInvalidate() nsIFrame* rootFrame; mFrameManager->GetRootFrame(&rootFrame); if (rootFrame) { - nsRect rect; - rootFrame->GetRect(rect); + nsRect rect = rootFrame->GetRect(); if (!rect.IsEmpty()) { ((nsFrame*)rootFrame)->Invalidate(mPresContext, rect, PR_FALSE); } @@ -5226,9 +5194,8 @@ PresShell::IsSafeToFlush(PRBool& aIsSafeToFlush) aIsSafeToFlush = PR_FALSE; } else { // Not safe if we are painting - nsCOMPtr viewManager; - nsresult rv = GetViewManager(getter_AddRefs(viewManager)); - if (NS_SUCCEEDED(rv) && (nsnull != viewManager)) { + nsIViewManager* viewManager = GetViewManager(); + if (viewManager) { PRBool isPainting = PR_FALSE; viewManager->IsPainting(isPainting); if (isPainting) { @@ -5468,8 +5435,7 @@ BuildFramechangeList(nsIFrame *aFrame, void *aClosure) // Ok, get our binding information. if (!aFrame->GetStyleDisplay()->mBinding.IsEmpty()) { // We had a binding. - nsCOMPtr content; - aFrame->GetContent(getter_AddRefs(content)); + nsIContent* content = aFrame->GetContent(); nsCOMPtr doc; content->GetDocument(getter_AddRefs(doc)); if (doc) { @@ -5528,9 +5494,7 @@ WalkFramesThroughPlaceholders(nsIPresContext *aPresContext, nsIFrame *aFrame, nsIFrame *child = nsnull; aFrame->FirstChild(aPresContext, childList, &child); while (child) { - nsFrameState state; - child->GetFrameState(&state); - if (!(state & NS_FRAME_OUT_OF_FLOW)) { + if (!(child->GetStateBits() & NS_FRAME_OUT_OF_FLOW)) { // only do frames that are in flow nsCOMPtr frameType; child->GetFrameType(getter_AddRefs(frameType)); @@ -5545,7 +5509,7 @@ WalkFramesThroughPlaceholders(nsIPresContext *aPresContext, nsIFrame *aFrame, else WalkFramesThroughPlaceholders(aPresContext, child, aFunc, aClosure); } - child->GetNextSibling(&child); + child = child->GetNextSibling(); } aFrame->GetAdditionalChildListName(listIndex++, getter_AddRefs(childList)); @@ -5803,10 +5767,9 @@ static PRBool ComputeClipRect(nsIFrame* aFrame, nsRect& aResult) { // element: border, padding, and content areas, and even scrollbars if // there are any. if (display->IsAbsolutelyPositioned() && (display->mClipFlags & NS_STYLE_CLIP_RECT)) { - nsSize size; + nsSize size = aFrame->GetSize(); // Start with the 'auto' values and then factor in user specified values - aFrame->GetSize(size); nsRect clipRect(0, 0, size.width, size.height); if (display->mClipFlags & NS_STYLE_CLIP_RECT) { @@ -5869,7 +5832,6 @@ PresShell::Paint(nsIView *aView, nsIRenderingContext& aRenderingContext, const nsRect& aDirtyRect) { - void* clientData; nsIFrame* frame; nsresult rv = NS_OK; @@ -5880,8 +5842,7 @@ PresShell::Paint(nsIView *aView, NS_ASSERTION(!(nsnull == aView), "null view"); - aView->GetClientData(clientData); - frame = (nsIFrame *)clientData; + frame = NS_STATIC_CAST(nsIFrame*, aView->GetClientData()); if (nsnull != frame) { @@ -5907,8 +5868,7 @@ PresShell::Paint(nsIView *aView, #ifdef NS_DEBUG // Draw a border around the frame if (nsIFrameDebug::GetShowFrameBorders()) { - nsRect r; - frame->GetRect(r); + nsRect r = frame->GetRect(); aRenderingContext.SetColor(NS_RGB(0,0,255)); aRenderingContext.DrawRect(0, 0, r.width, r.height); } @@ -6100,8 +6060,8 @@ PresShell::HandleEvent(nsIView *aView, // Check for a system color change up front, since the frame type is // irrelevant if ((aEvent->message == NS_SYSCOLORCHANGED) && mPresContext) { - nsCOMPtr vm; - if ((NS_SUCCEEDED(GetViewManager(getter_AddRefs(vm)))) && vm) { + nsIViewManager* vm = GetViewManager(); + if (vm) { // Only dispatch system color change when the message originates from // from the root views widget. This is necessary to prevent us from // dispatching the SysColorChanged notification for each child window @@ -6117,9 +6077,7 @@ PresShell::HandleEvent(nsIView *aView, return NS_OK; } - void* clientData; - aView->GetClientData(clientData); - nsIFrame* frame = (nsIFrame *)clientData; + nsIFrame* frame = NS_STATIC_CAST(nsIFrame*, aView->GetClientData()); nsresult rv = NS_OK; @@ -6195,8 +6153,7 @@ PresShell::HandleEvent(nsIView *aView, // GetFrameForPoint() work. The assumption here is that frame->GetView() // will return aView, and frame's parent view is aView's parent. - nsPoint eventPoint; - frame->GetOrigin(eventPoint); + nsPoint eventPoint = frame->GetPosition(); eventPoint += aEvent->point; nsPoint originOffset; @@ -6281,8 +6238,8 @@ PresShell::HandleEvent(nsIView *aView, nsIView *oldView = mCurrentTargetView; nsPoint offset(0,0); nsRect oldTargetRect(mCurrentTargetRect); - mCurrentEventFrame->GetRect(mCurrentTargetRect); - mCurrentTargetView = mCurrentEventFrame->GetView(mPresContext); + mCurrentTargetRect = mCurrentEventFrame->GetRect(); + mCurrentTargetView = mCurrentEventFrame->GetView(); if (!mCurrentTargetView ) { mCurrentEventFrame->GetOffsetFromView(mPresContext, offset, &mCurrentTargetView); @@ -6294,8 +6251,8 @@ PresShell::HandleEvent(nsIView *aView, if ((mCurrentTargetRect != oldTargetRect) || (mCurrentTargetView != oldView)) { - nsCOMPtr vm; - if ((NS_SUCCEEDED(GetViewManager(getter_AddRefs(vm)))) && vm) { + nsIViewManager* vm = GetViewManager(); + if (vm) { vm->UpdateView(mCurrentTargetView,mCurrentTargetRect,0); if (oldView) vm->UpdateView(oldView,oldTargetRect,0); @@ -6481,10 +6438,9 @@ struct ReflowEvent : public PLEvent { ps->ClearReflowEventStatus(); ps->GetReflowBatchingStatus(&isBatching); if (!isBatching) { - nsCOMPtr viewManager; // Set a kung fu death grip on the view manager associated with the pres shell // before processing that pres shell's reflow commands. Fixes bug 54868. - presShell->GetViewManager(getter_AddRefs(viewManager)); + nsCOMPtr viewManager = presShell->GetViewManager(); ps->ProcessReflowCommands(PR_TRUE); // Now, explicitly release the pres shell before the view manager @@ -6580,8 +6536,7 @@ PresShell::ProcessReflowCommands(PRBool aInterruptible) nsIRenderingContext* rcx; nsIFrame* rootFrame; mFrameManager->GetRootFrame(&rootFrame); - nsSize maxSize; - rootFrame->GetSize(maxSize); + nsSize maxSize = rootFrame->GetSize(); nsresult rv=CreateRenderingContext(rootFrame, &rcx); if (NS_FAILED(rv)) return rv; @@ -7006,8 +6961,6 @@ CompareTrees(nsIPresContext* aFirstPresContext, nsIFrame* aFirstFrame, nsRect r1, r2; nsIView* v1, *v2; - nsCOMPtr w1; - nsCOMPtr w2; for (;;) { if (((nsnull == k1) && (nsnull != k2)) || ((nsnull != k1) && (nsnull == k2))) { @@ -7017,33 +6970,29 @@ CompareTrees(nsIPresContext* aFirstPresContext, nsIFrame* aFirstFrame, } else if (nsnull != k1) { // Verify that the frames are the same size - k1->GetRect(r1); - k2->GetRect(r2); - if (r1 != r2) { + if (k1->GetRect() != k2->GetRect()) { ok = PR_FALSE; - LogVerifyMessage(k1, k2, "(frame rects)", r1, r2); + LogVerifyMessage(k1, k2, "(frame rects)", k1->GetRect(), k2->GetRect()); } // Make sure either both have views or neither have views; if they // do have views, make sure the views are the same size. If the // views have widgets, make sure they both do or neither does. If // they do, make sure the widgets are the same size. - v1 = k1->GetView(aFirstPresContext); - v2 = k2->GetView(aSecondPresContext); + v1 = k1->GetView(); + v2 = k2->GetView(); if (((nsnull == v1) && (nsnull != v2)) || ((nsnull != v1) && (nsnull == v2))) { ok = PR_FALSE; LogVerifyMessage(k1, k2, "child views are not matched\n"); } else if (nsnull != v1) { - v1->GetBounds(r1); - v2->GetBounds(r2); - if (r1 != r2) { - LogVerifyMessage(k1, k2, "(view rects)", r1, r2); + if (v1->GetBounds() != v2->GetBounds()) { + LogVerifyMessage(k1, k2, "(view rects)", v1->GetBounds(), v2->GetBounds()); } - v1->GetWidget(*getter_AddRefs(w1)); - v2->GetWidget(*getter_AddRefs(w2)); + nsIWidget* w1 = v1->GetWidget(); + nsIWidget* w2 = v2->GetWidget(); if (((nsnull == w1) && (nsnull != w2)) || ((nsnull != w1) && (nsnull == w2))) { ok = PR_FALSE; @@ -7179,8 +7128,8 @@ CompareTrees(nsIPresContext* aFirstPresContext, nsIFrame* aFirstFrame, } // Advance to next sibling - k1->GetNextSibling(&k1); - k2->GetNextSibling(&k2); + k1 = k1->GetNextSibling(); + k2 = k2->GetNextSibling(); } else { break; @@ -7232,18 +7181,15 @@ CompareTrees(nsIPresContext* aFirstPresContext, nsIFrame* aFirstFrame, static nsIFrame* FindTopFrame(nsIFrame* aRoot) { - if (nsnull != aRoot) { - nsIContent* content; - aRoot->GetContent(&content); - if (nsnull != content) { + if (aRoot) { + nsIContent* content = aRoot->GetContent(); + if (content) { nsIAtom* tag; content->GetTag(tag); if (nsnull != tag) { NS_RELEASE(tag); - NS_RELEASE(content); return aRoot; } - NS_RELEASE(content); } // Try one of the children @@ -7254,7 +7200,7 @@ FindTopFrame(nsIFrame* aRoot) if (nsnull != result) { return result; } - kid->GetNextSibling(&kid); + kid = kid->GetNextSibling(); } } return nsnull; @@ -7318,9 +7264,7 @@ PresShell::VerifyIncrementalReflow() if (NS_SUCCEEDED (rv)) { scrollView->GetScrollPreference(scrolling); } - nsCOMPtr rootWidget; - rootView->GetWidget(*getter_AddRefs(rootWidget)); - void* nativeParentWidget = rootWidget->GetNativeData(NS_NATIVE_WIDGET); + void* nativeParentWidget = rootView->GetWidget()->GetNativeData(NS_NATIVE_WIDGET); // Create a new view manager. rv = nsComponentManager::CreateInstance(kViewManagerCID, nsnull, @@ -7836,9 +7780,6 @@ void ReflowCountMgr::PaintCount(const char * aName, fm->GetHeight(height); fm->GetMaxAscent(y); - nsRect r; - aFrame->GetRect(r); - PRUint32 color; PRUint32 color2; if (aColor != 0) { @@ -7977,7 +7918,7 @@ static void RecurseIndiTotals(nsIPresContext* aPresContext, aParentFrame->FirstChild(aPresContext, nsnull, &child); while (child) { RecurseIndiTotals(aPresContext, aHT, child, aLevel+1); - child->GetNextSibling(&child); + child = child->GetNextSibling(); } } diff --git a/layout/html/base/src/nsScrollPortFrame.cpp b/layout/html/base/src/nsScrollPortFrame.cpp index e19c65f0f91..e9e1b011cb8 100644 --- a/layout/html/base/src/nsScrollPortFrame.cpp +++ b/layout/html/base/src/nsScrollPortFrame.cpp @@ -61,15 +61,12 @@ nsScrollPortFrame::NeedsClipWidget() { // XXX: This code will go away when a general solution for creating // widgets only when needed is implemented. - nsIFrame* parentFrame; - GetParent(&parentFrame); - nsIFormControlFrame* fcFrame; - - while (parentFrame) { + for (nsIFrame* parentFrame = GetParent(); parentFrame; + parentFrame = parentFrame->GetParent()) { + nsIFormControlFrame* fcFrame; if ((NS_SUCCEEDED(parentFrame->QueryInterface(NS_GET_IID(nsIFormControlFrame), (void**)&fcFrame)))) { - return(PR_FALSE); + return PR_FALSE; } - parentFrame->GetParent(&parentFrame); } return PR_TRUE; diff --git a/layout/html/base/src/nsSelectsAreaFrame.cpp b/layout/html/base/src/nsSelectsAreaFrame.cpp index 23d9479644d..08493bed16d 100644 --- a/layout/html/base/src/nsSelectsAreaFrame.cpp +++ b/layout/html/base/src/nsSelectsAreaFrame.cpp @@ -94,14 +94,11 @@ nsSelectsAreaFrame::IsOptionElement(nsIContent* aContent) PRBool nsSelectsAreaFrame::IsOptionElementFrame(nsIFrame *aFrame) { - nsIContent *content = nsnull; - aFrame->GetContent(&content); - PRBool result = PR_FALSE; - if (nsnull != content) { - result = IsOptionElement(content); - NS_RELEASE(content); + nsIContent *content = aFrame->GetContent(); + if (content) { + return IsOptionElement(content); } - return(result); + return PR_FALSE; } //--------------------------------------------------------- @@ -122,10 +119,10 @@ nsSelectsAreaFrame::GetFrameForPoint(nsIPresContext* aPresContext, if (result == NS_OK) { nsIFrame* selectedFrame = *aFrame; - while ((nsnull != selectedFrame) && (PR_FALSE == IsOptionElementFrame(selectedFrame))) { - selectedFrame->GetParent(&selectedFrame); + while (selectedFrame && !IsOptionElementFrame(selectedFrame)) { + selectedFrame = selectedFrame->GetParent(); } - if (nsnull != selectedFrame) { + if (selectedFrame) { *aFrame = selectedFrame; } // else, keep the original result as *aFrame, which could be this frame @@ -141,11 +138,11 @@ nsSelectsAreaFrame::Paint(nsIPresContext* aPresContext, nsFramePaintLayer aWhichLayer, PRUint32 aFlags) { - nsresult rv = nsAreaFrame::Paint(aPresContext, aRenderingContext, aDirtyRect, aWhichLayer, aFlags); + nsAreaFrame::Paint(aPresContext, aRenderingContext, aDirtyRect, aWhichLayer, aFlags); nsIFrame* frame = this; while (frame) { - frame->GetParent(&frame); + frame = frame->GetParent(); nsCOMPtr type; frame->GetFrameType(getter_AddRefs(type)); if (type == nsLayoutAtoms::listControlFrame) {