diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/EditorBasedWidget.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/EditorBasedWidget.java index 69ed687f612b..e6db275b9d71 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/EditorBasedWidget.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/EditorBasedWidget.java @@ -38,6 +38,7 @@ public abstract class EditorBasedWidget extends FileEditorManagerAdapter impleme private Project myProject; protected MessageBusConnection myConnection; + private boolean myDisposed; protected EditorBasedWidget(Project project) { myProject = project; @@ -106,6 +107,8 @@ public abstract class EditorBasedWidget extends FileEditorManagerAdapter impleme @Override public void dispose() { + myDisposed = true; + myStatusBar = null; if (myConnection != null) { myConnection.disconnect(); @@ -113,4 +116,8 @@ public abstract class EditorBasedWidget extends FileEditorManagerAdapter impleme } myProject = null; } + + protected final boolean isDisposed() { + return myDisposed; + } } diff --git a/plugins/git4idea/src/git4idea/checkout/branches/GitCurrentBranchWidget.java b/plugins/git4idea/src/git4idea/checkout/branches/GitCurrentBranchWidget.java index 8c6bc26efb4f..82af514720c9 100644 --- a/plugins/git4idea/src/git4idea/checkout/branches/GitCurrentBranchWidget.java +++ b/plugins/git4idea/src/git4idea/checkout/branches/GitCurrentBranchWidget.java @@ -127,6 +127,8 @@ public class GitCurrentBranchWidget extends EditorBasedWidget implements StatusB Task.Backgroundable task = new Task.Backgroundable(project, "") { @Override public void run(ProgressIndicator indicator) { + if (isDisposed()) return; + String currentBranchName = null; if (file != null) { AbstractVcs vcs = myVcsManager.getVcsFor(file);