         
         if (!event.isDefaultPrevented())
         {
-            selectedIndex = userProposedSelectedIndex;  
+            // Even if the dropDown was programmatically closed, assume the selection 
+            // changed as a result of a previous user interaction
+            setSelectedIndex(userProposedSelectedIndex, true);  
         }
         else
         {

                if (isDropDownOpen)
                    changeHighlightedSelection(matchingIndex);
                else
                    selectedIndex = matchingIndex; 
                
                return true;
            }

                proposedNewIndex = Math.min(proposedNewIndex, maxIndex);
                
                if (proposedNewIndex >= 0)
                    setSelectedIndex(proposedNewIndex, true);
            }
        }
        else
