|
|
|
|
|
Re: Widget is disposed exception on table when double click [message #1075454 is a reply to message #1075446] |
Mon, 29 July 2013 13:03 |
Ivan Furnadjiev Messages: 2426 Registered: July 2009 Location: Sofia, Bulgaria |
Senior Member |
|
|
OK... here are my findings after short investigation. When you doble
click on the last item (which will be removed), two events are sent from
the client - widgetDefaultSelected and mouseDoubleClick. Mouse double
click listener is executed on the server first and item is disposed. As
a result, (default) selection listener is executed with already disposed
item. Probably we need a dispose check in
StructuredViewer.handleDoubleSelect:
....
if (event.item != null && !event.item.isDisposed() &&
event.item.getData() != null) {
....
Best,
Ivan
On 7/29/2013 3:46 PM, Ivan Furnadjiev wrote:
> Hi Marco,
> the key point in your snippet is to double click on the last item
> (which will be removed). Now I can reproduce it with RAP from git
> master too. I've tested your snippet in RCP and it's working fine
> there. Please open a bugzilla and we will investigate the issue.
> Thanks,
> Ivan
>
> On 7/29/2013 3:17 PM, Marco Feldmann wrote:
>> Hi Ivan,
>> thanks for your fast answer and your blog post. I use RAP 2.0. Here
>> is the complete stack trace:
>> org.eclipse.swt.SWTException: Widget is disposed
>> at org.eclipse.swt.SWT.error(SWT.java:3546)
>> at org.eclipse.swt.SWT.error(SWT.java:3469)
>> at org.eclipse.swt.SWT.error(SWT.java:3440)
>> at org.eclipse.swt.widgets.Widget.error(Widget.java:1027)
>> at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:969)
>> at org.eclipse.swt.widgets.Widget.getData(Widget.java:225)
>> at
>> org.eclipse.jface.viewers.StructuredViewer.handleDoubleSelect(StructuredViewer.java:1109)
>> at
>> org.eclipse.jface.viewers.StructuredViewer$4.widgetDefaultSelected(StructuredViewer.java:1228)
>> at
>> org.eclipse.jface.util.OpenStrategy.fireDefaultSelectionEvent(OpenStrategy.java:242)
>> at
>> org.eclipse.jface.util.OpenStrategy.access$0(OpenStrategy.java:239)
>> at
>> org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:304)
>> at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:85)
>> at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:696)
>> at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:598)
>> at
>> org.eclipse.swt.widgets.Display.executeNextEvent(Display.java:1172)
>> at
>> org.eclipse.swt.widgets.Display.runPendingMessages(Display.java:1153)
>> at
>> org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1143)
>> at
>> org.eclipse.rap.rwt.internal.lifecycle.ProcessAction.execute(ProcessAction.java:27)
>> at
>> org.eclipse.rap.rwt.internal.lifecycle.PhaseExecutor.execute(PhaseExecutor.java:35)
>> at
>> org.eclipse.rap.rwt.internal.lifecycle.SimpleLifeCycle.execute(SimpleLifeCycle.java:51)
>> at
>> org.eclipse.rap.rwt.internal.service.LifeCycleServiceHandler.runLifeCycle(LifeCycleServiceHandler.java:120)
>> at
>> org.eclipse.rap.rwt.internal.service.LifeCycleServiceHandler.handlePostRequest(LifeCycleServiceHandler.java:106)
>> at
>> org.eclipse.rap.rwt.internal.service.LifeCycleServiceHandler.synchronizedService(LifeCycleServiceHandler.java:71)
>> at
>> org.eclipse.rap.rwt.internal.service.LifeCycleServiceHandler.service(LifeCycleServiceHandler.java:62)
>> at
>> org.eclipse.rap.rwt.engine.RWTServlet.handleValidRequest(RWTServlet.java:107)
>> at
>> org.eclipse.rap.rwt.engine.RWTServlet.handleRequest(RWTServlet.java:94)
>> at org.eclipse.rap.rwt.engine.RWTServlet.doPost(RWTServlet.java:87)
>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:755)
>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
>> at
>> org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:669)
>> at
>> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:457)
>> at
>> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
>> at
>> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557)
>> at
>> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
>> at
>> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1075)
>> at
>> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:384)
>> at
>> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
>> at
>> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1009)
>> at
>> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
>> at
>> org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255)
>> at
>> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
>> at org.eclipse.jetty.server.Server.handle(Server.java:368)
>> at
>> org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
>> at
>> org.eclipse.jetty.server.BlockingHttpConnection.handleRequest(BlockingHttpConnection.java:53)
>> at
>> org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:953)
>> at
>> org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1014)
>> at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:861)
>> at
>> org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
>> at
>> org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:72)
>> at
>> org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.run(SocketConnector.java:264)
>> at
>> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
>> at
>> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
>> at java.lang.Thread.run(Thread.java:722)
>
--
Ivan Furnadjiev
Twitter: @EclipseRAP
Blog: http://eclipsesource.com/blogs/
Professional services for RAP and RCP?
http://eclipsesource.com/services/rap/
|
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.03297 seconds