             else if (requireSelection)
                _proposedSelectedIndex = 0;
             else
-               selectedIndex = -1;
+               setSelectedIndex(-1, false);
         }
             
         if (requireSelectionChanged)

            selectedIndexAdjusted = false;
            if (!changedSelection)
            {
                e = new IndexChangeEvent(IndexChangeEvent.CHANGE);
                e.oldIndex = selectedIndex;
                e.newIndex = selectedIndex;
                dispatchEvent(e);
            }
        }
        

        if (dispatchChangedEvents)
        {
            // Dispatch the change event
            if (dispatchChangeAfterSelection)
            {
                e = new IndexChangeEvent(IndexChangeEvent.CHANGE);
                e.oldIndex = oldSelectedIndex;
                e.newIndex = _selectedIndex;
                dispatchEvent(e);
                dispatchChangeAfterSelection = false;
            }
            else
            {
                dispatchEvent(new FlexEvent(FlexEvent.VALUE_COMMIT));
            }
            
            //Dispatch the caretChange event 
            e = new IndexChangeEvent(IndexChangeEvent.CARET_CHANGE); 
            e.oldIndex = oldCaretIndex; 
            e.newIndex = caretIndex; 
            dispatchEvent(e);
        }
        
        return true;
