From c5a36e5f7d90fb8921ec8bb33da1d0758ea063ce Mon Sep 17 00:00:00 2001 From: "Vassiliy.Kudryashov" Date: Fri, 27 Mar 2015 23:09:36 +0300 Subject: [PATCH] memory leak --- .../openapi/wm/impl/IdeFrameImpl.java | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/IdeFrameImpl.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/IdeFrameImpl.java index 9d80e5a5746c..7ad38981e81e 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/IdeFrameImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/IdeFrameImpl.java @@ -86,6 +86,7 @@ public class IdeFrameImpl extends JFrame implements IdeFrameEx, DataProvider { private IdeRootPane myRootPane; private final BalloonLayout myBalloonLayout; private IdeFrameDecorator myFrameDecorator; + private PropertyChangeListener myWindowsBorderUpdater = null; private boolean myRestoreFullScreen; public IdeFrameImpl(ApplicationInfoEx applicationInfoEx, @@ -127,13 +128,15 @@ public class IdeFrameImpl extends JFrame implements IdeFrameEx, DataProvider { updateBorder(); } }); - - Toolkit.getDefaultToolkit().addPropertyChangeListener("win.xpstyle.themeActive", new PropertyChangeListener() { - @Override - public void propertyChange(@NotNull PropertyChangeEvent evt) { - updateBorder(); - } - }); + if (SystemInfo.isWindows) { + myWindowsBorderUpdater = new PropertyChangeListener() { + @Override + public void propertyChange(@NotNull PropertyChangeEvent evt) { + updateBorder(); + } + }; + Toolkit.getDefaultToolkit().addPropertyChangeListener("win.xpstyle.themeActive", myWindowsBorderUpdater); + } IdeMenuBar.installAppMenuIfNeeded(this); @@ -472,6 +475,9 @@ public class IdeFrameImpl extends JFrame implements IdeFrameEx, DataProvider { Disposer.dispose(myFrameDecorator); myFrameDecorator = null; } + if (myWindowsBorderUpdater != null) { + Toolkit.getDefaultToolkit().removePropertyChangeListener("win.xpstyle.themeActive", myWindowsBorderUpdater); + } FocusTrackback.release(this);