From dbb9614a6b6d1ffaa8ff18f8edf2267e7efbd8db Mon Sep 17 00:00:00 2001 From: Anton Makeev Date: Wed, 11 Jul 2012 14:17:26 +0200 Subject: [PATCH] Undo: do no record originator for non-physical documents (like refactorings dialogs) --- .../com/intellij/openapi/command/impl/CommandMerger.java | 8 ++++++++ .../intellij/openapi/command/impl/UndoManagerImpl.java | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) 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;