         // If we don't have a skin, show focus around the icon.
         super.adjustFocusRect(!currentSkin ? DisplayObject(currentIcon) : this);
     }
+    
+    /**
+     *  @private 
+     *  The state to be used when matching CSS pseudo-selectors. This override
+     *  returns the current button state.
+     */ 
+    override protected function get currentCSSState():String
+    {
+        return getCurrentButtonState();
+    }
 
     //--------------------------------------------------------------------------
     //

        currentIcon = newIcon;
        
        if (defaultIconUsesStates && currentIcon is IStateClient)
        {
            var stateName:String = "";
            
            if (!enabled)
                stateName = selected ? "selectedDisabled" : "disabled";
            else if (phase == ButtonPhase.UP)
                stateName = selected ? "selectedUp" : "up";
            else if (phase == ButtonPhase.OVER)
                stateName = selected ? "selectedOver" : "over";
            else if (phase == ButtonPhase.DOWN)
                stateName = selected ? "selectedDown" : "down";
            
            IStateClient(currentIcon).currentState = stateName;
            if (currentIcon is IInvalidating)
            	IInvalidating(currentIcon).validateNow();
        }

            if (!toggle)
                selected = false;
            toggleChanged = false;
        }  
        
        if (phaseChanged)
        {
            // Ensure all potential pseudo-selectors are reevaluated if 
            // necessary.
            var prevState:String = _currentButtonState;
            if (prevState != getCurrentButtonState())
                stateChanged(prevState, _currentButtonState, false);
            phaseChanged = false;
        }
    }
    
