src/macosx/classes/sun/lwawt/LWTextComponentPeer.java
Print this page
@@ -29,10 +29,11 @@
import java.awt.Dimension;
import java.awt.FontMetrics;
import java.awt.Insets;
import java.awt.SystemColor;
import java.awt.TextComponent;
+import java.awt.event.FocusEvent;
import java.awt.event.TextEvent;
import java.awt.event.InputMethodListener;
import java.awt.event.InputMethodEvent;
import java.awt.im.InputMethodRequests;
import java.awt.peer.TextComponentPeer;
@@ -208,18 +209,33 @@
public final void removeUpdate(final DocumentEvent e) {
sendTextEvent(e);
}
@Override
- public void inputMethodTextChanged(InputMethodEvent event) {
+ public final void inputMethodTextChanged(final InputMethodEvent event) {
synchronized (getDelegateLock()) {
AWTAccessor.getComponentAccessor().processEvent(getTextComponent(), event);
}
}
@Override
- public void caretPositionChanged(InputMethodEvent event) {
+ public final void caretPositionChanged(final InputMethodEvent event) {
synchronized (getDelegateLock()) {
AWTAccessor.getComponentAccessor().processEvent(getTextComponent(), event);
}
}
+
+ /**
+ * Restoring native behavior. We should sets the selection range to zero,
+ * when component lost its focus.
+ *
+ * @param e the focus event
+ */
+ @Override
+ protected final void handleJavaFocusEvent(final FocusEvent e) {
+ if (e.getID() == FocusEvent.FOCUS_LOST) {
+ // In order to de-select the selection
+ setCaretPosition(getCaretPosition());
+ }
+ super.handleJavaFocusEvent(e);
+ }
}