From 24cbb1e140d2f66321ed19fa7d716217d2dd8cc4 Mon Sep 17 00:00:00 2001 From: Aleksey Pivovarov Date: Tue, 27 Jan 2015 14:21:07 +0300 Subject: [PATCH] IDEA-122792: do not schedule toolbar refresh for partially initialized target component this is better fix for 193b3ae if target component is not shown yet, ModalityState.stateForComponent() will return NON_MODAL, causing memory leak --- .../openapi/actionSystem/impl/ActionToolbarImpl.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionToolbarImpl.java b/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionToolbarImpl.java index 453681b96b1e..66f023ec037d 100644 --- a/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionToolbarImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionToolbarImpl.java @@ -45,6 +45,7 @@ import com.intellij.ui.switcher.SwitchTarget; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.ui.JBUI; import com.intellij.util.ui.UIUtil; +import com.intellij.util.ui.update.UiNotifyConnector; import org.jetbrains.annotations.NotNull; import javax.swing.*; @@ -921,13 +922,13 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar { public void setTargetComponent(final JComponent component) { myTargetComponent = component; - if (myTargetComponent != null && myTargetComponent.isVisible()) { - ApplicationManager.getApplication().invokeLater(new DumbAwareRunnable() { + if (myTargetComponent != null) { + UiNotifyConnector.doWhenFirstShown(myTargetComponent, new DumbAwareRunnable() { @Override public void run() { myUpdater.updateActions(false, false); } - }, ModalityState.stateForComponent(myTargetComponent)); + }); } }