nsTableFrame::AdjustSiblingsAfterReflow(nsIPresContext*     aPresContext, nsTableReflowState& aReflowState,
nsTableFrame::AdjustSiblingsAfterReflow(nsTableReflowState& aReflowState,
nsTableFrame::AdjustSiblingsAfterReflow(nsIPresContext*     aPresContext,                                        nsTableReflowState& aReflowState,                                        nsIFrame*           aKidFrame,                                        nscoord             aDeltaY){  NS_PRECONDITION(NS_UNCONSTRAINEDSIZE == aReflowState.reflowState.availableHeight,                  "we're not in galley mode");  nscoord yInvalid = NS_UNCONSTRAINEDSIZE;  // Get the ordered children and find aKidFrame in the list  nsAutoVoidArray rowGroups;  PRUint32 numRowGroups;  OrderRowGroups(rowGroups, numRowGroups, nsnull);  PRUint32 changeIndex;  for (changeIndex = 0; changeIndex < numRowGroups; changeIndex++) {    if (aKidFrame == rowGroups.ElementAt(changeIndex)) {      break;    }  }  changeIndex++; // set it to the next sibling  for (PRUint32 rgX = changeIndex; rgX < numRowGroups; rgX++) {    nsIFrame* kidFrame = (nsIFrame*)rowGroups.ElementAt(rgX);    // Move the frames that follow aKidFrame by aDeltaY, and update the running    // y-offset    nsTableRowGroupFrame* rgFrame = GetRowGroupFrame(kidFrame);    if (!rgFrame) continue; // skip foreign frames    // Get the frame's bounding rect    nsRect kidRect = kidFrame->GetRect();    yInvalid = PR_MIN(yInvalid, kidRect.y);      // Adjust the running y-offset    aReflowState.y += kidRect.height;     // Adjust the y-origin if its position actually changed    if (aDeltaY != 0) {      kidRect.y += aDeltaY;      kidFrame->SetPosition(nsPoint(kidRect.x, kidRect.y));      RePositionViews(aPresContext, kidFrame);    }  }    // Invalidate the area we offset.  if (NS_UNCONSTRAINEDSIZE != yInvalid) {    nsRect  dirtyRect(0, yInvalid, mRect.width, mRect.height - yInvalid);    // XXX what if some of the cells have outlines?    Invalidate(dirtyRect);  }  return NS_OK;}