From b6582ff55285f82d75db03b851787bc9f1f2be15 Mon Sep 17 00:00:00 2001 From: Denis Fokin Date: Mon, 3 Apr 2017 17:33:02 +0300 Subject: Regression: Menus are broken on Mac OSX Revert: 8158325: [macosx] Memory leak in com.apple.laf.ScreenMenu Reviewed-by: azvegint, alexsch --- src/macosx/classes/com/apple/laf/ScreenMenu.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/macosx/classes/com/apple/laf/ScreenMenu.java b/src/macosx/classes/com/apple/laf/ScreenMenu.java index bc8c0cc2f9..8739340848 100644 --- a/src/macosx/classes/com/apple/laf/ScreenMenu.java +++ b/src/macosx/classes/com/apple/laf/ScreenMenu.java @@ -109,7 +109,6 @@ final class ScreenMenu extends Menu final Component[] items = fInvoker.getMenuComponents(); if (needsUpdate(items, childHashArray)) { removeAll(); - fItems.clear(); if (count <= 0) return; childHashArray = new int[count]; @@ -233,7 +232,7 @@ final class ScreenMenu extends Menu 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 @@ final class ScreenMenu extends Menu if (fModelPtr != 0) { removeMenuListeners(fModelPtr); fModelPtr = 0; - fInvoker.getPopupMenu().removeContainerListener(this); + fInvoker.removeContainerListener(this); fInvoker.removeComponentListener(this); fInvoker.removePropertyChangeListener(fPropertyListener); } @@ -288,10 +287,11 @@ final class ScreenMenu extends Menu @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); } /** -- cgit v1.2.3