                 
             case CollectionEventKind.UPDATE:
             {
+                // column may have changed visiblity                
+                const itemsLength:int = event.items.length;
+                var itemsLeft:int = count;
+                var pcEvent:PropertyChangeEvent;
+                
+                for (i = 0; i < itemsLength; i++)
+                {
+                    pcEvent = event.items[i] as PropertyChangeEvent;
+                    if (pcEvent && pcEvent.property == "visible")
+                    {
+                        columns_visibleChangedHandler(pcEvent);
+                        itemsLeft--;
+                    }
+                }
+                
+                // return if all were visible property changes
+                if (itemsLeft == 0)
+                    return;
+                
                 break;
             }
                 

        invalidateDisplayList();        
    } 
    
    //--------------------------------------------------------------------------
    //
    //  Methods

import mx.events.CollectionEvent;
import mx.events.CollectionEventKind;
import mx.events.FlexEvent;
import mx.events.PropertyChangeEvent;
import mx.utils.ObjectUtil;

import spark.components.supportClasses.CellPosition;
