Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xbundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/CommandContributionItem.java12
1 files changed, 10 insertions, 2 deletions
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/CommandContributionItem.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/CommandContributionItem.java
index 6d23bb1969b..d5c898e2074 100755
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/CommandContributionItem.java
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/CommandContributionItem.java
@@ -24,7 +24,7 @@ import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.jface.action.ContributionItem;
import org.eclipse.jface.action.IContributionManager;
-import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuListener2;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.bindings.BindingManagerEvent;
@@ -872,7 +872,7 @@ public class CommandContributionItem extends ContributionItem {
if (workbenchHelpSystem != null) {
workbenchHelpSystem.setHelp(menu, helpContextId);
}
- menuManager.addMenuListener(new IMenuListener() {
+ menuManager.addMenuListener(new IMenuListener2() {
public void menuAboutToShow(IMenuManager manager) {
String id = getId();
if (dropDownMenuOverride != null) {
@@ -881,6 +881,14 @@ public class CommandContributionItem extends ContributionItem {
menuService.populateContributionManager(
menuManager, "menu:" + id); //$NON-NLS-1$
}
+ public void menuAboutToHide(IMenuManager manager) {
+ display.asyncExec(new Runnable() {
+ public void run() {
+ menuService.releaseContributions(menuManager);
+ menuManager.dispose();
+ }
+ });
+ }
});
// position the menu below the drop down item

Back to the top