             if (event.relatedObject != this)
             {
                 var indices:Array = selectedIndices;
+				
+				// clear the selection, otherwise we'll be adjusting it on every element being removed
+				clearSelected(false);
+				
                 indices.sort(Array.NUMERIC);
                 var n:int = indices.length;
                 for (var i:int = n - 1; i >= 0; i--)

		lastDragEvent = event;
		
        if (enabled && iteratorValid && 
			(event.dragSource.hasFormat("items") || event.dragSource.hasFormat("orderedItems")))
        {
            DragManager.showFeedback(event.ctrlKey ? DragManager.COPY : DragManager.MOVE);
            showDropFeedback(event);

		dragSource.addHandler(copySelectedItems, "items");
		
		// The Spark drag drop data format
		dragSource.addHandler(copySelectedItemsForDragDrop, "itemsByIndex");
		
		// Calculate the index of the focus item within the vector
		// of ordered items returned for the "itemsByIndex" format.
		var caretIndex:int = 0;
		var draggedIndices:Array = selectedIndices;
		var count:int = draggedIndices.length;
