aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenis Fokin <Denis.Fokin@jetbrains.com>2017-04-03 17:33:02 +0300
committerDenis Fokin <Denis.Fokin@jetbrains.com>2017-04-03 17:33:02 +0300
commitb6582ff55285f82d75db03b851787bc9f1f2be15 (patch)
tree51b80340d02bd6487584cc19e8b6eb944b561ea8
parentb7cf2b13ed5c9aaacebfb037dda32159fbf642a0 (diff)
downloadjdk8u_jdk-b6582ff55285f82d75db03b851787bc9f1f2be15.tar.gz
Regression: Menus are broken on Mac OSXjb8u112-b8u152_1.8u152_1.12
Revert: 8158325: [macosx] Memory leak in com.apple.laf.ScreenMenu Reviewed-by: azvegint, alexsch
-rw-r--r--src/macosx/classes/com/apple/laf/ScreenMenu.java8
1 files 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);
}
/**