         {
             // Don't commit the selection immediately, but wait to see if the user
             // is actually dragging. If they don't drag, then commit the selection
-            if (isItemIndexSelected(newIndex))
+            if (isItemIndexSelected(newIndex) || (getStyle("inputMode") == "touch" && scroller.viewport.clipAndEnableScrolling))
             {
                 pendingSelectionOnMouseUp = true;
                 pendingSelectionShiftKey = event.shiftKey;
                 pendingSelectionCtrlKey = event.ctrlKey;
+                
+                if (getStyle("inputMode") == "touch" && scroller.viewport.clipAndEnableScrolling)
+                {
+                    if (!isItemIndexSelected(newIndex))
+                    {
+                        // visually select the item here
+                        selectMouseDownItemAfterDelay(150);
+                        
+                        // FIXME (rfrishbe): Need to also deselect the old item
+                    }
+                }
             }
             else
             {

        mouseDownPoint = event.target.localToGlobal(new Point(event.localX, event.localY));
        mouseDownIndex = newIndex;

        var listenForDrag:Boolean = (dragEnabled && selectedIndices && this.selectedIndices.indexOf(newIndex) != -1);
        // Handle any drag gestures that may have been started
        if (listenForDrag)
        {

        }
    }
    
    private var mouseDownCancelledFromScroll:Boolean = false;
    
    private function removeMouseHandlersForDragStart():void
    {
        // If dragging failed, but we had a pending selection, commit it here
        if (pendingSelectionOnMouseUp && !DragManager.isDragging && !mouseDownCancelledFromScroll)
        {
            if (allowMultipleSelection)
            {
                setSelectedIndices(calculateSelectedIndices(mouseDownIndex, pendingSelectionShiftKey, pendingSelectionCtrlKey), true);
            }
            else if (getStyle("inputMode") == "touch" && selectedIndex == NO_SELECTION)
            {
                setSelectedIndex(mouseDownIndex, true);
            }
            else
            {
