                 // was captured before.
                 if (event.target == this)
                 {
-                    hovered = true;
+                    // only set hovered if we are in mouse inputMode
+                    hovered = (getStyle("inputMode") == "mouse");
                     
                     if (mouseCaptured)
                     {
                         buttonReleased();
                         mouseCaptured = false;
-//                        event.preventDefault();
+                    }
+                    
+                    if (mouseDownSelectTimer && mouseDownSelectTimer.running)
+                    {
+                        // We never even flashed the down state for this click operation.
+                        // There are two possibilities for being here:
+                        //    1) mouseCaptured wasn't set to true (meaning this is the first click)
+                        //    2) mouseCaptured was true (meaning a click operation hadn't finished 
+                        //       and we find ourselves in here again--perhaps it was a doublet tap).
+                        // In either case, let's make sure that down state shows up for a little bit
+                        // before going back to the up state.
+                        
+                        // stop the original timer, put it in mouse down state, then start a new 
+                        // timer to undo the mouse down state
+                        stopSelectButtonAfterDelayTimer();
+                        mouseCaptured = true;
+                        startDeselectButtonAfterDelayTimer();
                     }
                 }
                 break;

    /**
     *  @private
     */
    private function stopTimer():void
    {
        autoRepeatTimer.stop();
        autoRepeatTimer = null;
    }

    /**
     *  This method is called when handling a <code>MouseEvent.MOUSE_UP</code> event
     *  when the user clicks on the button. It is only called when the button

    /**
     *  @private
     */
    private function mouseDownSelectTimer_timerCompleteHandler(event:TimerEvent):void
    {
        mouseCaptured = true;
    }
    
    /**
     *  @private
     */
    private function mouseUpDeselectTimer_timerCompleteHandler(event:TimerEvent):void
    {
        mouseCaptured = false;
    }
    
    /**
     *  @private
     */
    private function labelDisplay_isTruncatedChangedHandler(event:Event):void
    {
        if (_explicitToolTip)
