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);
+    }
 }