Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPhilip Langer2017-11-28 13:31:53 +0000
committerLaurent Goubet2018-05-01 11:20:21 +0000
commitfea6b439aaf4517c86d9c78014757fb40fdf2637 (patch)
tree1656598d6b4165e9753736938913533d63b61189 /plugins/org.eclipse.emf.compare.ide.ui/src
parent9afc808e73baf45bbaf5e0b06a2b101816f6767a (diff)
downloadorg.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>
Diffstat (limited to 'plugins/org.eclipse.emf.compare.ide.ui/src')
-rw-r--r--plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/contentmergeviewer/tree/provider/TreeMergeViewerItemContentProvider.java8
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);

Back to the top