diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/actions/AnnotatePreviousRevisionAction.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/actions/AnnotatePreviousRevisionAction.java index 476f63865f6a..3318a1544ed5 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/actions/AnnotatePreviousRevisionAction.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/actions/AnnotatePreviousRevisionAction.java @@ -1,10 +1,12 @@ package com.intellij.openapi.vcs.actions; import com.intellij.icons.AllIcons; +import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.vcs.AbstractVcs; import com.intellij.openapi.vcs.annotate.FileAnnotation; import com.intellij.openapi.vcs.history.VcsFileRevision; import com.intellij.openapi.vcs.history.VcsRevisionNumber; +import com.intellij.util.containers.ContainerUtil; import com.intellij.util.containers.HashMap; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -15,6 +17,7 @@ import java.util.Map; class AnnotatePreviousRevisionAction extends AnnotateRevisionAction { @Nullable private final List myRevisions; + @Nullable private final VcsFileRevision myLastRevision; public AnnotatePreviousRevisionAction(@NotNull FileAnnotation annotation, @NotNull AbstractVcs vcs) { super("Annotate Previous Revision", "Annotate successor of selected revision in new tab", AllIcons.Actions.Annotate, @@ -22,6 +25,7 @@ class AnnotatePreviousRevisionAction extends AnnotateRevisionAction { List revisions = annotation.getRevisions(); if (revisions == null) { myRevisions = null; + myLastRevision = null; return; } @@ -36,6 +40,8 @@ class AnnotatePreviousRevisionAction extends AnnotateRevisionAction { for (int i = 0; i < annotation.getLineCount(); i++) { myRevisions.add(map.get(annotation.getLineRevisionNumber(i))); } + + myLastRevision = ContainerUtil.getFirstItem(revisions); } @Override @@ -43,4 +49,13 @@ class AnnotatePreviousRevisionAction extends AnnotateRevisionAction { public List getRevisions() { return myRevisions; } + + @Nullable + @Override + protected VcsFileRevision getFileRevision(@NotNull AnActionEvent e) { + if (getCurrentLine() == -1) { + return myLastRevision; + } + return super.getFileRevision(e); + } } diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/actions/AnnotateRevisionAction.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/actions/AnnotateRevisionAction.java index 024bcbce4ae2..baad9ad8a236 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/actions/AnnotateRevisionAction.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/actions/AnnotateRevisionAction.java @@ -98,4 +98,8 @@ abstract class AnnotateRevisionAction extends AnnotateRevisionActionBase impleme public void consume(Integer integer) { currentLine = integer; } + + public int getCurrentLine() { + return currentLine; + } }