From cd69756ef2632ed40b7a86f88197f7d1c24116ca Mon Sep 17 00:00:00 2001 From: Dmitry Avdeev Date: Fri, 25 Jan 2013 15:00:04 +0400 Subject: [PATCH] handling non-smart aware editors --- .../fileEditor/impl/FileEditorManagerImpl.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileEditorManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileEditorManagerImpl.java index 491baf1b37bf..c805e3e94ee9 100644 --- a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileEditorManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileEditorManagerImpl.java @@ -45,6 +45,7 @@ import com.intellij.openapi.fileTypes.FileTypeListener; import com.intellij.openapi.fileTypes.FileTypeManager; import com.intellij.openapi.project.DumbAwareRunnable; import com.intellij.openapi.project.DumbService; +import com.intellij.openapi.project.PossiblyDumbAware; import com.intellij.openapi.project.Project; import com.intellij.openapi.project.impl.ProjectImpl; import com.intellij.openapi.roots.ModuleRootAdapter; @@ -148,7 +149,8 @@ public class FileEditorManagerImpl extends FileEditorManagerEx implements Projec } public static boolean isDumbAware(FileEditor editor) { - return Boolean.TRUE.equals(editor.getUserData(DUMB_AWARE)); + return Boolean.TRUE.equals(editor.getUserData(DUMB_AWARE)) && + (!(editor instanceof PossiblyDumbAware) || ((PossiblyDumbAware)editor).isDumbAware()); } //------------------------------------------------------------------------------- @@ -791,7 +793,18 @@ public class FileEditorManagerImpl extends FileEditorManagerEx implements Projec state = editorHistoryManager.getState(file, provider); } if (state != null) { - editor.setState(state); + if (!isDumbAware(editor)) { + final FileEditorState finalState = state; + DumbService.getInstance(getProject()).runWhenSmart(new Runnable() { + @Override + public void run() { + editor.setState(finalState); + } + }); + } + else { + editor.setState(state); + } } }