         
         errorStringChanged = true;
         invalidateProperties();
+    }
+    
+    //----------------------------------
+    //  mouseEnabled
+    //----------------------------------
+
+    private var _explicitMouseEnabled:Boolean = true;
+
+    /**
+     *  @private
+     */
+    override public function set mouseEnabled(value:Boolean):void
+    {
+        if (enabled)
+            super.mouseEnabled = value;
+        _explicitMouseEnabled = value;
+    }
+    
+    //----------------------------------
+    //  mouseChildren
+    //----------------------------------
+
+    private var _explicitMouseChildren:Boolean = true;
+
+    /**
+     *  @private
+     */
+    override public function set mouseChildren(value:Boolean):void
+    {
+        if (enabled)
+            super.mouseChildren = value;
+        _explicitMouseChildren = value;
     }
     
     //--------------------------------------------------------------------------

    //
    //--------------------------------------------------------------------------

    /**
     *  The state to be used when matching CSS pseudo-selectors. This override
     *  returns the current skin state instead of the component state.

        return getCurrentSkinState();
    }

    //----------------------------------
    //  enabled
    //----------------------------------

    /**
     *  @private
     */
    override public function set enabled(value:Boolean):void
    {
        super.enabled = value;
        invalidateSkinState();

        // If enabled, reset the mouseChildren, mouseEnabled to the previously
        // set explicit value, otherwise disable mouse interaction.
        super.mouseChildren = value ? _explicitMouseChildren : false;
        super.mouseEnabled  = value ? _explicitMouseEnabled  : false; 
    }

    //----------------------------------
    //  errorString
    //----------------------------------

    /**
     *  @private
     */
