diff --git a/platform/platform-impl/src/com/intellij/openapi/command/impl/EditorAndState.java b/platform/platform-impl/src/com/intellij/openapi/command/impl/EditorAndState.java index 6ddc227a81f8..8f1207d40199 100644 --- a/platform/platform-impl/src/com/intellij/openapi/command/impl/EditorAndState.java +++ b/platform/platform-impl/src/com/intellij/openapi/command/impl/EditorAndState.java @@ -3,23 +3,26 @@ package com.intellij.openapi.command.impl; import com.intellij.openapi.fileEditor.FileEditor; import com.intellij.openapi.fileEditor.FileEditorState; +import com.intellij.openapi.fileEditor.FileEditorStateLevel; import com.intellij.openapi.vfs.VirtualFile; import java.util.Objects; class EditorAndState { private final FileEditorState myState; - private final Class myEditorClass; private final VirtualFile myVirtualFile; public EditorAndState(FileEditor editor, FileEditorState state) { - myEditorClass = editor.getClass(); myVirtualFile = editor.getFile(); myState = state; } public boolean canBeAppliedTo(FileEditor editor) { - return editor.getClass() == myEditorClass && Objects.equals(myVirtualFile, editor.getFile()); + if (editor == null) return false; + if (!Objects.equals(myVirtualFile, editor.getFile())) return false; + if (myState == null) return false; + FileEditorState currentState = editor.getState(FileEditorStateLevel.UNDO); + return myState.getClass() == currentState.getClass(); } public FileEditorState getState() {