CaretCursor.setEnabled() -- fix for disappering cursor, rollbacked Grishas changes

This commit is contained in:
Kirill Kalishev
2010-02-09 11:25:44 +03:00
parent 6637c02210
commit b433862052
3 changed files with 22 additions and 17 deletions
@@ -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);
}
@@ -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);
@@ -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();