diff options
author | Andrey Loskutov | 2018-07-05 16:16:57 +0000 |
---|---|---|
committer | Andrey Loskutov | 2018-07-05 19:06:39 +0000 |
commit | 2cd04afc746dbcc8ed4e9fef4417ed63acacd298 (patch) | |
tree | 9ae79755d1629ea14589293f7d62c55cbee59f4a /bundles/org.eclipse.ui.workbench | |
parent | 26c320efc6aa6ae1f9926f9b687f504660d464a2 (diff) | |
download | eclipse.platform.ui-2cd04afc746dbcc8ed4e9fef4417ed63acacd298.tar.gz eclipse.platform.ui-2cd04afc746dbcc8ed4e9fef4417ed63acacd298.tar.xz eclipse.platform.ui-2cd04afc746dbcc8ed4e9fef4417ed63acacd298.zip |
Bug 536677 - fix simple memory leaks to WorkbenchWindowI20180705-2000
Change-Id: I10cdda52fe2faa989bf7ea03198336a6394700e5
Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
Diffstat (limited to 'bundles/org.eclipse.ui.workbench')
9 files changed, 41 insertions, 1 deletions
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/PerspectiveMenu.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/PerspectiveMenu.java index 5a9b27bd7b5..0b494254e00 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/PerspectiveMenu.java +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/actions/PerspectiveMenu.java @@ -377,4 +377,10 @@ public abstract class PerspectiveMenu extends ContributionItem { protected void showActive(boolean b) { showActive = b; } + + @Override + public void dispose() { + window = null; + super.dispose(); + } } diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PageEventAction.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PageEventAction.java index 95f9f764a91..783b87e38ea 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PageEventAction.java +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PageEventAction.java @@ -14,8 +14,8 @@ import org.eclipse.ui.IPageListener; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.actions.ActionFactory; -import org.eclipse.ui.actions.PartEventAction; import org.eclipse.ui.actions.ActionFactory.IWorkbenchAction; +import org.eclipse.ui.actions.PartEventAction; /** * The abstract superclass for actions that listen to page activation and @@ -161,6 +161,7 @@ public abstract class PageEventAction extends PartEventAction implements // action has already been disposed return; } + super.partDeactivated(null); workbenchWindow.removePageListener(this); workbenchWindow.getPartService().removePartListener(this); workbenchWindow = null; diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveTracker.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveTracker.java index ae35acb17f8..c154a07ea87 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveTracker.java +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PerspectiveTracker.java @@ -65,6 +65,7 @@ public class PerspectiveTracker extends PerspectiveAdapter implements if (window != null) { window.removePageListener(this); window.removePerspectiveListener(this); + window = null; } } diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ReopenEditorMenu.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ReopenEditorMenu.java index 7cf97348f58..6ae53a2aefc 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ReopenEditorMenu.java +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ReopenEditorMenu.java @@ -294,4 +294,10 @@ public class ReopenEditorMenu extends ContributionItem { } } + @Override + public void dispose() { + window = null; + super.dispose(); + } + } diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowViewMenu.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowViewMenu.java index 62bea4eab0a..dd0eed6a688 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowViewMenu.java +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowViewMenu.java @@ -353,4 +353,15 @@ public class ShowViewMenu extends ContributionItem { } return new ParameterizedCommand(c, parms); } + + @Override + public void dispose() { + if (menuManager != null) { + menuManager.dispose(); + menuManager = null; + } + openedViews.clear(); + window = null; + super.dispose(); + } } diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SwitchToWindowMenu.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SwitchToWindowMenu.java index 638ece9daf2..e128744751e 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SwitchToWindowMenu.java +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/SwitchToWindowMenu.java @@ -129,4 +129,10 @@ public class SwitchToWindowMenu extends ContributionItem { public boolean isDynamic() { return true; } + + @Override + public void dispose() { + workbenchWindow = null; + super.dispose(); + } } diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/SlaveCommandService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/SlaveCommandService.java index 0ffbe0748f0..0e6ee62ae26 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/SlaveCommandService.java +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/commands/SlaveCommandService.java @@ -135,6 +135,9 @@ public class SlaveCommandService implements ICommandService, IUpdateService { unregisterElement((IElementReference) element); } } + fScopingValue = null; + fContext = null; + fParentService = null; } @Override diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/compatibility/CompatibilityPart.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/compatibility/CompatibilityPart.java index 6912b7cfb06..488a90f122e 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/compatibility/CompatibilityPart.java +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/compatibility/CompatibilityPart.java @@ -444,6 +444,7 @@ public abstract class CompatibilityPart implements ISelectionChangedListener { if (part.getTags().contains(IWorkbenchConstants.TAG_USE_DEPENDENCY_INJECTION)) { ContextInjectionFactory.uninject(legacyPart, part.getContext()); } + legacyPart = null; } @Persist diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/SearchField.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/SearchField.java index 00b92a60852..5d6990b3dd4 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/SearchField.java +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/SearchField.java @@ -717,6 +717,11 @@ public class SearchField { refreshQuickAccessContents.cancel(); } storeDialog(); + elementMap.clear(); + previousPicksList.clear(); + providerMap.clear(); + textMap.clear(); + partService = null; } private void storeDialog() { |