From 2a026cbb9af0f2fbaee01ddf97c208f786e3211f Mon Sep 17 00:00:00 2001 From: Julia Beliaeva Date: Thu, 28 Apr 2016 22:22:03 +0300 Subject: [PATCH] [tabs] merge action disposes old contents after creating new ones --- .../openapi/wm/impl/content/ToolWindowContentUi.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/content/ToolWindowContentUi.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/content/ToolWindowContentUi.java index cb8145ae1123..1e5b0c4e6511 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/content/ToolWindowContentUi.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/content/ToolWindowContentUi.java @@ -39,6 +39,7 @@ import com.intellij.ui.switcher.SwitchProvider; import com.intellij.ui.switcher.SwitchTarget; import com.intellij.util.Alarm; import com.intellij.util.ContentUtilEx; +import com.intellij.util.containers.ContainerUtil; import com.intellij.util.ui.UIUtil; import com.intellij.util.ui.update.ComparableObject; import org.jetbrains.annotations.NonNls; @@ -407,6 +408,7 @@ public class ToolWindowContentUi extends JPanel implements ContentUI, PropertyCh final Content selectedContent = manager.getSelectedContent(); final List> tabs = new ArrayList>(); int selectedTab = -1; + List mergedContent = ContainerUtil.newArrayList(); for (Content content : manager.getContents()) { if (tabPrefix.equals(content.getUserData(Content.TAB_GROUP_NAME_KEY))) { final String label = content.getTabName().substring(tabPrefix.length() + 2); @@ -417,7 +419,7 @@ public class ToolWindowContentUi extends JPanel implements ContentUI, PropertyCh tabs.add(Pair.create(label, component)); manager.removeContent(content, false); content.setComponent(null); - Disposer.dispose(content); + mergedContent.add(content); } } PropertiesComponent.getInstance().unsetValue(TabbedContent.SPLIT_PROPERTY_PREFIX + tabPrefix); @@ -425,6 +427,7 @@ public class ToolWindowContentUi extends JPanel implements ContentUI, PropertyCh final Pair tab = tabs.get(i); ContentUtilEx.addTabbedContent(manager, tab.second, tabPrefix, tab.first, i == selectedTab); } + mergedContent.forEach(Disposer::dispose); } }; }