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

Print this page

        

@@ -121,11 +121,11 @@
 
     /**
      * Handles key events.
      */
     void handleKeyEvent(int eventType, int modifierFlags, String chars,
-                        short keyCode) {
+                        short keyCode, boolean needsKeyTyped) {
         boolean isFlagsChangedEvent =
             isNpapiCallback ? (eventType == CocoaConstants.NPCocoaEventFlagsChanged) :
                               (eventType == CocoaConstants.NSFlagsChanged);
 
         int jeventType = KeyEvent.KEY_PRESSED;

@@ -177,10 +177,14 @@
         long when = System.currentTimeMillis();
 
         peer.dispatchKeyEvent(jeventType, when, jmodifiers,
                               jkeyCode, javaChar, jkeyLocation);
 
+        // Current browser may be sending input events, so don't
+        // post the KEY_TYPED here.
+        postsTyped &= needsKeyTyped;
+
         // That's the reaction on the PRESSED (not RELEASED) event as it comes to
         // appear in MacOSX.
         // Modifier keys (shift, etc) don't want to send TYPED events.
         // On the other hand we don't want to generate keyTyped events
         // for clipboard related shortcuts like Meta + [CVX]

@@ -189,6 +193,21 @@
             peer.dispatchKeyEvent(KeyEvent.KEY_TYPED, when, jmodifiers,
                                   KeyEvent.VK_UNDEFINED, javaChar,
                                   KeyEvent.KEY_LOCATION_UNKNOWN);
         }
     }
+
+    void handleInputEvent(String text) {
+       if (text != null) {
+           int index = 0, length = text.length();
+           char c;
+           while (index < length) {
+               c = text.charAt(index);
+               peer.dispatchKeyEvent(KeyEvent.KEY_TYPED,
+                                     System.currentTimeMillis(),
+                                     0, KeyEvent.VK_UNDEFINED, c,
+                                     KeyEvent.KEY_LOCATION_UNKNOWN);
+               index++;
+           }
+       }
+    }
 }