Community
Participate
Working Groups
Build Identifier: 3.7.0 When using a htmlfield inside a tabbox a widget is disposed exception can occur. For some reason the component org.eclipse.swt.ole.win32.OleClientSite creates a TRAVERSE_TAB_NEXT event when its getting disposed. This leads to a SwtScoutTabItem#setUiFocus() call which generates the exception. org.eclipse.swt.SWTException: Failed to execute runnable (org.eclipse.swt.SWTException: Widget is disposed) at org.eclipse.swt.SWT.error(SWT.java:4083) at org.eclipse.swt.SWT.error(SWT.java:3998) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:137) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4041) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3660) at org.eclipse.jface.window.Window.runEventLoop(Window.java:825) at org.eclipse.jface.window.Window.open(Window.java:801) at org.eclipse.scout.rt.ui.swt.window.dialog.SwtScoutDialog.open(SwtScoutDialog.java:215) at org.eclipse.scout.rt.ui.swt.window.dialog.SwtScoutDialog.showForm(SwtScoutDialog.java:84) at org.eclipse.scout.rt.ui.swt.AbstractSwtEnvironment.showStandaloneForm(AbstractSwtEnvironment.java:970) at org.eclipse.scout.rt.test.ui.swt.SwtEnvironment.showStandaloneForm(SwtEnvironment.java:83) at org.eclipse.scout.rt.ui.swt.AbstractSwtEnvironment$P_ScoutDesktopListener$1.run(AbstractSwtEnvironment.java:1291) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4041) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3660) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438) at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.eclipse.scout.rt.test.ui.swt.SwtApplication.start(SwtApplication.java:24) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) 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:369) 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:620) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575) at org.eclipse.equinox.launcher.Main.run(Main.java:1408) at org.eclipse.equinox.launcher.Main.main(Main.java:1384) Caused by: org.eclipse.swt.SWTException: Widget is disposed at org.eclipse.swt.SWT.error(SWT.java:4083) at org.eclipse.swt.SWT.error(SWT.java:3998) at org.eclipse.swt.SWT.error(SWT.java:3969) at org.eclipse.swt.widgets.Widget.error(Widget.java:468) at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:340) at org.eclipse.swt.custom.CTabItem.getFont(CTabItem.java:193) at org.eclipse.scout.rt.ui.swt.form.fields.tabbox.SwtScoutTabItem.updateImage(SwtScoutTabItem.java:104) at org.eclipse.scout.rt.ui.swt.form.fields.tabbox.SwtScoutTabItem.setUiFocus(SwtScoutTabItem.java:91) at org.eclipse.scout.rt.ui.swt.form.fields.tabbox.SwtScoutTabBox$P_SwtFocusListener.handleEvent(SwtScoutTabBox.java:236) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1077) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1058) at org.eclipse.swt.widgets.Control.sendFocusEvent(Control.java:2618) at org.eclipse.swt.widgets.Widget.wmSetFocus(Widget.java:2402) at org.eclipse.swt.widgets.Control.WM_SETFOCUS(Control.java:4794) at org.eclipse.swt.widgets.Control.windowProc(Control.java:4231) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4873) at org.eclipse.swt.internal.win32.OS.SetFocus(Native Method) at org.eclipse.swt.widgets.Control.forceFocus(Control.java:995) at org.eclipse.swt.widgets.Control.setTabItemFocus(Control.java:3320) at org.eclipse.swt.widgets.Composite.setTabGroupFocus(Composite.java:1157) at org.eclipse.swt.widgets.Control.traverseGroup(Control.java:3938) at org.eclipse.swt.widgets.Control.traverse(Control.java:3702) at org.eclipse.swt.widgets.Control.traverse(Control.java:3734) at org.eclipse.swt.ole.win32.OleClientSite.OnUIDeactivate(OleClientSite.java:1008) at org.eclipse.swt.ole.win32.OleControlSite.OnUIDeactivate(OleControlSite.java:669) at org.eclipse.swt.ole.win32.OleClientSite$5.method10(OleClientSite.java:533) at org.eclipse.swt.internal.ole.win32.COMObject.callback10(COMObject.java:155) at org.eclipse.swt.internal.win32.OS.VtblCall(Native Method) at org.eclipse.swt.internal.ole.win32.IOleInPlaceObject.InPlaceDeactivate(IOleInPlaceObject.java:21) at org.eclipse.swt.ole.win32.OleClientSite.deactivateInPlaceClient(OleClientSite.java:559) at org.eclipse.swt.ole.win32.OleClientSite.onDispose(OleClientSite.java:908) at org.eclipse.swt.ole.win32.OleClientSite.access$1(OleClientSite.java:895) at org.eclipse.swt.ole.win32.OleClientSite$1.handleEvent(OleClientSite.java:129) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1077) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1058) at org.eclipse.swt.widgets.Widget.release(Widget.java:808) at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:872) at org.eclipse.swt.widgets.Widget.release(Widget.java:811) at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:872) at org.eclipse.swt.widgets.Widget.release(Widget.java:811) at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:872) at org.eclipse.swt.widgets.Widget.release(Widget.java:811) at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:872) at org.eclipse.swt.widgets.Widget.release(Widget.java:811) at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:872) at org.eclipse.swt.widgets.Widget.release(Widget.java:811) at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:872) at org.eclipse.swt.widgets.Widget.release(Widget.java:811) at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:872) at org.eclipse.swt.widgets.Widget.release(Widget.java:811) at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:872) at org.eclipse.swt.widgets.Widget.release(Widget.java:811) at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:872) at org.eclipse.swt.widgets.Widget.release(Widget.java:811) at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:872) at org.eclipse.swt.widgets.Widget.release(Widget.java:811) at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:872) at org.eclipse.swt.widgets.Widget.release(Widget.java:811) at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:872) at org.eclipse.swt.widgets.Widget.release(Widget.java:811) at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:872) at org.eclipse.swt.widgets.Widget.release(Widget.java:811) at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:872) at org.eclipse.swt.widgets.Canvas.releaseChildren(Canvas.java:167) at org.eclipse.swt.widgets.Decorations.releaseChildren(Decorations.java:773) at org.eclipse.swt.widgets.Shell.releaseChildren(Shell.java:1267) at org.eclipse.swt.widgets.Widget.release(Widget.java:811) at org.eclipse.swt.widgets.Widget.dispose(Widget.java:446) at org.eclipse.swt.widgets.Decorations.dispose(Decorations.java:447) at org.eclipse.swt.widgets.Shell.dispose(Shell.java:714) at org.eclipse.jface.window.Window.close(Window.java:335) at org.eclipse.jface.dialogs.Dialog.close(Dialog.java:979) at org.eclipse.scout.rt.ui.swt.window.dialog.SwtScoutDialog.closePart(SwtScoutDialog.java:96) at org.eclipse.scout.rt.ui.swt.AbstractSwtEnvironment.hideStandaloneForm(AbstractSwtEnvironment.java:1185) at org.eclipse.scout.rt.test.ui.swt.SwtEnvironment.hideStandaloneForm(SwtEnvironment.java:111) at org.eclipse.scout.rt.ui.swt.AbstractSwtEnvironment$P_ScoutDesktopListener$2.run(AbstractSwtEnvironment.java:1305) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134) ... 34 more Reproducible: Always Steps to Reproduce: 1. Create a form with a tabbox containing a stringfield and a htmlfield 2. Open the form as dialog 3. Set the focus on the stringfield 4. Press ESC 5. Notice that the gui freezes
Created attachment 201698 [details] Patch to resolve the bug.
Patch applied on trunk and Indigo SP1.
shipped with 3.7.1
removed iplog flag from ticket and added iplog flag to attachment