Bug 396909 - SWT IFocusService prone to cause NPE's during shutdown
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/FocusControlSourceProvider.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/FocusControlSourceProvider.java
index 9ad5212..c4964da 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/FocusControlSourceProvider.java
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/FocusControlSourceProvider.java
@@ -14,7 +14,6 @@
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
-
import org.eclipse.core.expressions.IEvaluationContext;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.events.DisposeListener;
@@ -120,6 +119,10 @@
* @see org.eclipse.ui.menus.IFocusService#removeTrackerFor(org.eclipse.swt.widgets.Control)
*/
public void removeFocusTracker(Control control) {
+ if (controlToId == null) {
+ // bug 396909: avoid NPEs if the service has already been disposed
+ return;
+ }
controlToId.remove(control);
if (control.isDisposed()) {
return;