From d3a2f47f1aeba79b76d8929bd26c1828a9724e07 Mon Sep 17 00:00:00 2001 From: Thomas Wolf Date: Sun, 8 Jul 2018 17:07:50 +0200 Subject: Fix "Compare with Previous" in history view and commit editor outline Enable or include the command only if there _is_ a previous revision to compare to (i.e., only if the diff is not an addition). Also fix the comparison itself to work for renames, too. Bug: 536799 Change-Id: Ia2c0a706d1bac2f67fad4dbe686cd3e0d9d013d8 Signed-off-by: Thomas Wolf --- .../ui/internal/commit/DiffEditorOutlinePage.java | 28 ++++++++++++---------- .../egit/ui/internal/commit/DiffViewer.java | 8 ++----- .../ui/internal/history/CommitFileDiffViewer.java | 2 +- 3 files changed, 18 insertions(+), 20 deletions(-) (limited to 'org.eclipse.egit.ui/src/org/eclipse/egit/ui') diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/DiffEditorOutlinePage.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/DiffEditorOutlinePage.java index 50a264f11b..fa2cb6bdb6 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/DiffEditorOutlinePage.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/DiffEditorOutlinePage.java @@ -224,19 +224,21 @@ public class DiffEditorOutlinePage extends NestedContentOutlinePage { } } }); - } - if (selected.size() == 1) { - menuManager.add(new Separator()); - menuManager.add(new Action( - UIText.CommitFileDiffViewer_CompareMenuLabel) { - - @Override - public void run() { - FileDiffRegion fileDiff = selected.iterator().next(); - DiffViewer.showTwoWayFileDiff(fileDiff.getRepository(), - fileDiff.getDiff()); - } - }); + if (selected.size() == 1) { + menuManager.add(new Separator()); + menuManager.add(new Action( + UIText.CommitFileDiffViewer_CompareMenuLabel) { + + @Override + public void run() { + FileDiffRegion fileDiff = selected.iterator() + .next(); + DiffViewer.showTwoWayFileDiff( + fileDiff.getRepository(), + fileDiff.getDiff()); + } + }); + } } }); Menu menu = contextMenu.createContextMenu(viewer.getTree()); diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/DiffViewer.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/DiffViewer.java index 303fa411ef..f758e60bd0 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/DiffViewer.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/DiffViewer.java @@ -39,7 +39,6 @@ import org.eclipse.compare.ITypedElement; import org.eclipse.core.resources.IFile; import org.eclipse.core.runtime.Assert; import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.Path; import org.eclipse.egit.core.internal.util.ResourceUtil; @@ -842,11 +841,8 @@ public class DiffViewer extends HyperlinkSourceViewer { newCommit.getName(), oldCommit.getName(), false, page); } else { - IPath location = new Path( - repository.getWorkTree().getAbsolutePath()) - .append(np); - CompareUtils.compare(location, repository, - newCommit.getName(), oldCommit.getName(), false, + CompareUtils.compareBetween(repository, np, op, + newCommit.getName(), oldCommit.getName(), page); } } catch (IOException e) { diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/CommitFileDiffViewer.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/CommitFileDiffViewer.java index 2b73ac8542..2f4d5fa275 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/CommitFileDiffViewer.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/CommitFileDiffViewer.java @@ -366,7 +366,7 @@ public class CommitFileDiffViewer extends TableViewer { boolean oneOrMoreSelected = !sel.isEmpty(); openThisVersion.setEnabled(oneOrMoreSelected && !deleteSelected); openPreviousVersion.setEnabled(oneOrMoreSelected && !addSelected); - compare.setEnabled(sel.size() == 1); + compare.setEnabled(sel.size() == 1 && !addSelected); blame.setEnabled(oneOrMoreSelected); if (sel.size() == 1) { FileDiff diff = (FileDiff) sel.getFirstElement(); -- cgit v1.2.3