From 265d54fd9ec1702831df5a12c774f4f6bcc7aff1 Mon Sep 17 00:00:00 2001 From: "Gregory.Shrago" Date: Sun, 18 Dec 2016 03:37:05 +0300 Subject: [PATCH] mem leaks: cleanup rootPane (Cancel action leaked via javax.swing.KeyboardManager) 2 --- .../platform-api/src/com/intellij/openapi/ui/DialogWrapper.java | 2 +- .../intellij/openapi/ui/impl/GlassPaneDialogWrapperPeer.java | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/platform/platform-api/src/com/intellij/openapi/ui/DialogWrapper.java b/platform/platform-api/src/com/intellij/openapi/ui/DialogWrapper.java index 5d21ad4102d1..9822661c6c48 100644 --- a/platform/platform-api/src/com/intellij/openapi/ui/DialogWrapper.java +++ b/platform/platform-api/src/com/intellij/openapi/ui/DialogWrapper.java @@ -967,7 +967,7 @@ public abstract class DialogWrapper { }); } - private static void unregisterKeyboardActions(@Nullable JRootPane rootPane) { + public static void unregisterKeyboardActions(@Nullable Component rootPane) { int[] flags = {JComponent.WHEN_FOCUSED, JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, JComponent.WHEN_IN_FOCUSED_WINDOW}; for (JComponent eachComp : UIUtil.uiTraverser(rootPane).traverse().filter(JComponent.class)) { ActionMap actionMap = eachComp.getActionMap(); diff --git a/platform/platform-impl/src/com/intellij/openapi/ui/impl/GlassPaneDialogWrapperPeer.java b/platform/platform-impl/src/com/intellij/openapi/ui/impl/GlassPaneDialogWrapperPeer.java index fc22282153dc..cbea6dbd2ac4 100644 --- a/platform/platform-impl/src/com/intellij/openapi/ui/impl/GlassPaneDialogWrapperPeer.java +++ b/platform/platform-impl/src/com/intellij/openapi/ui/impl/GlassPaneDialogWrapperPeer.java @@ -580,6 +580,7 @@ public class GlassPaneDialogWrapperPeer extends DialogWrapperPeer implements Foc public void dispose() { setVisible(false); remove(getContentPane()); + DialogWrapper.unregisterKeyboardActions(myWrapperPane); myRootPane = null; }