diff --git a/platform/platform-impl/src/com/intellij/openapi/command/impl/CommandMerger.java b/platform/platform-impl/src/com/intellij/openapi/command/impl/CommandMerger.java index a5b968468de0..ca9103d60b1a 100644 --- a/platform/platform-impl/src/com/intellij/openapi/command/impl/CommandMerger.java +++ b/platform/platform-impl/src/com/intellij/openapi/command/impl/CommandMerger.java @@ -231,6 +231,14 @@ public class CommandMerger { return !myCurrentActions.isEmpty(); } + public boolean isPhysical() { + if (myAllAffectedDocuments.isEmpty()) return false; + for (DocumentReference each : myAllAffectedDocuments) { + if (each.getFile() == null) return false; + } + return true; + } + public boolean isUndoAvailable(@NotNull Collection refs) { if (hasNonUndoableActions()) { return false; diff --git a/platform/platform-impl/src/com/intellij/openapi/command/impl/UndoManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/command/impl/UndoManagerImpl.java index 8dfe6ea8cfed..b412d811ea4d 100644 --- a/platform/platform-impl/src/com/intellij/openapi/command/impl/UndoManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/command/impl/UndoManagerImpl.java @@ -283,7 +283,7 @@ public class UndoManagerImpl extends UndoManager implements ProjectComponent, Ap myCommandLevel--; if (myCommandLevel > 0) return; - if (myProject != null && myCurrentMerger.hasActions() && !myCurrentMerger.isTransparent()) { + if (myProject != null && myCurrentMerger.hasActions() && !myCurrentMerger.isTransparent() && myCurrentMerger.isPhysical()) { addFocusedDocumentAsAffected(); } myOriginatorReference = null;