diff options
author | Philip Langer | 2017-11-28 13:31:53 +0000 |
---|---|---|
committer | Laurent Goubet | 2018-05-01 11:20:21 +0000 |
commit | fea6b439aaf4517c86d9c78014757fb40fdf2637 (patch) | |
tree | 1656598d6b4165e9753736938913533d63b61189 | |
parent | 9afc808e73baf45bbaf5e0b06a2b101816f6767a (diff) | |
download | org.eclipse.emf.compare-fea6b439aaf4517c86d9c78014757fb40fdf2637.tar.gz org.eclipse.emf.compare-fea6b439aaf4517c86d9c78014757fb40fdf2637.tar.xz org.eclipse.emf.compare-fea6b439aaf4517c86d9c78014757fb40fdf2637.zip |
[527864] Prevent CMV lines to be broken after merging an add/delete diff
With this change, we consider the merge decision after a diff has been
accepted/rejected when deciding whether to show or not to show
placeholders in order to avoid breaking the connecting lines in the
TreeMergeViewer.
Bug: 527864
Change-Id: I6100096e13c60c8cd02afff40ed3edbcd22b85e3
Signed-off-by: Philip Langer <planger@eclipsesource.com>
-rw-r--r-- | plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/contentmergeviewer/tree/provider/TreeMergeViewerItemContentProvider.java | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/contentmergeviewer/tree/provider/TreeMergeViewerItemContentProvider.java b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/contentmergeviewer/tree/provider/TreeMergeViewerItemContentProvider.java index 4a02b6039..2cd2ec312 100644 --- a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/contentmergeviewer/tree/provider/TreeMergeViewerItemContentProvider.java +++ b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/contentmergeviewer/tree/provider/TreeMergeViewerItemContentProvider.java @@ -7,6 +7,7 @@ * * Contributors: * Alexandra Buzila, Stefan Dirix - initial API and implementation + * Philip Langer - bug 527864 *******************************************************************************/ package org.eclipse.emf.compare.ide.ui.internal.contentmergeviewer.tree.provider; @@ -47,6 +48,7 @@ import org.eclipse.emf.compare.ConflictKind; import org.eclipse.emf.compare.Diff; import org.eclipse.emf.compare.DifferenceKind; import org.eclipse.emf.compare.DifferenceSource; +import org.eclipse.emf.compare.DifferenceState; import org.eclipse.emf.compare.Match; import org.eclipse.emf.compare.ResourceAttachmentChange; import org.eclipse.emf.compare.graph.IGraphView; @@ -817,7 +819,7 @@ public class TreeMergeViewerItemContentProvider implements IMergeViewerItemConte * {@code false} otherwise. */ private boolean isInsertOnBothSides(Diff diff, Match match) { - return isInTerminalState(diff) + return diff.getState() == DifferenceState.MERGED && (match == null || (match.getLeft() == null && match.getRight() == null)); } @@ -861,7 +863,7 @@ public class TreeMergeViewerItemContentProvider implements IMergeViewerItemConte * otherwise. */ private boolean isAddOnOppositeSide(Diff diff, MergeViewerSide side) { - if (!isInTerminalState(diff) && diff.getKind() == DifferenceKind.ADD) { + if (diff.getState() != DifferenceState.MERGED && diff.getKind() == DifferenceKind.ADD) { DifferenceSource source = diff.getSource(); return (source == DifferenceSource.LEFT && side == MergeViewerSide.RIGHT) || (source == DifferenceSource.RIGHT && side == MergeViewerSide.LEFT); @@ -880,7 +882,7 @@ public class TreeMergeViewerItemContentProvider implements IMergeViewerItemConte * otherwise. */ private boolean isDeleteOnSameSide(Diff diff, MergeViewerSide side) { - if (!isInTerminalState(diff) && diff.getKind() == DifferenceKind.DELETE) { + if (diff.getState() != DifferenceState.DISCARDED && diff.getKind() == DifferenceKind.DELETE) { DifferenceSource source = diff.getSource(); return (source == DifferenceSource.LEFT && side == MergeViewerSide.LEFT) || (source == DifferenceSource.RIGHT && side == MergeViewerSide.RIGHT); |