 	
 	/**
 	 *  @private
+	 *  When faking a mouseDown after a mouse up has occurred, if we get a rollOut
+	 *  event, we don't want to immediately set hovered = false so we can maintain 
+	 *  the down state until the mouseUpDeselectTimer is finished.  So we keep track
+	 *  that a rollOut event occurred and honor it later.
+	 */
+	private var rollOutWhileFakingDownState:Boolean = false;
+	
+	/**
+	 *  @private
 	 *  When there is a touchDelay and the touch interaction is complete (user mouseUp) before 
 	 *  the touchDelay is over, usually the component goes in to the down state for a period 
 	 *  of time to ensure the user gets visual feedback on this operation. 

        if (event.target == this)
            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 (mouseEvent.buttonDown && !mouseCaptured)
                    return;
                hovered = true;
				rollOutWhileFakingDownState = false;
                break;
            }

            case MouseEvent.ROLL_OUT:
            {
				if (mouseUpDeselectTimer && mouseUpDeselectTimer.running)
				{
					// We're trying to flash the down state for longer, 
					// so let's not leave the hovered state just yet
					rollOutWhileFakingDownState = true;
				}
				else
				{
					hovered = false;
				}
                break;
            }
            
