             invalidateDisplayObjectOrdering();            
     }
 
+    /**
+     * @private
+     */  
+    override mx_internal function set hasMouseListeners(value:Boolean):void
+    {
+        if (mouseOpaque)
+            redrawRequested = true;
+        super.hasMouseListeners = value;
+    }  
+
+    /**
+     *  @private
+     */
+    override public function set width(value:Number):void
+    {
+        if (_width != value)
+        {
+            if (mouseOpaque && hasMouseListeners)
+            {        
+                // Re-render our mouse event fill if necessary.
+                redrawRequested = true;
+                super.$invalidateDisplayList();
+            }
+        }
+        super.width = value;
+    }
+    
+    /**
+     *  @private
+     */
+    override public function set height(value:Number):void
+    {
+        if (_height != value)
+        {
+            if (mouseOpaque && hasMouseListeners)
+            {        
+                // Re-render our mouse event fill if necessary.
+                redrawRequested = true;
+                super.$invalidateDisplayList();
+            }
+        }
+        super.height = value;
+    }
+    
 	//--------------------------------------------------------------------------
     //
     //  Properties

        	   !isNaN(scaleGridRight) &&
        	   !isNaN(scaleGridBottom);
    }

    //--------------------------------------------------------------------------
    //
    //  Overridden methods: EventDispatcher
    //
    //--------------------------------------------------------------------------

    /**
     *  @private
     *  We render a transparent background fill by default when we have mouse
     *  listeners.
     */
    override public function addEventListener(type:String, listener:Function,
        useCapture:Boolean = false, priority:int = 0,
        useWeakReference:Boolean = false):void
    {
        super.addEventListener(type, listener, useCapture, priority, 
            useWeakReference);

        if (_mouseOpaque &&
            type == MouseEvent.CLICK ||
            type == MouseEvent.DOUBLE_CLICK ||
            type == MouseEvent.MOUSE_DOWN ||
            type == MouseEvent.MOUSE_MOVE ||
            type == MouseEvent.MOUSE_OVER ||
            type == MouseEvent.MOUSE_OUT ||
            type == MouseEvent.ROLL_OUT ||
            type == MouseEvent.ROLL_OVER ||
            type == MouseEvent.MOUSE_UP ||
            type == MouseEvent.MOUSE_WHEEL)
        {
            if (mouseEventReferenceCount++ == 0)
                invalidateDisplayList();
        }
    }

    /**
     *  @private
     *  We no longer render our default transparent background fill when we have 
     *  no mouse listeners.
     */
    override public function removeEventListener( type:String, listener:Function,
        useCapture:Boolean = false):void
    {
        super.removeEventListener(type, listener, useCapture);

        if (_mouseOpaque && 
            type == MouseEvent.CLICK ||
            type == MouseEvent.DOUBLE_CLICK ||
            type == MouseEvent.MOUSE_DOWN ||
            type == MouseEvent.MOUSE_MOVE ||
            type == MouseEvent.MOUSE_OVER ||
            type == MouseEvent.MOUSE_OUT ||
            type == MouseEvent.ROLL_OUT ||
            type == MouseEvent.ROLL_OVER ||
            type == MouseEvent.MOUSE_UP ||
            type == MouseEvent.MOUSE_WHEEL)
        {
            if (--mouseEventReferenceCount == 0)
                invalidateDisplayList();
        }
    }
    
    /**
     *  @private
     *  Automation requires a version of addEventListener that does not
     *  affect behavior of the underlying component.
     */  
    mx_internal function $addEventListener(
                            type:String, listener:Function,
                            useCapture:Boolean = false,
                            priority:int = 0,
                            useWeakReference:Boolean = false):void
    {
        super.addEventListener(type, listener, useCapture,
                               priority, useWeakReference);
    }

    /**
     *  @private
     *  Automation requires a version of removeEventListener that does not
     *  affect behavior of the underlying component.
     */  
    mx_internal function $removeEventListener(
                              type:String, listener:Function,
                              useCapture:Boolean = false):void
    {
        super.removeEventListener(type, listener, useCapture);
    }
      
    //--------------------------------------------------------------------------
    //

        
        invalidateProperties();
    }
        
    //----------------------------------
    //  mxmlContent
    //----------------------------------
