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 Fabian Rohn

Component: unspecifiedui
Status: newassigned

comment:2 Changed 16 years ago by SVN

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.

comment:3 Changed 16 years ago by Henrik Heimbuerger

Owner: changed from Henrik Heimbuerger to Fabian Rohn

Assigned back for testing.

comment:4 Changed 16 years ago by Fabian Rohn

Resolution: fixed
Status: assignedclosed

tested successfully

Note: See TracTickets for help on using tickets.