Regression: Menus are broken on Mac OSX
Revert: 8158325: [macosx] Memory leak in com.apple.laf.ScreenMenu Reviewed-by: azvegint, alexsch
diff --git a/src/macosx/classes/com/apple/laf/ScreenMenu.java b/src/macosx/classes/com/apple/laf/ScreenMenu.java
index bc8c0cc..8739340 100644
--- a/src/macosx/classes/com/apple/laf/ScreenMenu.java
+++ b/src/macosx/classes/com/apple/laf/ScreenMenu.java
@@ -109,7 +109,6 @@
         final Component[] items = fInvoker.getMenuComponents();
         if (needsUpdate(items, childHashArray)) {
             removeAll();
-            fItems.clear();
             if (count <= 0) return;
 
             childHashArray = new int[count];
@@ -233,7 +232,7 @@
         synchronized (getTreeLock()) {
             super.addNotify();
             if (fModelPtr == 0) {
-                fInvoker.getPopupMenu().addContainerListener(this);
+                fInvoker.addContainerListener(this);
                 fInvoker.addComponentListener(this);
                 fPropertyListener = new ScreenMenuPropertyListener(this);
                 fInvoker.addPropertyChangeListener(fPropertyListener);
@@ -267,7 +266,7 @@
             if (fModelPtr != 0) {
                 removeMenuListeners(fModelPtr);
                 fModelPtr = 0;
-                fInvoker.getPopupMenu().removeContainerListener(this);
+                fInvoker.removeContainerListener(this);
                 fInvoker.removeComponentListener(this);
                 fInvoker.removePropertyChangeListener(fPropertyListener);
             }
@@ -288,10 +287,11 @@
     @Override
     public void componentRemoved(final ContainerEvent e) {
         final Component child = e.getChild();
-        final MenuItem sm = fItems.remove(child);
+        final MenuItem sm = fItems.get(child);
         if (sm == null) return;
 
         remove(sm);
+        fItems.remove(sm);
     }
 
     /**