             pt.y += 2;
 
         menu.show(pt.x, pt.y);
+    }
+    
+    /**
+     *  @private
+     *  Removes the root menu from the display list.  This is called only for
+     *  menus created using "createMenu".
+     * 
+     *  MJM private static?
+     */
+    private static function menuHideHandler(event:MenuEvent):void
+    {
+        var menu:Menu = Menu(event.target);
+        if (!event.isDefaultPrevented() && event.menu == menu)
+        {
+            menu.supposedToLoseFocus = true;
+            PopUpManager.removePopUp(menu);
+            menu.removeEventListener(MenuEvent.MENU_HIDE, menuHideHandler);
+        }
     }
 
     /**

{

import flash.display.DisplayObject;
import flash.events.Event;
import flash.events.FocusEvent;
import flash.events.KeyboardEvent;

import mx.core.IFactory;
import mx.core.IFlexDisplayObject;
import mx.core.IUIComponent;
import mx.core.UIComponent;
import mx.core.UIComponentGlobals;
import mx.core.mx_internal;
import mx.events.CollectionEvent;
import mx.events.CollectionEventKind;
import mx.events.FlexEvent;
import mx.events.InterManagerRequest;
import mx.events.MenuEvent;
import mx.managers.IFocusManagerComponent;
import mx.managers.ISystemManager;
import mx.managers.PopUpManager;
import mx.styles.CSSStyleDeclaration;
import mx.styles.ISimpleStyleClient;
import mx.styles.StyleManager;
import mx.styles.StyleProxy;

use namespace mx_internal;

