private void dropDown(boolean drop) { if (drop == isDropped()) return; if (!drop) { popup.setVisible(false); if (!isDisposed() && arrow.isFocusControl()) { text.setFocus(); } return; } if (getShell() != popup.getParent()) { String[] items = list.getItems(); int selectionIndex = list.getSelectionIndex(); list.removeListener(SWT.Dispose, listener); popup.dispose(); popup = null; list = null; createPopup(items, selectionIndex); } computeShowArea(); popup.setAlpha(popup.getFinalAlpha()); popup.setVisible(true); }
void comboEvent(Event event) { switch (event.type) { case SWT.Dispose: if (popup != null && !popup.isDisposed()) { list.removeListener(SWT.Dispose, listener); popup.dispose(); } Shell shell = getShell(); shell.removeListener(SWT.Deactivate, listener); Display display = getDisplay(); display.removeFilter(SWT.FocusIn, filter); popup = null; text = null; list = null; arrow = null; break; case SWT.Move: dropDown(false); break; case SWT.Resize: internalLayout(false); break; } }