         
         cellHeights[index] = value;
         
+        // If new height is equal to maxCellHeight, it doesn't change
+        // so just return.
+        if (value == maxCellHeight)
+            return false;
+        
+        // If new height is greater than maxCellHeight, the new height 
+        // is the new maxCellHeight.
+        if (value > maxCellHeight)
+        {
+            maxCellHeight = value;
+            return true;
+        }
+        
+        // If new height is less than maxCellHeight, we need to check if
+        // the maxCellHeight has changed.
         return updateMaxHeight();
     }
     

     */
    public function moveColumns(fromCol:int, toCol:int, count:int):void
    {
        GridDimensions.insertValuesToVector(cellHeights, toCol, cellHeights.splice(fromCol, count));
    }
    
    /**

     */
    private function updateMaxHeight():Boolean
    {
        var max:Number = 0;
        for each (var cellHeight:Number in cellHeights)
        {
            if (cellHeight > max)
                max = cellHeight;
        }
        
        const changed:Boolean = maxCellHeight != max;
        maxCellHeight = max;
