             itemSelected(oldSelectedIndex, false);
         if (_selectedIndex != NO_SELECTION && _selectedIndex != CUSTOM_SELECTED_ITEM)
             itemSelected(_selectedIndex, true);
-        setCurrentCaretIndex(_selectedIndex); 
+        if (changeCaretOnSelection)
+            setCurrentCaretIndex(_selectedIndex); 
 
         // Step 4: dispatch the "change" event and "caretChange" 
         // events based on the dispatchChangeEvents parameter. Overrides may  

    
    /**
     *  @private
     *  Internal storage for the selectedIndex property.
     */
    mx_internal var _selectedIndex:int = NO_SELECTION;

    mx_internal function dataProviderRefreshed():void
    {
        setSelectedIndex(NO_SELECTION, false);
        // TODO (rfrishbe): probably don't need the setCurrentCaretIndex below
        setCurrentCaretIndex(NO_CARET);
    }
    
