Community
Participate
Working Groups
We are using a swt.browser.Browser-Object to display a tooltip. Since Eclipse 4.15 we get a "swt.SWTException: Widget is disposed" when the tooltip hides. Stacktrace: org.eclipse.swt.SWTException: Widget is disposed at org.eclipse.swt.SWT.error(SWT.java:4723) at org.eclipse.swt.SWT.error(SWT.java:4638) at org.eclipse.swt.SWT.error(SWT.java:4609) at org.eclipse.swt.widgets.Widget.error(Widget.java:550) at org.eclipse.swt.widgets.Widget.getDisplay(Widget.java:636) at org.eclipse.swt.browser.WebKit.onDispose(WebKit.java:1956) at org.eclipse.swt.browser.WebKit.lambda$4(WebKit.java:858) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89) at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5687) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1423) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1449) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1428) at org.eclipse.swt.widgets.Widget.release(Widget.java:1240) at org.eclipse.swt.widgets.Control.release(Control.java:4573) at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:1502) at org.eclipse.swt.widgets.Widget.release(Widget.java:1243) at org.eclipse.swt.widgets.Control.release(Control.java:4573) at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:1502) at org.eclipse.swt.widgets.Canvas.releaseChildren(Canvas.java:279) at org.eclipse.swt.widgets.Decorations.releaseChildren(Decorations.java:486) at org.eclipse.swt.widgets.Shell.releaseChildren(Shell.java:3208) at org.eclipse.swt.widgets.Widget.release(Widget.java:1243) at org.eclipse.swt.widgets.Control.release(Control.java:4573) at org.eclipse.swt.widgets.Widget.dispose(Widget.java:529) at org.eclipse.swt.widgets.Shell.dispose(Shell.java:3131) ... I think the problem is in browser.WebKit.onDispose() https://git.eclipse.org/r/plugins/gitiles/platform/eclipse.platform.swt/+/master/bundles/org.eclipse.swt/Eclipse%20SWT%20WebKit/gtk/org/eclipse/swt/browser/WebKit.java#1956 The method tries to get the display of a swt.Browser-object, but that object may already been disposed, see first comment in that method: /* Browser could have been disposed by one of the Dispose listeners */ Calling browser.getDisplay() is calling Widget.getDisplay() which will throw an error in case of being already disposed, see https://git.eclipse.org/r/plugins/gitiles/platform/eclipse.platform.swt/+/master/bundles/org.eclipse.swt/Eclipse%20SWT/gtk/org/eclipse/swt/widgets/Widget.java#634 As a result a lot of error messages are printed and written to the log. I don't have a short example to reproduce, but I think the problem is obvious (which does not mean the solution is obvious). PS: The current blog of WebKit.java is 6271e9ced774d1a7273005948e14e66c776c5900. Sorry, I don't know how to get a full link.
Andreas, thanks for report. Do you want to push a patch to Gerrit?
New Gerrit change created: https://git.eclipse.org/r/165357
Andrey, I pushed a patch to Gerrit.
Gerrit change https://git.eclipse.org/r/c/platform/eclipse.platform.swt/+/165357 was merged to [master]. Commit: http://git.eclipse.org/c/platform/eclipse.platform.swt.git/commit/?id=7272c3340501bac55bfdd66bb633166060d90edd
Thanks Andreas. Merged for M1.