Control focusControl = getDisplay ().getFocusControl ();
if (focusControl == arrow || focusControl == icon
|| focusControl == list || focusControl == text) return;
hasFocus = false;
Shell shell = getShell ();
shell.removeListener(SWT.Deactivate, listener);
Display display = getDisplay ();
display.removeFilter (SWT.FocusIn, filter);
Event e = new Event ();
notifyListeners (SWT.FocusOut, e);
break;