diff options
Diffstat (limited to 'platform/vcs-impl/src/com/intellij/openapi/vcs/ex/RollbackLineStatusAction.java')
-rw-r--r-- | platform/vcs-impl/src/com/intellij/openapi/vcs/ex/RollbackLineStatusAction.java | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/ex/RollbackLineStatusAction.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/ex/RollbackLineStatusAction.java index 1286b6815fcf..529da7371bf7 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/ex/RollbackLineStatusAction.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/ex/RollbackLineStatusAction.java @@ -12,8 +12,6 @@ */ package com.intellij.openapi.vcs.ex; -import com.intellij.icons.AllIcons; -import com.intellij.idea.ActionsBundle; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.CommonDataKeys; import com.intellij.openapi.application.ApplicationManager; @@ -73,6 +71,15 @@ public class RollbackLineStatusAction extends DumbAwareAction { BitSet lines = new BitSet(totalLines + 1); List<Caret> carets = editor.getCaretModel().getAllCarets(); + + if (carets.size() == 1) { + Caret caret = carets.get(0); + if (caret.getSelectionStart() == 0 && caret.getSelectionEnd() == document.getTextLength()) { + doRollback(tracker); + return; + } + } + for (Caret caret : carets) { if (caret.hasSelection()) { int line1 = editor.offsetToLogicalPosition(caret.getSelectionStart()).line; @@ -107,6 +114,15 @@ public class RollbackLineStatusAction extends DumbAwareAction { }); } + private static void doRollback(@NotNull final LineStatusTracker tracker) { + execute(tracker, new Runnable() { + @Override + public void run() { + tracker.rollbackAllChanges(); + } + }); + } + private static void execute(@NotNull final LineStatusTracker tracker, @NotNull final Runnable task) { CommandProcessor.getInstance().executeCommand(tracker.getProject(), new Runnable() { public void run() { |