diff --git a/platform/lang-impl/src/com/intellij/injected/editor/EditorWindow.java b/platform/lang-impl/src/com/intellij/injected/editor/EditorWindow.java index 744750164e2d..9c7f2eecb194 100644 --- a/platform/lang-impl/src/com/intellij/injected/editor/EditorWindow.java +++ b/platform/lang-impl/src/com/intellij/injected/editor/EditorWindow.java @@ -474,6 +474,10 @@ public class EditorWindow implements EditorEx, UserDataHolderEx { return myDelegate.setCaretVisible(b); } + public boolean setCaretEnabled(boolean enabled) { + return myDelegate.setCaretEnabled(enabled); + } + public void addFocusListener(final FocusChangeListener listener) { myDelegate.addFocusListener(listener); } diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/ex/EditorEx.java b/platform/platform-impl/src/com/intellij/openapi/editor/ex/EditorEx.java index 8a10e956530d..d5f9733d2824 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/ex/EditorEx.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/ex/EditorEx.java @@ -87,6 +87,8 @@ public interface EditorEx extends Editor { boolean setCaretVisible(boolean b); + boolean setCaretEnabled(boolean enabled); + void addFocusListener(FocusChangeListener listener); void setOneLineMode(boolean b); 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 b43f5df21b1e..68c391f69e18 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 @@ -549,7 +549,7 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi myEditorComponent.addFocusListener(new FocusAdapter() { public void focusGained(FocusEvent e) { - myCaretCursor.activate(false); + myCaretCursor.activate(); int caretLine = getCaretModel().getLogicalPosition().line; repaintLines(caretLine, caretLine); fireFocusGained(); @@ -2669,10 +2669,9 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi } public boolean setCaretVisible(boolean b) { - myCaretCursor.setVisible(b); boolean old = myCaretCursor.isActive(); if (b) { - myCaretCursor.activate(true); + myCaretCursor.activate(); } else { myCaretCursor.passivate(); @@ -2680,6 +2679,12 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi return old; } + public boolean setCaretEnabled(boolean enabled) { + boolean old = myCaretCursor.isEnabled(); + myCaretCursor.setEnabled(enabled); + return old; + } + public void addFocusListener(FocusChangeListener listener) { myFocusListeners.add(listener); } @@ -2722,7 +2727,7 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi private class CaretCursor { private Point myLocation; private int myWidth; - private boolean myIsVisible; + private boolean myEnabled; @SuppressWarnings({"FieldAccessedSynchronizedAndUnsynchronized"}) private boolean myIsShown = false; @@ -2730,23 +2735,18 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi private CaretCursor() { myLocation = new Point(0, 0); - myIsVisible = true; + setEnabled(true); } - public boolean isVisible() { - return myIsVisible; + public boolean isEnabled() { + return myEnabled; } - public void setVisible(boolean visible) { - myIsVisible = visible; + public void setEnabled(boolean enabled) { + myEnabled = enabled; } - private void activate(boolean enforceVisible) { - if (enforceVisible) { - setVisible(true); - } - - if (!myIsVisible) return; + private void activate() { final boolean blink = mySettings.isBlinkCaret(); final int blinkPeriod = mySettings.getCaretBlinkPeriod(); synchronized (ourCaretBlinkingCommand) { @@ -2772,7 +2772,6 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi private void setPosition(Point location, int width) { myStartTime = System.currentTimeMillis(); myLocation = location; - myIsShown = myIsVisible; myWidth = Math.max(width, 2); repaint(); } @@ -2782,7 +2781,7 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi } private void paint(Graphics g) { - if (!myIsShown || !IJSwingUtilities.hasFocus(getContentComponent()) || isRendererMode()) return; + if (!isEnabled() || !myIsShown || !IJSwingUtilities.hasFocus(getContentComponent()) || isRendererMode()) return; int x = myLocation.x; int lineHeight = getLineHeight();