src/macosx/classes/sun/lwawt/macosx/CPlatformResponder.java

Print this page

        

@@ -39,10 +39,11 @@
  */
 final class CPlatformResponder {
 
     private final LWWindowPeer peer;
     private final boolean isNpapiCallback;
+    private int lastKeyPressCode = KeyEvent.VK_UNDEFINED;
 
     CPlatformResponder(final LWWindowPeer peer, final boolean isNpapiCallback) {
         this.peer = peer;
         this.isNpapiCallback = isNpapiCallback;
     }

@@ -181,10 +182,13 @@
 
 
         int jmodifiers = NSEvent.nsToJavaKeyModifiers(modifierFlags);
         long when = System.currentTimeMillis();
 
+        if (jeventType == KeyEvent.KEY_PRESSED) {
+            lastKeyPressCode = jkeyCode;
+        }
         peer.dispatchKeyEvent(jeventType, when, jmodifiers,
                               jkeyCode, javaChar, jkeyLocation);
 
         // Current browser may be sending input events, so don't
         // post the KEY_TYPED here.

@@ -211,10 +215,14 @@
                 c = text.charAt(index);
                 peer.dispatchKeyEvent(KeyEvent.KEY_TYPED,
                                       System.currentTimeMillis(),
                                       0, KeyEvent.VK_UNDEFINED, c,
                                       KeyEvent.KEY_LOCATION_UNKNOWN);
+                peer.dispatchKeyEvent(KeyEvent.KEY_RELEASED,
+                        System.currentTimeMillis(),
+                        0, lastKeyPressCode, c,
+                        KeyEvent.KEY_LOCATION_UNKNOWN);
                 index++;
             }
         }
     }