     
     private function removeMouseHandlersForDragStart():void
     {
+        // If dragging failed, but we had a pending selection, commit it here
+        if (pendingSelectionOnMouseUp && !DragManager.isDragging)
+        {
+            selectedIndices = calculateSelectedIndicesInterval(mouseDownIndex, pendingSelectionShiftKey, pendingSelectionCtrlKey);
+            pendingSelectionOnMouseUp = false;
+        }
+        
         mouseDownPoint = null;
         mouseDownIndex = -1;
         

     *  Taking into account which modifier keys were clicked, the new
     *  selectedIndices interval is calculated. 
     */
    private function calculateSelectedIndicesInterval(renderer:IVisualElement, shiftKey:Boolean, ctrlKey:Boolean):Vector.<int>
    {
        var i:int; 
        var interval:Vector.<int> = new Vector.<int>();  
        var index:Number = dataGroup.getElementIndex(renderer); 
        
        if (!shiftKey)
        {

        }
        else 
        {
            // 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 (dragEnabled && isItemIndexSelected(newIndex))
            {
                pendingSelectionOnMouseUp = true;
                pendingSelectionShiftKey = event.shiftKey;
                pendingSelectionCtrlKey = event.ctrlKey;
            }
            else
            {
                selectedIndices = calculateSelectedIndicesInterval(newIndex, event.shiftKey, event.ctrlKey);
            }
        }
        
        // Handle any drag gestures that may have been started
        if (!dragEnabled)
            return;
        
        mouseDownPoint = event.target.localToGlobal(new Point(event.localX, event.localY));
        mouseDownIndex = newIndex;
        
        // Listen for MOUSE_MOVE on both the list and the sandboxRoot.
        // The user may have cliked on the item renderer close
