diff options
author | Nitin Dahyabhai | 2018-07-10 04:30:20 +0000 |
---|---|---|
committer | Nitin Dahyabhai | 2018-07-10 04:30:20 +0000 |
commit | 8bddb0398b5c5baa9a21dff6ebc0d075c5248289 (patch) | |
tree | 04911e43ee025ef09b35ff069194ae22eb20cbd3 | |
parent | 675e1600063b0d8cf0e255faf620242b64c3763c (diff) | |
download | webtools.sourceediting-8bddb0398b5c5baa9a21dff6ebc0d075c5248289.tar.gz webtools.sourceediting-8bddb0398b5c5baa9a21dff6ebc0d075c5248289.tar.xz webtools.sourceediting-8bddb0398b5c5baa9a21dff6ebc0d075c5248289.zip |
[nobug] guard against Display disposal during editor close
-rwxr-xr-x | core/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/StructuredTextEditor.java | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/core/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/StructuredTextEditor.java b/core/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/StructuredTextEditor.java index 4616610e1a..36cddb5a6f 100755 --- a/core/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/StructuredTextEditor.java +++ b/core/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/StructuredTextEditor.java @@ -129,7 +129,9 @@ import org.eclipse.ui.IPartListener; import org.eclipse.ui.ISharedImages; import org.eclipse.ui.IStorageEditorInput; import org.eclipse.ui.IWorkbenchActionConstants; +import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.IWorkbenchPartSite; import org.eclipse.ui.PartInitException; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.contexts.IContextService; @@ -1181,12 +1183,23 @@ public class StructuredTextEditor extends TextEditor { else { if (getEditorPart() != null) { Display display = getSite().getShell().getDisplay(); - display.asyncExec(new Runnable() { - - public void run() { - getSite().getPage().closeEditor(getEditorPart(), save); - } - }); + if (!display.isDisposed()) { + display.asyncExec(new Runnable() { + /* + * There's really no way to tell how much later this + * might take place. Be paranoid. + */ + public void run() { + IWorkbenchPartSite site = getSite(); + if (site != null) { + IWorkbenchPage page = site.getPage(); + if (page != null) { + page.closeEditor(getEditorPart(), save); + } + } + } + }); + } } else { super.close(save); |