     /**
      *  @private 
      */ 
-    override protected function commitCurrentState():void
-    {
-        super.commitCurrentState();
-        
-        commitDisabled(currentState.indexOf("disabled") >= 0);
-    }
-    
-    /**
-     *  @private 
-     */ 
-    protected function commitDisabled(isDisabled:Boolean):void
-    {
-        alpha = isDisabled ? 0.5 : 1;
+    override public function set currentState(value:String):void
+    {
+        var isDisabled:Boolean = currentState && currentState.indexOf("disabled") >= 0;
+        
+        super.currentState = value;
+        
+        if (isDisabled != currentState.indexOf("disabled") >= 0)
+        {
+            enabledChanged = true;
+            invalidateProperties();
+        }
     }
     
     /**
      *  @private 
      */ 
     override protected function createChildren():void
-    {                   
+    {
         labelDisplay = StyleableTextField(createInFontContext(StyleableTextField));
         labelDisplay.styleName = this;
         

            {
                labelWidth = 0;
            }
            labelHeight = Math.min(viewHeight, textHeight);
            
            if (textAlign == "left")

            
            if (textWidth > 0)
            {
                // label width is constrained to left and right edges
                labelWidth = Math.max(viewWidth - layoutPaddingLeft - layoutPaddingRight, 0);
                
                // label height is constrained to available height after icon, padding and gap heights
                labelHeight = Math.max(viewHeight - iconHeight - layoutPaddingTop - layoutPaddingBottom - verticalGap, 0);
                labelHeight = Math.min(labelHeight, textHeight);
            }
            else
            {
