nsIReflowCommand::ReflowType  type;
nsReflowType  type;
ViewportFrame::IncrementalReflow(nsIPresContext*          aPresContext,                                 const nsHTMLReflowState& aReflowState){  nsIReflowCommand::ReflowType  type;  // Get the type of reflow command  aReflowState.reflowCommand->GetType(type);  // The only type of reflow command we expect is that we have dirty  // child frames to reflow  NS_ASSERTION(nsIReflowCommand::ReflowDirty, "unexpected reflow type");    // Calculate how much room is available for the fixed items. That means  // determining if the viewport is scrollable and whether the vertical and/or  // horizontal scrollbars are visible  nscoord width, height;  CalculateFixedContainingBlockSize(aPresContext, aReflowState, width, height);    // Make a copy of the reflow state and change the computed width and height  // to reflect the available space for the fixed items  // XXX Find a cleaner way to do this...  nsHTMLReflowState reflowState(aReflowState);  reflowState.mComputedWidth = width;  reflowState.mComputedHeight = height;    // Walk the fixed child frames and reflow the dirty frames  for (nsIFrame* f = mFixedFrames.FirstChild(); f; f->GetNextSibling(&f)) {    nsFrameState  frameState;    f->GetFrameState(&frameState);    if (frameState & NS_FRAME_IS_DIRTY) {      nsReflowStatus  status;      // Note: the only reason the frame would be dirty would be if it had      // just been inserted or appended      NS_ASSERTION(frameState & NS_FRAME_FIRST_REFLOW, "unexpected frame state");      ReflowFixedFrame(aPresContext, reflowState, f, PR_TRUE, status);    }  }  return NS_OK;}