mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
hide cursor only on explicit editing actions (typing, enter, backspace, tab) (IDEA-93637)
this won't trigger now on refactorings and other potentially long operations, so responsiveness should be better (mouse will appear quicker when user moves the mouse)
This commit is contained in:
@@ -29,6 +29,7 @@ import com.intellij.openapi.actionSystem.DataContext;
|
||||
import com.intellij.openapi.command.CommandProcessor;
|
||||
import com.intellij.openapi.editor.*;
|
||||
import com.intellij.openapi.editor.actionSystem.EditorWriteActionHandler;
|
||||
import com.intellij.openapi.editor.ex.util.EditorUIUtil;
|
||||
import com.intellij.openapi.editor.ex.util.EditorUtil;
|
||||
import com.intellij.util.ui.MacUIUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -45,7 +46,7 @@ public class BackspaceAction extends TextComponentEditorAction {
|
||||
|
||||
@Override
|
||||
public void executeWriteAction(Editor editor, Caret caret, DataContext dataContext) {
|
||||
MacUIUtil.hideCursor();
|
||||
EditorUIUtil.hideCursorInEditor(editor);
|
||||
CommandProcessor.getInstance().setCurrentCommandGroupId(EditorActionUtil.DELETE_COMMAND_GROUP);
|
||||
if (editor instanceof EditorWindow) {
|
||||
// manipulate actual document/editor instead of injected
|
||||
|
||||
@@ -29,6 +29,7 @@ import com.intellij.openapi.command.CommandProcessor;
|
||||
import com.intellij.openapi.editor.*;
|
||||
import com.intellij.openapi.editor.actionSystem.EditorAction;
|
||||
import com.intellij.openapi.editor.actionSystem.EditorWriteActionHandler;
|
||||
import com.intellij.openapi.editor.ex.util.EditorUIUtil;
|
||||
import com.intellij.openapi.editor.ex.util.EditorUtil;
|
||||
import com.intellij.openapi.ide.CopyPasteManager;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
@@ -46,7 +47,7 @@ public class DeleteAction extends EditorAction {
|
||||
|
||||
@Override
|
||||
public void executeWriteAction(Editor editor, DataContext dataContext) {
|
||||
MacUIUtil.hideCursor();
|
||||
EditorUIUtil.hideCursorInEditor(editor);
|
||||
CommandProcessor.getInstance().setCurrentCommandGroupId(EditorActionUtil.DELETE_COMMAND_GROUP);
|
||||
CopyPasteManager.getInstance().stopKillRings();
|
||||
SelectionModel selectionModel = editor.getSelectionModel();
|
||||
|
||||
@@ -29,6 +29,7 @@ import com.intellij.openapi.command.CommandProcessor;
|
||||
import com.intellij.openapi.editor.*;
|
||||
import com.intellij.openapi.editor.actionSystem.EditorAction;
|
||||
import com.intellij.openapi.editor.actionSystem.EditorWriteActionHandler;
|
||||
import com.intellij.openapi.editor.ex.util.EditorUIUtil;
|
||||
import com.intellij.util.ui.MacUIUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -57,7 +58,7 @@ public class EnterAction extends EditorAction {
|
||||
}
|
||||
|
||||
public static void insertNewLineAtCaret(Editor editor) {
|
||||
MacUIUtil.hideCursor();
|
||||
EditorUIUtil.hideCursorInEditor(editor);
|
||||
Document document = editor.getDocument();
|
||||
int caretLine = editor.getCaretModel().getLogicalPosition().line;
|
||||
if(!editor.isInsertMode()) {
|
||||
|
||||
@@ -32,6 +32,7 @@ import com.intellij.openapi.editor.actionSystem.EditorAction;
|
||||
import com.intellij.openapi.editor.actionSystem.EditorActionManager;
|
||||
import com.intellij.openapi.editor.actionSystem.EditorWriteActionHandler;
|
||||
import com.intellij.openapi.editor.ex.EditorEx;
|
||||
import com.intellij.openapi.editor.ex.util.EditorUIUtil;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.codeStyle.CodeStyleSettings;
|
||||
@@ -70,7 +71,7 @@ public class TabAction extends EditorAction {
|
||||
}
|
||||
|
||||
private static void insertTabAtCaret(Editor editor, @NotNull Caret caret, @Nullable Project project) {
|
||||
MacUIUtil.hideCursor();
|
||||
EditorUIUtil.hideCursorInEditor(editor);
|
||||
int columnNumber;
|
||||
if (caret.hasSelection()) {
|
||||
columnNumber = editor.visualToLogicalPosition(caret.getSelectionStartPosition()).column;
|
||||
|
||||
@@ -17,6 +17,10 @@ package com.intellij.openapi.editor.ex.util;
|
||||
|
||||
import com.intellij.ide.ui.AntialiasingType;
|
||||
import com.intellij.ide.ui.UISettings;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.editor.impl.EditorImpl;
|
||||
import com.intellij.openapi.util.SystemInfo;
|
||||
import com.intellij.util.ui.MacUIUtil;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
|
||||
import java.awt.*;
|
||||
@@ -40,4 +44,13 @@ public class EditorUIUtil {
|
||||
|
||||
UISettings.setupFractionalMetrics(g2d);
|
||||
}
|
||||
|
||||
public static void hideCursorInEditor(Editor editor) {
|
||||
if (SystemInfo.isMac) {
|
||||
MacUIUtil.hideCursor();
|
||||
}
|
||||
else if (editor instanceof EditorImpl) {
|
||||
((EditorImpl)editor).hideCursor();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,6 +43,7 @@ import com.intellij.openapi.editor.colors.*;
|
||||
import com.intellij.openapi.editor.colors.impl.DelegateColorScheme;
|
||||
import com.intellij.openapi.editor.event.*;
|
||||
import com.intellij.openapi.editor.ex.*;
|
||||
import com.intellij.openapi.editor.ex.util.EditorUIUtil;
|
||||
import com.intellij.openapi.editor.ex.util.EditorUtil;
|
||||
import com.intellij.openapi.editor.ex.util.EmptyEditorHighlighter;
|
||||
import com.intellij.openapi.editor.highlighter.EditorHighlighter;
|
||||
@@ -1203,7 +1204,7 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi
|
||||
}
|
||||
|
||||
ActionManagerEx.getInstanceEx().fireBeforeEditorTyping(c, context);
|
||||
MacUIUtil.hideCursor();
|
||||
EditorUIUtil.hideCursorInEditor(this);
|
||||
processKeyTypedNormally(c, context);
|
||||
|
||||
return true;
|
||||
@@ -2033,10 +2034,10 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi
|
||||
(getCaretModel().getOffset() < e.getOffset() || getCaretModel().getOffset() > e.getOffset() + e.getNewLength())) {
|
||||
restoreCaretRelativePosition();
|
||||
}
|
||||
}
|
||||
|
||||
if (!myIsViewer &&
|
||||
!SystemInfo.isMac && // Mac case is handled separately (see ide.mac.hide.cursor.when.typing registry key)
|
||||
Registry.is("ide.hide.cursor.when.typing") &&
|
||||
public void hideCursor() {
|
||||
if (!myIsViewer && Registry.is("ide.hide.cursor.when.typing") &&
|
||||
EMPTY_CURSOR != null && EMPTY_CURSOR != myEditorComponent.getCursor()) {
|
||||
myEditorComponent.setCursor(EMPTY_CURSOR);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user