diff options
-rwxr-xr-x | bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/CommandContributionItem.java | 12 |
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 |