mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[platform] Make scroll-to-end presentation behave like a button
It already behaved like a button, the presentation just made it look like a toggleable. #IDEA-199277 GitOrigin-RevId: c6b314786c0cfe24d32d48b495c7b7743f9b7ff8
This commit is contained in:
committed by
intellij-monorepo-bot
parent
fce6b1d969
commit
d82fc55b38
@@ -286,10 +286,7 @@ public class DuplexConsoleView<S extends ConsoleView, T extends ConsoleView> ext
|
||||
if (action2 instanceof ToggleUseSoftWrapsToolbarAction) {
|
||||
return new MergedWrapTextAction(((ToggleUseSoftWrapsToolbarAction)action1), (ToggleUseSoftWrapsToolbarAction)action2);
|
||||
}
|
||||
else if (action2 instanceof ScrollToTheEndToolbarAction) {
|
||||
return new MergedToggleAction(((ToggleAction)action1), (ToggleAction)action2);
|
||||
}
|
||||
else if (action2 instanceof ClearConsoleAction) {
|
||||
else if (action2 instanceof ClearConsoleAction || action2 instanceof ScrollToTheEndToolbarAction) {
|
||||
return new MergedAction(action1, action2);
|
||||
}
|
||||
else {
|
||||
|
||||
+5
-21
@@ -5,17 +5,15 @@ import com.intellij.codeWithMe.ClientId;
|
||||
import com.intellij.icons.AllIcons;
|
||||
import com.intellij.idea.ActionsBundle;
|
||||
import com.intellij.openapi.actionSystem.ActionUpdateThread;
|
||||
import com.intellij.openapi.actionSystem.AnAction;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.actionSystem.ToggleAction;
|
||||
import com.intellij.openapi.editor.ClientEditorManager;
|
||||
import com.intellij.openapi.editor.Document;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.editor.LogicalPosition;
|
||||
import com.intellij.openapi.editor.ex.util.EditorUtil;
|
||||
import com.intellij.openapi.project.DumbAware;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ScrollToTheEndToolbarAction extends ToggleAction implements DumbAware {
|
||||
public class ScrollToTheEndToolbarAction extends AnAction implements DumbAware {
|
||||
private final Editor myEditor;
|
||||
|
||||
public ScrollToTheEndToolbarAction(final @NotNull Editor editor) {
|
||||
@@ -27,28 +25,14 @@ public class ScrollToTheEndToolbarAction extends ToggleAction implements DumbAwa
|
||||
getTemplatePresentation().setIcon(AllIcons.RunConfigurations.Scroll_down);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSelected(@NotNull AnActionEvent e) {
|
||||
var editor = ClientEditorManager.getClientEditor(myEditor, ClientId.getCurrentOrNull());
|
||||
Document document = editor.getDocument();
|
||||
return document.getLineCount() == 0 || document.getLineNumber(editor.getCaretModel().getOffset()) == document.getLineCount() - 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull ActionUpdateThread getActionUpdateThread() {
|
||||
return ActionUpdateThread.EDT;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSelected(@NotNull AnActionEvent e, boolean state) {
|
||||
var editor = ClientEditorManager.getClientEditor(myEditor, ClientId.getCurrentOrNull());
|
||||
if (state) {
|
||||
EditorUtil.scrollToTheEnd(editor);
|
||||
} else {
|
||||
int lastLine = Math.max(0, editor.getDocument().getLineCount() - 1);
|
||||
LogicalPosition currentPosition = editor.getCaretModel().getLogicalPosition();
|
||||
LogicalPosition position = new LogicalPosition(Math.max(0, Math.min(currentPosition.line, lastLine - 1)), currentPosition.column);
|
||||
editor.getCaretModel().moveToLogicalPosition(position);
|
||||
}
|
||||
public void actionPerformed(@NotNull AnActionEvent e) {
|
||||
Editor editor = ClientEditorManager.getClientEditor(myEditor, ClientId.getCurrentOrNull());
|
||||
EditorUtil.scrollToTheEnd(editor);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user