diff options
Diffstat (limited to 'bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowViewMenu.java')
-rw-r--r-- | bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowViewMenu.java | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowViewMenu.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowViewMenu.java index 83145aa2199..6ff47364da7 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowViewMenu.java +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ShowViewMenu.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2011 IBM Corporation and others. + * Copyright (c) 2000, 2012 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -11,6 +11,7 @@ package org.eclipse.ui.internal; +import com.ibm.icu.text.Collator; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -19,7 +20,6 @@ import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; - import org.eclipse.core.commands.Command; import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.commands.IParameter; @@ -53,8 +53,6 @@ import org.eclipse.ui.services.IServiceLocator; import org.eclipse.ui.views.IViewDescriptor; import org.eclipse.ui.views.IViewRegistry; -import com.ibm.icu.text.Collator; - /** * A <code>ShowViewMenu</code> is used to populate a menu manager with Show * View actions. The visible views are determined by user preference from the @@ -93,6 +91,8 @@ public class ShowViewMenu extends ContributionItem { // Maps pages to a list of opened views private Map openedViews = new HashMap(); + private MenuManager menuManager; + private IMenuListener menuListener = new IMenuListener() { public void menuAboutToShow(IMenuManager manager) { manager.markDirty(); @@ -316,9 +316,14 @@ public class ShowViewMenu extends ContributionItem { ((MenuManager) getParent()).addMenuListener(menuListener); } - MenuManager manager = new MenuManager(); - fillMenu(manager); - IContributionItem items[] = manager.getItems(); + if (menuManager != null) { + menuManager.dispose(); + menuManager = null; + } + + menuManager = new MenuManager(); + fillMenu(menuManager); + IContributionItem items[] = menuManager.getItems(); if (items.length == 0) { MenuItem item = new MenuItem(menu, SWT.NONE, index++); item.setText(NO_TARGETS_MSG); |