     /**
      *  @private
      */
+    override public function get enabled():Boolean
+    {
+        if (textView)
+            return textView.enabled;
+        
+        return super.enabled;
+    }
+
+    /**
+     *  @private
+     */
     override public function set enabled(value:Boolean):void
     {
         if (value == enabled)
             return;
-        
+
+        // This deviates from the standard setter pattern because enabled
+        // is a property of this component.  We don't have to store enabled in
+        // textViewProperties when the textView doesn't exist.
+                
+        if (textView)
+        {
+            textView.enabled = value;
+            textViewProperties = BitFlagUtil.update(
+                uint(textViewProperties), ENABLED_PROPERTY_FLAG, true);
+        }
+
         super.enabled = value;
         invalidateSkinState();
 

    /**
     *  @private
     */
    private static const HEIGHT_IN_LINES_PROPERTY_FLAG:uint = 1 << 4;
    
    /**
     *  @private
     */
    private static const IME_MODE_PROPERTY_FLAG:uint = 1 << 5;
    
    /**
     *  @private
     */
    private static const MAX_CHARS_PROPERTY_FLAG:uint = 1 << 6;
       
    /**
     *  @private
     */
    private static const MAX_WIDTH_PROPERTY_FLAG:uint = 1 << 7;
    
    /**
     *  @private
     */
    private static const RESTRICT_PROPERTY_FLAG:uint = 1 << 8;

    /**
     *  @private
     */
    private static const SELECTABLE_PROPERTY_FLAG:uint = 1 << 9;

    /**
     *  @private
     */
    private static const SELECTION_VISIBILITY_PROPERTY_FLAG:uint = 1 << 10;

    /**
     *  @private
     */
    private static const TEXT_PROPERTY_FLAG:uint = 1 << 11;

    /**
     *  @private
     */
    private static const WIDTH_IN_CHARS_PROPERTY_FLAG:uint = 1 << 12;

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


        if (BitFlagUtil.isSet(uint(textViewProperties), EDITABLE_PROPERTY_FLAG))
            newTextViewProperties.editable = textView.editable;

        // enabled is special and is stored in the super class rather than in
        // textViewProperties.  And if it changes, need to update the skin.
        if (BitFlagUtil.isSet(uint(textViewProperties), ENABLED_PROPERTY_FLAG))
        {
            if (super.enabled != textView.enabled)
            {
                super.enabled = textView.enabled;
                invalidateSkinState();
            }
        }

        if (BitFlagUtil.isSet(uint(textViewProperties), 
            HEIGHT_IN_LINES_PROPERTY_FLAG))
