--- old/src/macosx/classes/sun/lwawt/LWTextComponentPeer.java 2012-02-08 13:57:31.481325100 +0400 +++ new/src/macosx/classes/sun/lwawt/LWTextComponentPeer.java 2012-02-08 13:57:31.124304600 +0400 @@ -31,6 +31,7 @@ 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; @@ -210,16 +211,31 @@ } @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); + } }