Bug 345735 - JDT leak tests are failing due to ToolBarManagerRenderer holding onto references
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CoolBarToTrimManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CoolBarToTrimManager.java index f8868f2..e262198 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CoolBarToTrimManager.java +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/CoolBarToTrimManager.java
@@ -19,6 +19,7 @@ import org.eclipse.e4.ui.model.application.ui.basic.impl.BasicFactoryImpl; import org.eclipse.e4.ui.model.application.ui.menu.MOpaqueToolItem; import org.eclipse.e4.ui.model.application.ui.menu.MToolBar; +import org.eclipse.e4.ui.model.application.ui.menu.MToolBarElement; import org.eclipse.e4.ui.model.application.ui.menu.MToolBarSeparator; import org.eclipse.e4.ui.model.application.ui.menu.MToolItem; import org.eclipse.e4.ui.model.application.ui.menu.impl.MenuFactoryImpl; @@ -468,6 +469,17 @@ final MTrimElement child = children.get(i); final Object obj = child.getTransientData().get(OBJECT); if (obj != null && obj.equals(item)) { + if (child instanceof MToolBarElement) { + renderer.clearModelToContribution((MToolBarElement) child, item); + } + + if (child instanceof MToolBar && item instanceof IToolBarContributionItem) { + IToolBarManager parent = ((IToolBarContributionItem) item).getToolBarManager(); + if (parent instanceof ToolBarManager) { + renderer.clearModelToManager((MToolBar) child, (ToolBarManager) parent); + } + } + children.remove(i); return (IContributionItem) obj; }