     /**
      *  @private
      */
+    override public function invalidateSize():void
+    {
+        super.invalidateSize();
+        layoutInvalidateSizeFlag = true;
+    }
+
+    /**
+     *  @private
+     */
+    override public function invalidateDisplayList():void
+    {
+        super.invalidateDisplayList();
+        layoutInvalidateDisplayListFlag = true;
+    }
+    
+    /**
+     *  @private
+     */
     override protected function measure():void
     {
         super.measure();
         
-        if (_layout)
+        if (_layout && layoutInvalidateSizeFlag)
+        {
+            layoutInvalidateSizeFlag = false;
             _layout.measure();
-    }
-    
+        }
+    }
+
     /**
      *  @private
      */

        
        super.updateDisplayList(unscaledWidth, unscaledHeight);

        if (autoLayout && _layout)
            _layout.updateDisplayList(unscaledWidth, unscaledHeight);
            
        if (_layout)
            _layout.updateScrollRect(unscaledWidth, unscaledHeight);
            
    }
    
    //----------------------------------

    {
        // TODO!!! Optimize
        // TODO!!! Need to recalculate the elements
        // Call super, so that we don't invalidate the layout
        super.invalidateDisplayList();
    }
}

