                 // if the user rolls over while holding the mouse button
                 if (mouseEvent.buttonDown && !mouseCaptured)
                     return;
-                
-                // if rolling back over it, turn off transitions
-                if (mouseCaptured)
-                    playTransitions = false;
+				
                 hovered = true;
-                playTransitions = true;
+				rollOutWhileFakingDownState = false;
                 break;
             }
                 
             case MouseEvent.ROLL_OUT:
             {
-                // when rolled out, turn off transitions
-                playTransitions = false;
-                hovered = false;
-                playTransitions = true;
+				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;
             }
                 

                // If someone mouses up on us, then they must be hovered over 
                // us now.
                hovered = true;
                
                if (mouseCaptured)
                {
                    mouseCaptured = false;
                }
                
                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
                    stopSelectRendererAfterDelayTimer();
                    mouseCaptured = true;
                    startDeselectRendererAfterDelayTimer();
                }
                
                break;

            return;
        }
        
		// If faking down state, let's not interrupt it because of a mouseUp somewhere 
		// else on the screen
		if (!(mouseUpDeselectTimer && mouseUpDeselectTimer.running))
			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
