             return;
         
         mouseCaptured = false;
+        
+        // If the mouseDownSelectTimer is still running, 
+        // we don't want to ever go in to the down state in this case, so stop it
+        if (mouseDownSelectTimer && mouseDownSelectTimer.running)
+            stopSelectButtonAfterDelayTimer();
     }
     
     /**

    
    /**
     *  @private
     *  Keeps track of whether rollover/rollout events were added
     * 
     *  We need to be careful about calling add/remove event listener
     *  in ItemRenderer because of the reference counting going on in 
     *  GroupBase.  We don't have the same issues here in ButtonBase, but 
     *  it seems safer and more consistent to follow the same pattern.
     */
    private var rolloverEventsAdded:Boolean = false;
    
    /**
     *  @private
     *  Adds or removes handlers for rollover/rollout depending on 
     *  if inputMode == mouse or not.
     */
    private function addOrRemoveRollOverRollOutHandlers():void
    {
        if (getStyle("inputMode") == "mouse")
        {
            if (!rolloverEventsAdded)
            {
                rolloverEventsAdded = true;
                addEventListener(MouseEvent.ROLL_OVER, mouseEventHandler);
                addEventListener(MouseEvent.ROLL_OUT, mouseEventHandler);
            }
        }
        else
        {
            if (rolloverEventsAdded)
            {
                rolloverEventsAdded = false;
                removeEventListener(MouseEvent.ROLL_OVER, mouseEventHandler);
                removeEventListener(MouseEvent.ROLL_OUT, mouseEventHandler);
            }
        }
    }
    
    /**
     *  @private
     *  This method adds the systemManager_mouseUpHandler as an event listener to
     *  the stage and the systemManager so that it gets called even if mouse events
     *  are dispatched outside of the button. This is needed for example when the

                // was captured before.
                if (event.target == this)
                {
                    hovered = true;
                    
                    if (mouseCaptured)
                    {
