From 4d059a41306f7cebc189e949f415d7ce6339645c Mon Sep 17 00:00:00 2001 From: Aleksey Pivovarov Date: Mon, 23 Jul 2018 16:01:06 +0300 Subject: [PATCH] EA-124972 vcs: do not access DataContext after showing modal dialogs --- .../vcs/changes/actions/RollbackAction.java | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/actions/RollbackAction.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/actions/RollbackAction.java index 62fca75ca280..91305c2b4bc4 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/actions/RollbackAction.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/actions/RollbackAction.java @@ -96,27 +96,28 @@ public class RollbackAction extends AnAction implements DumbAware { ? null : "Can not " + UIUtil.removeMnemonic(RollbackUtil.getRollbackOperationName(project)) + " now"; if (ChangeListManager.getInstance(project).isFreezedWithNotification(title)) return; - FileDocumentManager.getInstance().saveAllDocuments(); List missingFiles = e.getData(ChangesListView.MISSING_FILES_DATA_KEY); + List changes = getChanges(project, e); + LinkedHashSet modifiedWithoutEditing = getModifiedWithoutEditing(e, project); + if (modifiedWithoutEditing != null) { + changes = ContainerUtil.filter(changes, change -> !modifiedWithoutEditing.contains(change.getVirtualFile())); + } + + + FileDocumentManager.getInstance().saveAllDocuments(); + boolean hasChanges = false; if (missingFiles != null && !missingFiles.isEmpty()) { hasChanges = true; new RollbackDeletionAction().actionPerformed(e); } - List changes = getChanges(project, e); - - final LinkedHashSet modifiedWithoutEditing = getModifiedWithoutEditing(e, project); if (modifiedWithoutEditing != null && !modifiedWithoutEditing.isEmpty()) { hasChanges = true; rollbackModifiedWithoutEditing(project, modifiedWithoutEditing); } - if (modifiedWithoutEditing != null) { - changes = ContainerUtil.filter(changes, change -> !modifiedWithoutEditing.contains(change.getVirtualFile())); - } - if (!changes.isEmpty()) { RollbackChangesDialog.rollbackChanges(project, changes); }