if (NS_FRAME_OUT_OF_FLOW != (childState & NS_FRAME_OUT_OF_FLOW)) {
if (!(childState & NS_FRAME_OUT_OF_FLOW)) {
UpdateViewsForTree(nsIPresContext* aPresContext, nsIFrame* aFrame,                    nsIViewManager* aViewManager, nsRect& aBoundsRect){  nsIView* view;  aFrame->GetView(aPresContext, &view);  if (view) {    SyncAndInvalidateView(aPresContext, view, aFrame, aViewManager);  }  nsRect bounds;  aFrame->GetRect(bounds);  nsPoint parentOffset(bounds.x, bounds.y);  bounds.x = 0;  bounds.y = 0;  // now do children of frame  PRInt32 listIndex = 0;  nsIAtom* childList = nsnull;  nsIAtom* frameType = nsnull;  do {    nsIFrame* child = nsnull;    aFrame->FirstChild(aPresContext, childList, &child);    while (child) {      nsFrameState  childState;      child->GetFrameState(&childState);      if (NS_FRAME_OUT_OF_FLOW != (childState & NS_FRAME_OUT_OF_FLOW)) {        // only do frames that are in flow        child->GetFrameType(&frameType);        if (nsLayoutAtoms::placeholderFrame == frameType) { // placeholder          // get out of flow frame and start over there          nsIFrame* outOfFlowFrame = ((nsPlaceholderFrame*)child)->GetOutOfFlowFrame();          NS_ASSERTION(outOfFlowFrame, "no out-of-flow frame");          ApplyRenderingChangeToTree(aPresContext, outOfFlowFrame, aViewManager);        }        else {  // regular frame          nsRect  childBounds;          UpdateViewsForTree(aPresContext, child, aViewManager, childBounds);          bounds.UnionRect(bounds, childBounds);        }        NS_IF_RELEASE(frameType);      }      child->GetNextSibling(&child);    }    NS_IF_RELEASE(childList);    aFrame->GetAdditionalChildListName(listIndex++, &childList);  } while (childList);  NS_IF_RELEASE(childList);  aBoundsRect = bounds;  aBoundsRect += parentOffset;}