Bug 352380 - [Compatibility] Empty 'Team' menu shows up in context menus
We need to check team.main submenus. Well, any contributed menu's
submenus.
Bug: 352380
diff --git a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/MenuManagerRendererFilter.java b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/MenuManagerRendererFilter.java
index bb2cdd2..2c0a32f 100644
--- a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/MenuManagerRendererFilter.java
+++ b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/MenuManagerRendererFilter.java
@@ -269,7 +269,7 @@
evalContext = modelService.getContainingContext(menuModel);
}
updateElementVisibility(menuModel, renderer, menuManager, evalContext,
- true, true);
+ 2, true);
// last thing to do, kill the event and update the menu manager
event.type = SWT.None;
@@ -306,7 +306,7 @@
*/
public static void updateElementVisibility(final MMenu menuModel,
MenuManagerRenderer renderer, MenuManager menuManager,
- final IEclipseContext evalContext, boolean recurse,
+ final IEclipseContext evalContext, final int recurseLevel,
boolean updateEnablement) {
final ExpressionContext exprContext = new ExpressionContext(evalContext);
HashSet<ContributionRecord> records = new HashSet<ContributionRecord>();
@@ -320,12 +320,13 @@
MenuManagerRenderer.updateVisibility(menuManager, element,
exprContext);
}
- if (recurse && element.isVisible() && element instanceof MMenu) {
+ if (recurseLevel > 0 && element.isVisible()
+ && element instanceof MMenu) {
MMenu childMenu = (MMenu) element;
MenuManager childManager = renderer.getManager(childMenu);
if (childManager != null) {
updateElementVisibility(childMenu, renderer, childManager,
- evalContext, false, false);
+ evalContext, recurseLevel - 1, false);
}
}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchWindow.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchWindow.java
index 5361293..9694016 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchWindow.java
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchWindow.java
@@ -564,7 +564,7 @@
return;
}
MenuManagerRendererFilter.updateElementVisibility(mainMenu, renderer,
- menuManager, windowContext.getActiveLeaf(), true, false);
+ menuManager, windowContext.getActiveLeaf(), 1, false);
menuManager.update(true);
} finally {
canUpdateMenus = true;