From c7c1f97b0c2a5f2da6957264a0c54a791cb8ebac Mon Sep 17 00:00:00 2001 From: Brita Keller Date: Wed, 18 Dec 2019 17:16:20 +0100 Subject: [PATCH] Fixed #21 - IllegalStateException when closing SCViewer --- .../scviewer/e4/application/parts/DesignBrowser.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/DesignBrowser.java b/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/DesignBrowser.java index 0de7795..f2444fa 100644 --- a/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/DesignBrowser.java +++ b/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/DesignBrowser.java @@ -60,6 +60,7 @@ import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Text; import org.eclipse.swt.widgets.ToolBar; import org.eclipse.swt.widgets.ToolItem; @@ -373,9 +374,13 @@ public class DesignBrowser { waveformViewerPart.addDisposeListener( new DisposeListener() { @Override public void widgetDisposed(DisposeEvent e) { - // reset tree- and tableviewer - resetTreeViewer(); - } + Control control = treeViewer.getControl(); + // check if widget is already disposed (f.ex. because of workbench closing) + if (control == null || control.isDisposed()) { //if so: do nothing + }else { //reset tree- and tableviewer + resetTreeViewer(); + } + } } ); } this.waveformViewerPart=waveformViewerPart;