Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrick Naish2014-11-13 15:50:34 +0000
committerDaniel Rolka2014-11-13 15:50:34 +0000
commitc1c5b34020048563a79fdc3b723812e9d588c97a (patch)
tree5866f6c879172dd35d216bf35dedb8aeb5ebfd9f
parentae6f557d5fc2cdc25f04602a0a5fde45839653e2 (diff)
downloadeclipse.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.java11
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);
}

Back to the top