diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/actions/BackspaceAction.java b/platform/platform-impl/src/com/intellij/openapi/editor/actions/BackspaceAction.java index b5e3a2126d13..49ca3c09ec82 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/actions/BackspaceAction.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/actions/BackspaceAction.java @@ -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 diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/actions/DeleteAction.java b/platform/platform-impl/src/com/intellij/openapi/editor/actions/DeleteAction.java index ee54a51aaaed..4bf02a4d31fa 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/actions/DeleteAction.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/actions/DeleteAction.java @@ -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(); diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/actions/EnterAction.java b/platform/platform-impl/src/com/intellij/openapi/editor/actions/EnterAction.java index 382a3978029d..55c329d939d9 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/actions/EnterAction.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/actions/EnterAction.java @@ -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()) { diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/actions/TabAction.java b/platform/platform-impl/src/com/intellij/openapi/editor/actions/TabAction.java index d02cc26ce8b0..c03cea490d31 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/actions/TabAction.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/actions/TabAction.java @@ -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; diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/ex/util/EditorUIUtil.java b/platform/platform-impl/src/com/intellij/openapi/editor/ex/util/EditorUIUtil.java index ccf603fac8df..64fc058950ce 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/ex/util/EditorUIUtil.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/ex/util/EditorUIUtil.java @@ -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(); + } + } } diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java index b770a59ad49d..df5e8cfb5079 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java @@ -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); }