Opened 16 years ago
Closed 16 years ago
#84 closed defect (fixed)
Fix Exception after exiting Input Device Settings Dialog
Reported by: | Fabian Rohn | Owned by: | Fabian Rohn |
---|---|---|---|
Priority: | minor | Milestone: | MS1: First release (1.0.0) |
Component: | ui | Version: | pre-1.0 |
Keywords: | Cc: |
Description
The Exception is thrown, if you select a connected Device in the Game Controller Tab and afterwards close the dialog by pressing (X) in the upper right corner.
Stacktrace:
org.eclipse.swt.SWTException: Failed to execute runnable (org.eclipse.swt.SWTException: Widget is disposed) at org.eclipse.swt.SWT.error(SWT.java:3773) at org.eclipse.swt.SWT.error(SWT.java:3691) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3759) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3384) at org.eclipse.jface.window.Window.runEventLoop(Window.java:825) at org.eclipse.jface.window.Window.open(Window.java:801) at org.eclipse.jface.dialogs.ErrorDialog.open(ErrorDialog.java:338) at org.eclipse.jface.dialogs.ErrorDialog.openError(ErrorDialog.java:402) at org.eclipse.jface.dialogs.ErrorDialog.openError(ErrorDialog.java:367) at de.jacavi.rcp.util.ExceptionHandler.handleException(ExceptionHandler.java:45) at de.jacavi.rcp.util.ExceptionHandler.handleException(ExceptionHandler.java:51) at de.jacavi.rcp.ApplicationWorkbenchAdvisor.eventLoopException(ApplicationWorkbenchAdvisor.java:64) at org.eclipse.ui.internal.ExceptionHandler.handleException(ExceptionHandler.java:62) at org.eclipse.jface.window.Window.runEventLoop(Window.java:829) at org.eclipse.jface.window.Window.open(Window.java:801) at org.eclipse.jface.dialogs.ErrorDialog.open(ErrorDialog.java:338) at org.eclipse.jface.dialogs.ErrorDialog.openError(ErrorDialog.java:402) at org.eclipse.jface.dialogs.ErrorDialog.openError(ErrorDialog.java:367) at de.jacavi.rcp.util.ExceptionHandler.handleException(ExceptionHandler.java:45) at de.jacavi.rcp.util.ExceptionHandler.handleException(ExceptionHandler.java:51) at de.jacavi.rcp.ApplicationWorkbenchAdvisor.eventLoopException(ApplicationWorkbenchAdvisor.java:64) at org.eclipse.ui.internal.ExceptionHandler.handleException(ExceptionHandler.java:62) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2363) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2210) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:494) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:489) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at de.jacavi.rcp.Application.start(Application.java:25) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:379) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504) at org.eclipse.equinox.launcher.Main.run(Main.java:1236) at org.eclipse.equinox.launcher.Main.main(Main.java:1212) Caused by: org.eclipse.swt.SWTException: Widget is disposed at org.eclipse.swt.SWT.error(SWT.java:3773) at org.eclipse.swt.SWT.error(SWT.java:3691) at org.eclipse.swt.SWT.error(SWT.java:3662) at org.eclipse.swt.widgets.Widget.error(Widget.java:462) at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:335) at org.eclipse.swt.widgets.ProgressBar.setSelection(ProgressBar.java:307) at de.jacavi.rcp.dlg.InputDeviceSettingsDialog$DevicePreviewUpdater$1.run(InputDeviceSettingsDialog.java:86) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:132) ... 40 more
A solution could be, that the (X) Button do the same procedure like the "OK" button, which is recommended to rename to "Close" in this case.
Change History (4)
comment:1 Changed 16 years ago by
Component: | unspecified → ui |
---|---|
Status: | new → assigned |
comment:2 Changed 16 years ago by
comment:3 Changed 16 years ago by
Owner: | changed from Henrik Heimbuerger to Fabian Rohn |
---|
Assigned back for testing.
Note: See
TracTickets for help on using
tickets.
New commit by hheimbuerger (revision [245]):
[Fix for ticket #84, related to #39 and #63] Fixed exception that was thrown when the input settings dialog was closed with the X-button in the top right.
This was caused by the cleanup code being in the okPressed() handler, which was not called when the X-button was clicked.
The X-button has now been replaced with a 'Close' button as suggested in the ticket to indicate that all changes are immediate and there's no difference whether the dialog is closed with the X or with the Close button. The cleanup code has been moved to the close() method.
Also, the preview update timer now checks if its widget (the progress bar) is still available before modifying it.
Additionally, the layout of the 'mouse' tab has been fixed.