             _proposedSelectedIndex = maxIndex;
         if (requiresSelection && _proposedSelectedIndex == NO_SELECTION && 
             dataProvider && dataProvider.length > 0)
+        {
+            _proposedSelectedIndex = NO_PROPOSED_SELECTION;
             return false;
+        }
         
         // Step 2: dispatch the "selectionChanging" event. If preventDefault() is called
         // on this event, the selection change will be cancelled.

            // or should we preserve selectedIndex
            if (selectedIndex >= 0 && dataProvider && selectedIndex < dataProvider.length)
               itemSelected(selectedIndex, true);
            else
               selectedIndex = -1;
        }

        doingWholesaleChanges = true;
        
        super.dataProvider = value;
        invalidateProperties();
        
        if (dataProvider)
            dataProvider.addEventListener(CollectionEvent.COLLECTION_CHANGE, collectionChangeHandler);
