      *  The typicalCellWidth for GridColumns with an explicit width, is just 
      *  the explicit width.  Otherwise an item renderer is created for the column 
      *  and the item renderer's preferred bounds become the typical cell size.   
-     * 
-     *  This method also updates the column width in GridDimensions if the column
-     *  has an explicit width.
 	 */
-	private function updateTypicalCellSizes(width:Number, scrollX:Number, firstVisibleColumnIndex:int):void
+	private function updateVisibleTypicalCellSizes(width:Number, scrollX:Number, firstVisibleColumnIndex:int):void
 	{
 		const gridDimensions:GridDimensions = gridDimensions;
-        
-        // If width isn't specified, then only update requestedColumnCount columns
-        
-        const requestedColumnCount:int = grid.requestedColumnCount;
-        var columnCount:int = gridDimensions.columnCount;
-        if (isNaN(width) && (requestedColumnCount != -1))
-            columnCount = Math.min(columnCount, requestedColumnCount);
-        
-        // Update the GridDimensions typicalCellWidth,Height values as needed.
-        
+        const columnCount:int = gridDimensions.columnCount;
+		const startCellX:Number = gridDimensions.getCellX(0 /* rowIndex */, firstVisibleColumnIndex);
 		const columnGap:int = gridDimensions.columnGap;
-		const startCellX:Number = gridDimensions.getCellX(0 /* rowIndex */, firstVisibleColumnIndex);
-
-		for (var columnIndex:int = firstVisibleColumnIndex; 
-                 (isNaN(width) || (width > 0)) && (columnIndex < columnCount); 
-                 columnIndex++)
+        
+		for (var columnIndex:int = firstVisibleColumnIndex; (width > 0) && (columnIndex < columnCount); columnIndex++)
 		{
             var cellHeight:Number = gridDimensions.getTypicalCellHeight(columnIndex);
 			var cellWidth:Number = gridDimensions.getTypicalCellWidth(columnIndex);

        if (enablePerformanceStatistics)
            startTime = getTimer();        
        
        layoutColumns(horizontalScrollPosition, verticalScrollPosition, NaN /* width */);
        
        var measuredWidth:Number = gridDimensions.getTypicalContentWidth(grid.requestedColumnCount);
        var measuredHeight:Number = gridDimensions.getTypicalContentHeight(grid.requestedRowCount);

    /**
     *  @private
     *  Move the specified element to the free list after hiding it.  Return true if the 
     *  element was added to the free list (freeElements).   Note that we do not remove
     *  the element from its parent.
     */
    private function freeGridElement(element:IVisualElement):Boolean
    {
