From dccad1641ffc2b5468f96dcc3555d9ef4b980c34 Mon Sep 17 00:00:00 2001 From: Aleksey Pivovarov Date: Tue, 30 Sep 2014 17:24:42 +0400 Subject: [PATCH] IDEA-130588 dir-diff: do not confirm deletion, if deleted files are not selected --- .../openapi/diff/impl/dir/DirDiffTableModel.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/platform/vcs-impl/src/com/intellij/openapi/diff/impl/dir/DirDiffTableModel.java b/platform/vcs-impl/src/com/intellij/openapi/diff/impl/dir/DirDiffTableModel.java index 8bd61595ba7c..89de8bd1d749 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/diff/impl/dir/DirDiffTableModel.java +++ b/platform/vcs-impl/src/com/intellij/openapi/diff/impl/dir/DirDiffTableModel.java @@ -762,11 +762,12 @@ public class DirDiffTableModel extends AbstractTableModel implements DirDiffMode } public void synchronizeSelected() { - if (!checkCanDelete()) { + List selectedElements = getSelectedElements(); + if (!checkCanDelete(selectedElements)) { return; } rememberSelection(); - for (DirDiffElementImpl element : getSelectedElements()) { + for (DirDiffElementImpl element : selectedElements) { syncElement(element); } restoreSelection(); @@ -779,19 +780,20 @@ public class DirDiffTableModel extends AbstractTableModel implements DirDiffMode } public void synchronizeAll() { - if (!checkCanDelete()) { + List elements = new ArrayList(myElements); + if (!checkCanDelete(elements)) { return; } - for (DirDiffElementImpl element : myElements.toArray(new DirDiffElementImpl[myElements.size()])) { + for (DirDiffElementImpl element : elements) { syncElement(element); } selectFirstRow(); } - private boolean checkCanDelete() { + private boolean checkCanDelete(List elements) { if (WarnOnDeletion.isWarnWhenDeleteItems()) { int count = 0; - for (DirDiffElementImpl element : myElements) { + for (DirDiffElementImpl element : elements) { if (element.getOperation() == DirDiffOperation.DELETE) { count++; }