     }
     
     //----------------------------------
-    //  horizontal,verticalScrollPosition
+    //  horizontalScrollPosition
     //----------------------------------
 		
-
+    private var scrollPositionChanged:Boolean = false;
     private var _horizontalScrollPosition:Number = 0;
+    
+    [Bindable]
+    [Inspectable(category="General")]
+    
+    public function get horizontalScrollPosition():Number 
+    {
+        return _horizontalScrollPosition;
+    }
+    
+    public function set horizontalScrollPosition(value:Number):void 
+    {
+        if (value == _horizontalScrollPosition) 
+            return;
+    
+        _horizontalScrollPosition = value;
+        scrollPositionChanged = true;
+        invalidateProperties();
+    }
+    
+
+    //----------------------------------
+    //  verticalScrollPosition
+    //----------------------------------
+
     private var _verticalScrollPosition:Number = 0;
-
-    private function getScrollRect():Rectangle {
-        var r:Rectangle = scrollRect;
-        return (r == null) ? new Rectangle(0,0,width,height) : r;
-    }
-
-    public function get horizontalScrollPosition():Number {
-            return _horizontalScrollPosition;
-    }
     
     [Bindable]
-    public function set horizontalScrollPosition(value:Number):void {
-        _horizontalScrollPosition = value;
-        var r:Rectangle = getScrollRect(); 
-        r.x = _horizontalScrollPosition; 
-        scrollRect = r;
-    }
-    
-    public function get verticalScrollPosition():Number {
-            return _verticalScrollPosition;
-    }
-    
-    [Bindable]
-    public function set verticalScrollPosition(value:Number):void {
+    [Inspectable(category="General")]    
+
+    public function get verticalScrollPosition():Number 
+    {
+        return _verticalScrollPosition;
+    }
+    
+    public function set verticalScrollPosition(value:Number):void 
+    {
+        if (value == _verticalScrollPosition)
+        	return;
+        	
         _verticalScrollPosition = value;
-        var r:Rectangle = getScrollRect();
-        r.y = _verticalScrollPosition; 
-        scrollRect = r;
+        scrollPositionChanged = true;
+        invalidateProperties();
     }
     
     

    [Bindable] public var contentHeight:Number;
	

        //--------------------------------------------------------------------------
    //
    //  Properties: Overriden Focus management
    //

import flex.events.ItemExistenceChangedEvent;
import flex.geom.Transform;
import flex.graphics.Graphic;
import flex.graphics.IAssignableDisplayObjectElement;
import flex.graphics.IDisplayObjectElement;
import flex.graphics.IGraphicElement;
import flex.graphics.IGraphicElementHost;
import flex.graphics.MaskType;
import flex.graphics.TransformUtil;
import flex.graphics.graphicsClasses.GraphicElement;
import flex.intf.ILayout;
import flex.intf.ILayoutItem;
import flex.layout.BasicLayout;
import flex.layout.LayoutItemFactory;

import mx.collections.ICollectionView;
import mx.collections.IList;
import mx.collections.ListCollectionView;
import mx.controls.Label;
import mx.core.IDataRenderer;
import mx.core.IDeferredInstance;
import mx.core.IFactory;
import mx.core.UIComponent;
import mx.events.CollectionEvent;
import mx.events.PropertyChangeEvent;
import mx.events.PropertyChangeEventKind;
