             return super.getCurrentSkinState() + "AndSelected";
     }
 
+    //--------------------------------------------------------------------------
+    //
+    //  Event handling
+    //
+    //--------------------------------------------------------------------------
+
     /**
      *  @private
      */ 
-    override protected function onClick(event:MouseEvent):void
-    {
-        super.onClick(event);
-
-		if (selected && !allowDeselection)
-			return;
-
+    override protected function clickHandler(event:MouseEvent):void
+    {
+        super.clickHandler(event);
         selected = !selected;
         dispatchEvent(new Event(Event.CHANGE));
         event.updateAfterEvent();
     }
 }
 
-}+}

    public function FxToggleButton()
    {
        super();

        flags = BitFlagUtil.update(flags, allowDeselectionFlag, true);
    }
    
    // -----------------------------------------------------------------------
    //
    // Public properties defining the state of the ToggleButton.
    //
    // -----------------------------------------------------------------------

    /**
     *  @private
     */    
    protected static const selectedFlag:uint = FxButton.lastFlag << 1;
    
    /**
     *  @private
     */    
    protected static const showFocusIndicatorFlag:uint = FxButton.lastFlag << 2;

    /**
     *  @private
     */    
    protected static const allowDeselectionFlag:uint = FxButton.lastFlag << 4;

    /**
     *  @private
     */    
    protected static const lastFlag:uint = allowDeselectionFlag;
    
    /**
     *  <code>true</code> if the button can be set to
	 *  <code>selected = false</code>
     *  
     *  @langversion 3.0
     *  @playerversion Flash 10
     *  @playerversion AIR 1.5
     *  @productversion Flex 4
     */    
    public function get allowDeselection():Boolean
    {
        return BitFlagUtil.isSet(flags, allowDeselectionFlag);
    }
    
    /**
     *  @private
     */    
    public function set allowDeselection(value:Boolean):void
    {
        if (BitFlagUtil.isSet(flags, allowDeselectionFlag) == value)
            return;
         
        flags = BitFlagUtil.update(flags, allowDeselectionFlag, value);
    }

    [Bindable]
    

import mx.core.ISelectableRenderer;
import mx.core.mx_internal;
import mx.events.FlexEvent;

/**
 *  Dispatched when the <code>selected</code> property 
