             
             if (dropDownController.isOpen)
             {   
-                proposedNewIndex = layout.getNavigationDestinationIndex(proposedSelectedIndex, navigationUnit, arrowKeysWrapFocus);
+                proposedNewIndex = layout.getNavigationDestinationIndex(userProposedSelectedIndex, navigationUnit, arrowKeysWrapFocus);
                 
                 if (proposedNewIndex != -1)
                 {
-                    itemSelected(proposedSelectedIndex, false);
-                    proposedSelectedIndex = proposedNewIndex;
-                    itemSelected(proposedSelectedIndex, true);
-                    ensureIndexIsVisible(proposedSelectedIndex);
+                    // Store the selection in userProposedSelectedIndex because we 
+                    // don't want to update selectedIndex until the dropdown closes
+                    itemSelected(userProposedSelectedIndex, false);
+                    userProposedSelectedIndex = proposedNewIndex;
+                    itemSelected(userProposedSelectedIndex, true);
+                    ensureIndexIsVisible(userProposedSelectedIndex);
                 }
             }
             else if (dataProvider)

    //--------------------------------------------------------------------------
    
    private var labelChanged:Boolean = false;
    mx_internal var proposedSelectedIndex:Number = -1;
    mx_internal static var PAGE_SIZE:int = 5;
    
    //--------------------------------------------------------------------------

import flash.events.FocusEvent;
import flash.events.KeyboardEvent;
import flash.events.MouseEvent;

import mx.collections.IList;
import mx.core.mx_internal;
