[diff/merge] IDEA-88948, IDEA-87029 Put the other side of applied conflicted change...
authorKirill Likhodedov <Kirill.Likhodedov@jetbrains.com>
Fri, 10 Aug 2012 15:29:56 +0000 (19:29 +0400)
committerKirill Likhodedov <Kirill.Likhodedov@jetbrains.com>
Fri, 10 Aug 2012 15:29:56 +0000 (19:29 +0400)
It is the right changelist, if the left one is applied; it is the left changelist if the right one is applied.

platform/platform-impl/src/com/intellij/openapi/diff/impl/incrementalMerge/ConflictChange.java
platform/platform-impl/src/com/intellij/openapi/diff/impl/incrementalMerge/MergeConflict.java

index f43adc6c0fd1ebd8bf5e6d888811ccf4932b8eec..fcb7ffe98e0d60aee6fdec4e5ccb1196a41bb370 100644 (file)
@@ -96,7 +96,9 @@ class ConflictChange extends Change implements DiffRangeMarker.RangeInvalidListe
   private void updateOtherSideOnConflictApply() {
     int startOffset = myConflict.getRange().getEndOffset();
     TextRange emptyRange = new TextRange(startOffset, startOffset);
-    myConflict = myConflict.deriveSideForNotAppliedChange(emptyRange, null, this);
+    ConflictChange leftChange = isBranch(myOriginalSide.getFragmentSide()) ? null : this;
+    ConflictChange rightChange = isBranch(myOriginalSide.getFragmentSide()) ? this : null;
+    myConflict = myConflict.deriveSideForNotAppliedChange(emptyRange, leftChange, rightChange);
     myOriginalSide.getHighlighterHolder().updateHighlighter(myOriginalSide, myType);
     myConflict.getHighlighterHolder().updateHighlighter(myConflict, myType);
     myChangeList.fireOnChangeApplied();
index 728888c8167c371de6c92fdf824b8b19c6fb5ea7..2bab3c00b208b7ec4ca7bee3b8286f842e97dac9 100644 (file)
@@ -50,9 +50,10 @@ class MergeConflict extends ChangeSide implements DiffRangeMarker.RangeInvalidLi
     myRightChange = rightChange;
   }
 
-  public MergeConflict deriveSideForNotAppliedChange(TextRange baseRange, @Nullable ConflictChange originalChange, ConflictChange otherChange) {
+  public MergeConflict deriveSideForNotAppliedChange(TextRange baseRange, @Nullable ConflictChange leftChange,
+                                                     @Nullable ConflictChange rightChange) {
     ChangeHighlighterHolder highlighterHolder = new ChangeHighlighterHolder();
-    MergeConflict mergeConflict = new MergeConflict(baseRange, myMergeList, highlighterHolder, originalChange, otherChange);
+    MergeConflict mergeConflict = new MergeConflict(baseRange, myMergeList, highlighterHolder, leftChange, rightChange);
     highlighterHolder.highlight(mergeConflict, myCommonHighlighterHolder.getEditor(), ChangeType.CONFLICT);
     return mergeConflict;
   }