From 912e749f79bf8ec67c4b971bd8e85450933b5fd5 Mon Sep 17 00:00:00 2001 From: Aleksey Pivovarov Date: Thu, 6 Mar 2014 19:12:19 +0400 Subject: [PATCH] diff: do not apply single change multiple times When calling "Apply all" we collect both changes in pair. But while applying first change we'll apply second one too. So the second change will be already applied at the time it processed. --- .../diff/impl/incrementalMerge/NoConflictChange.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/platform/platform-impl/src/com/intellij/openapi/diff/impl/incrementalMerge/NoConflictChange.java b/platform/platform-impl/src/com/intellij/openapi/diff/impl/incrementalMerge/NoConflictChange.java index 5ebbe9161a1c..9cd475765952 100644 --- a/platform/platform-impl/src/com/intellij/openapi/diff/impl/incrementalMerge/NoConflictChange.java +++ b/platform/platform-impl/src/com/intellij/openapi/diff/impl/incrementalMerge/NoConflictChange.java @@ -8,6 +8,8 @@ import org.jetbrains.annotations.NotNull; public class NoConflictChange extends TwoSideChange.SideChange { private static final Logger LOG = Logger.getInstance(NoConflictChange.class); + private boolean myApplied; + public NoConflictChange(@NotNull MergeNoConflict twoSideChange, @NotNull FragmentSide mergeSide, @NotNull TextRange baseRange, @@ -24,4 +26,12 @@ public class NoConflictChange extends TwoSideChange.SideChange LOG.assertTrue(otherChange != null, String.format("Other change is null. This change: %s Merge conflict: %s", this, myTwoSideChange)); otherChange.markApplied(); } + + @Override + protected void markApplied() { + if (!myApplied) { + myApplied = true; + super.markApplied(); + } + } }