From e769068f5c07aa8fbbf9c6d59d1cafd372200f09 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Sun, 16 Dec 2018 20:04:27 +0300 Subject: [PATCH] dispose FileManager after Usage view because the latter needs the former during its disposal (EA-133552 - assert: FileManagerImpl.dispatchPendingEvents) --- .../com/intellij/ui/content/impl/ContentManagerImpl.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/ui/content/impl/ContentManagerImpl.java b/platform/platform-impl/src/com/intellij/ui/content/impl/ContentManagerImpl.java index 7db9ce86b16c..7bf9757e1cbc 100644 --- a/platform/platform-impl/src/com/intellij/ui/content/impl/ContentManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/ui/content/impl/ContentManagerImpl.java @@ -12,6 +12,8 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.*; import com.intellij.openapi.wm.IdeFocusManager; +import com.intellij.psi.PsiManager; +import com.intellij.psi.impl.PsiManagerEx; import com.intellij.ui.components.panels.NonOpaquePanel; import com.intellij.ui.content.*; import com.intellij.util.EventDispatcher; @@ -25,8 +27,8 @@ import javax.swing.*; import java.awt.*; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; -import java.util.*; import java.util.List; +import java.util.*; /** * @author Anton Katilin @@ -61,7 +63,8 @@ public class ContentManagerImpl implements ContentManager, PropertyChangeListene myUI = contentUI; myUI.setManager(this); - Disposer.register(project, this); + // register on FileManager because before Content disposal the UsageView is disposed before which virtual file pointers should be externalized for which they need to be restored for which com.intellij.psi.impl.smartPointers.SelfElementInfo.restoreFileFromVirtual() must be able to work for which the findFile() must access filemanager for which it must be alive + Disposer.register(((PsiManagerEx)PsiManager.getInstance(project)).getFileManager(), this); Disposer.register(this, contentUI); }