diff --git a/platform/platform-impl/src/com/intellij/ui/popup/BalloonPopupBuilderImpl.java b/platform/platform-impl/src/com/intellij/ui/popup/BalloonPopupBuilderImpl.java index 456e4710316f..6a059efd7b1f 100644 --- a/platform/platform-impl/src/com/intellij/ui/popup/BalloonPopupBuilderImpl.java +++ b/platform/platform-impl/src/com/intellij/ui/popup/BalloonPopupBuilderImpl.java @@ -18,12 +18,10 @@ import org.jetbrains.annotations.Nullable; import javax.swing.*; import java.awt.*; import java.awt.event.ActionListener; -import java.util.ArrayList; import java.util.List; import java.util.Map; public final class BalloonPopupBuilderImpl implements BalloonBuilder { - private final @Nullable Map> myStorage; private @Nullable Disposable myAnchor; private final JComponent myContent; @@ -62,8 +60,15 @@ public final class BalloonPopupBuilderImpl implements BalloonBuilder { private int myCornerRadius = -1; private boolean myPointerShiftedToStart; + /** + * @deprecated use {@link BalloonPopupBuilderImpl#BalloonPopupBuilderImpl(JComponent)} + */ + @Deprecated public BalloonPopupBuilderImpl(@Nullable Map> storage, final @NotNull JComponent content) { - myStorage = storage; + this(content); + } + + public BalloonPopupBuilderImpl(@NotNull JComponent content) { myContent = content; if (ClientProperty.isTrue(myContent, BalloonImpl.FORCED_NO_SHADOW)) { myShadow = false; @@ -261,22 +266,8 @@ public final class BalloonPopupBuilderImpl implements BalloonBuilder { result.setCornerRadius(myCornerRadius); result.setPointerShiftedToStart(myPointerShiftedToStart); - if (myStorage != null && myAnchor != null) { - List balloons = myStorage.get(myAnchor); - if (balloons == null) { - myStorage.put(myAnchor, balloons = new ArrayList<>()); - Disposer.register(myAnchor, () -> { - List toDispose = myStorage.remove(myAnchor); - if (toDispose != null) { - for (Balloon balloon : toDispose) { - if (!balloon.isDisposed()) { - Disposer.dispose(balloon); - } - } - } - }); - } - balloons.add(result); + if (myAnchor != null) { + Disposer.register(myAnchor, result); result.addListener(new JBPopupListener() { @Override public void onClosed(@NotNull LightweightWindowEvent event) { diff --git a/platform/platform-impl/src/com/intellij/ui/popup/PopupFactoryImpl.java b/platform/platform-impl/src/com/intellij/ui/popup/PopupFactoryImpl.java index 8cc55bcc2ac5..d6ff4249912b 100644 --- a/platform/platform-impl/src/com/intellij/ui/popup/PopupFactoryImpl.java +++ b/platform/platform-impl/src/com/intellij/ui/popup/PopupFactoryImpl.java @@ -5,7 +5,6 @@ import com.intellij.CommonBundle; import com.intellij.ide.IdeEventQueue; import com.intellij.ide.IdeTooltipManager; import com.intellij.internal.inspector.UiInspectorUtil; -import com.intellij.openapi.Disposable; import com.intellij.openapi.actionSystem.*; import com.intellij.openapi.actionSystem.impl.ActionMenu; import com.intellij.openapi.actionSystem.impl.ActionPresentationDecorator; @@ -56,8 +55,6 @@ import java.awt.event.KeyEvent; import java.awt.event.MouseEvent; import java.util.Collections; import java.util.List; -import java.util.Map; -import java.util.WeakHashMap; import java.util.function.Function; public class PopupFactoryImpl extends JBPopupFactory { @@ -79,8 +76,6 @@ public class PopupFactoryImpl extends JBPopupFactory { private static final Logger LOG = Logger.getInstance(PopupFactoryImpl.class); - private final Map> myStorage = new WeakHashMap<>(); - @Override public @NotNull IPopupChooserBuilder createPopupChooserBuilder(@NotNull List list) { LOG.assertTrue(list.isEmpty() || !(list.get(0) instanceof PsiElement) || ApplicationManager.getApplication().isUnitTestMode(), @@ -642,12 +637,12 @@ public class PopupFactoryImpl extends JBPopupFactory { @Override public @NotNull BalloonBuilder createBalloonBuilder(@NotNull JComponent content) { - return new BalloonPopupBuilderImpl(myStorage, content); + return new BalloonPopupBuilderImpl(content); } @Override public @NotNull BalloonBuilder createDialogBalloonBuilder(@NotNull JComponent content, @PopupTitle @Nullable String title) { - final BalloonPopupBuilderImpl builder = new BalloonPopupBuilderImpl(myStorage, content); + final BalloonPopupBuilderImpl builder = new BalloonPopupBuilderImpl(content); return fillDialogBalloonBuilder(builder, title); }