Matthew Hall wrote:
You can cause the filter to be removed as the dialog is closed by
adding a SWT.Dispose listener to the composite created in
createDialogArea:
composite.addListener(SWT.Dispose, new Listener() {
public void handleEvent(Event e) {
display.removeListener(SWT.Traverse, overrideTraversalListener);
}
});
We have overridden the buttonPressed() method (for other reasons) and
this is where I'm removing the listener. Is this an acceptable alternative?
protected void buttonPressed(int buttonId) {
...
log.debug("Removing traverse filter");
getShell().getDisplay().removeFilter(SWT.Traverse, listener);
super.buttonPressed(buttonId);
}