 
         mouseDownCancelledFromScroll = false;
         
+        var oldMouseDownIndex:int;
+        
         if (!allowMultipleSelection)
         {
             // Single selection case, set the selectedIndex 

            
            // Check to see if we're deselecting the currently selected item because if we're 
            // possibly dragging we don't want to de-select this immediately.  Similarly, if we 
            // are in touch inputMode, we need to delay the item renderer highlight for a bit 
            if ((event.ctrlKey && selectedIndex == newIndex) || getStyle("inputMode") == "touch")
            {
                pendingSelectionOnMouseUp = true;
                pendingSelectionCtrlKey = event.ctrlKey;
                pendingSelectionShiftKey = event.shiftKey;
                
                if (getStyle("inputMode") == "touch")
                {
                    if (selectedIndex != newIndex)
                    {
                        // visually select the item here
                        startSelectButtonAfterDelayTimer();
                    }
                }
            }

import mx.core.IFlexDisplayObject;
import mx.core.IUID;
import mx.core.IVisualElement;
import mx.core.InteractionMode;
import mx.core.mx_internal;
import mx.events.CollectionEvent;
import mx.events.CollectionEventKind;
import mx.events.DragEvent;
import mx.events.FlexEvent;
import mx.events.SandboxMouseEvent;
import mx.events.TouchInteractionEvent;
import mx.managers.DragManager;
import mx.managers.IFocusManagerComponent;
import mx.utils.ObjectUtil;
