Fix for bug 53654
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/RectangleAnimation.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/RectangleAnimation.java
index 78888cc..6993959 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/RectangleAnimation.java
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/RectangleAnimation.java
@@ -57,6 +57,11 @@
private UIJob paintJob = new UIJob(WorkbenchMessages.getString("RectangleAnimation.Animating_Rectangle")) { //$NON-NLS-1$
public IStatus runInUIThread(IProgressMonitor monitor) {
+ if (canvas == null || canvas.isDisposed()) {
+ done = true;
+ return Status.OK_STATUS;
+ }
+
canvas.redraw();
return Status.OK_STATUS;
@@ -69,6 +74,11 @@
return;
}
+ if (canvas == null || canvas.isDisposed()) {
+ done = true;
+ return;
+ }
+
long currentTime = System.currentTimeMillis();
double amount = (double)(currentTime - startTime) / (double)duration;
@@ -145,11 +155,13 @@
}
}
- canvas.getDisplay().syncExec(new Runnable() {
- public void run() {
- canvas.dispose();
- }
- });
+ if (!canvas.isDisposed()) {
+ canvas.getDisplay().syncExec(new Runnable() {
+ public void run() {
+ canvas.dispose();
+ }
+ });
+ }
return Status.OK_STATUS;
}