| Summary: | [Wizards] Bad implementation of IWizard's dispose() method can prevent the dialog from closing | ||
|---|---|---|---|
| Product: | [Eclipse Project] Platform | Reporter: | Remy Suen <remy.suen> |
| Component: | UI | Assignee: | Prakash Rangaraj <prakash> |
| Status: | VERIFIED FIXED | QA Contact: | Prakash Rangaraj <prakash> |
| Severity: | major | ||
| Priority: | P3 | ||
| Version: | 3.7 | ||
| Target Milestone: | 3.7 M5 | ||
| Hardware: | All | ||
| OS: | All | ||
| Whiteboard: | |||
Not being able to close the dialog means the user is effectively forced to kill the Eclipse process which can lead to data loss if there are dirty parts in the "back". Fix is available in patch for bux 331337 and released to HEAD Verified in I20110124-1800 |
If there is bad client code in an IWizard's dispose() method, the dialog get into a state where it cannot be closed. ------------ Run this code and try to close the wizard dialog, you will not be able to. Display display = new Display(); Wizard wizard = new Wizard() { public boolean performFinish() { return true; } public void dispose() { throw new RuntimeException(); } }; WizardDialog dialog = new WizardDialog(null, wizard); dialog.open(); display.dispose(); ------------ java.lang.RuntimeException at Main$5.dispose(Main.java:142) at org.eclipse.jface.wizard.WizardDialog.hardClose(WizardDialog.java:859) at org.eclipse.jface.wizard.WizardDialog.close(WizardDialog.java:484) at org.eclipse.jface.window.Window.handleShellCloseEvent(Window.java:741) at org.eclipse.jface.window.Window$3.shellClosed(Window.java:687) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:98)