diff options
author | Patrick Naish | 2014-11-13 15:50:34 +0000 |
---|---|---|
committer | Daniel Rolka | 2014-11-13 15:50:34 +0000 |
commit | c1c5b34020048563a79fdc3b723812e9d588c97a (patch) | |
tree | 5866f6c879172dd35d216bf35dedb8aeb5ebfd9f | |
parent | ae6f557d5fc2cdc25f04602a0a5fde45839653e2 (diff) | |
download | eclipse.platform.ui-c1c5b34020048563a79fdc3b723812e9d588c97a.tar.gz eclipse.platform.ui-c1c5b34020048563a79fdc3b723812e9d588c97a.tar.xz eclipse.platform.ui-c1c5b34020048563a79fdc3b723812e9d588c97a.zip |
Bug 435274 - [Contributions] Leak of ActionContributionItem every time
New/Import context menu item is made visible
Fix cleans up child menus which were previously missed.
Change-Id: I9b5380355c6a06164b2184f0e582b397ff847cac
Signed-off-by: Patrick Naish <patrick.naish@microfocus.com>
-rw-r--r-- | bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/MenuManagerRenderer.java | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/MenuManagerRenderer.java b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/MenuManagerRenderer.java index cbcf5997828..73346b49154 100644 --- a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/MenuManagerRenderer.java +++ b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/MenuManagerRenderer.java @@ -10,6 +10,8 @@ * Marco Descher <marco@descher.at> - Bug 389063, Bug 398865, Bug 398866, Bug 405471 * Sopot Cela <sopotcela@gmail.com> * Steven Spungin <steven@spungin.tv> - Bug 437747 + * Alan Staves <alan.staves@microfocus.com> - Bug 435274 + * Patrick Naish <patrick.naish@microfocus.com> - Bug 435274 *******************************************************************************/ package org.eclipse.e4.ui.workbench.renderers.swt; @@ -392,6 +394,11 @@ MenuManagerEventHelper.getInstance() * @param menuModel */ public void cleanUp(MMenu menuModel) { + for (MMenuElement childElement : menuModel.getChildren()) { + if (childElement instanceof MMenu) { + cleanUp((MMenu) childElement); + } + } Collection<ContributionRecord> vals = modelContributionToRecord .values(); List<ContributionRecord> disposedRecords = new ArrayList<ContributionRecord>(); @@ -845,6 +852,10 @@ MenuManagerEventHelper.getInstance() } public void clearModelToManager(MMenu model, MenuManager manager) { + for (MMenuElement element : model.getChildren()) { + IContributionItem ici = getContribution(element); + clearModelToContribution(element, ici); + } modelToManager.remove(model); managerToModel.remove(manager); } |