void nsTableFrame::AttributeChangedFor(nsIPresContext* aPresContext,
void nsTableFrame::AttributeChangedFor(nsPresContext* aPresContext,
void nsTableFrame::AttributeChangedFor(nsIPresContext* aPresContext,                                        nsIFrame*       aFrame,                                       nsIContent*     aContent,                                        nsIAtom*        aAttribute){  nsIAtom* frameType;  aFrame->GetFrameType(&frameType);  if (nsLayoutAtoms::tableCellFrame == frameType) {    if ((nsHTMLAtoms::rowspan == aAttribute) ||         (nsHTMLAtoms::colspan == aAttribute)) {      nsTableCellMap* cellMap = GetCellMap();      if (cellMap) {        // for now just remove the cell from the map and reinsert it        nsTableCellFrame* cellFrame = (nsTableCellFrame*)aFrame;        PRInt32 rowIndex, colIndex;        cellFrame->GetRowIndex(rowIndex);        cellFrame->GetColIndex(colIndex);        RemoveCell(*aPresContext, cellFrame, rowIndex);        nsVoidArray cells;        cells.AppendElement(cellFrame);        InsertCells(*aPresContext, cells, rowIndex, colIndex - 1);        // invalidate the column widths and generate a reflow command        InvalidateColumnWidths();         AddTableDirtyReflowCommand(aPresContext, this);      }    }  }  NS_IF_RELEASE(frameType);}