diff --git a/platform/lang-impl/src/com/intellij/ide/impl/StructureViewWrapperImpl.java b/platform/lang-impl/src/com/intellij/ide/impl/StructureViewWrapperImpl.java index 7f241cceb10f..be202ef0561e 100644 --- a/platform/lang-impl/src/com/intellij/ide/impl/StructureViewWrapperImpl.java +++ b/platform/lang-impl/src/com/intellij/ide/impl/StructureViewWrapperImpl.java @@ -157,7 +157,7 @@ public class StructureViewWrapperImpl implements StructureViewWrapper, Disposabl myFirstRun = false; } - private void setFile(VirtualFile file) { + private void setFile(@Nullable VirtualFile file) { boolean forceRebuild = !Comparing.equal(file, myFile); if (!forceRebuild && myStructureView != null) { StructureViewModel model = myStructureView.getTreeModel(); @@ -168,6 +168,9 @@ public class StructureViewWrapperImpl implements StructureViewWrapper, Disposabl myStructureView instanceof StructureViewComposite && ((StructureViewComposite)myStructureView).isOutdated()) { forceRebuild = true; } + else if (file != null) { + forceRebuild = FileEditorManager.getInstance(myProject).getSelectedEditor(file) != myFileEditor; + } } if (forceRebuild) { myFile = file; @@ -284,7 +287,7 @@ public class StructureViewWrapperImpl implements StructureViewWrapper, Disposabl final StructureViewBuilder structureViewBuilder = editor.getStructureViewBuilder(); if (structureViewBuilder != null) { myStructureView = structureViewBuilder.createStructureView(editor, myProject); - myFileEditor = editor; + myFileEditor = needDisposeEditor ? null : editor; Disposer.register(this, myStructureView); updateHeaderActions(myStructureView);