Mercurial > hg > release > icedtea7-forest-2.2 > jdk
changeset 5313:6b5f3f9dbf17
7156194: [macosx] Can't type non-ASCII characters into applets
Reviewed-by: anthony
author | andrew |
---|---|
date | Wed, 12 Jun 2013 11:23:55 +0100 |
parents | 0b05585db1c8 |
children | fb619d31dd14 |
files | src/macosx/classes/sun/lwawt/macosx/CEmbeddedFrame.java src/macosx/classes/sun/lwawt/macosx/CPlatformResponder.java src/macosx/classes/sun/lwawt/macosx/CPlatformView.java |
diffstat | 3 files changed, 30 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/macosx/classes/sun/lwawt/macosx/CEmbeddedFrame.java Wed Jun 12 11:21:44 2013 +0100 +++ b/src/macosx/classes/sun/lwawt/macosx/CEmbeddedFrame.java Wed Jun 12 11:23:55 2013 +0100 @@ -87,11 +87,18 @@ } public void handleKeyEvent(int eventType, int modifierFlags, String characters, + String charsIgnoringMods, boolean isRepeat, short keyCode, + boolean needsKeyTyped) { + responder.handleKeyEvent(eventType, modifierFlags, charsIgnoringMods, keyCode, needsKeyTyped); + } + + // REMIND: delete this method once 'deploy' changes for 7156194 is pushed + public void handleKeyEvent(int eventType, int modifierFlags, String characters, String charsIgnoringMods, boolean isRepeat, short keyCode) { - responder.handleKeyEvent(eventType, modifierFlags, charsIgnoringMods, keyCode); + handleKeyEvent(eventType, modifierFlags, characters, charsIgnoringMods, isRepeat, keyCode, true); } public void handleInputEvent(String text) { - new RuntimeException("Not implemented"); + responder.handleInputEvent(text); } }
--- a/src/macosx/classes/sun/lwawt/macosx/CPlatformResponder.java Wed Jun 12 11:21:44 2013 +0100 +++ b/src/macosx/classes/sun/lwawt/macosx/CPlatformResponder.java Wed Jun 12 11:23:55 2013 +0100 @@ -126,7 +126,7 @@ * 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); @@ -182,6 +182,10 @@ eventNotifier.notifyKeyEvent(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. @@ -194,4 +198,19 @@ 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); + eventNotifier.notifyKeyEvent(KeyEvent.KEY_TYPED, + System.currentTimeMillis(), + 0, KeyEvent.VK_UNDEFINED, c, + KeyEvent.KEY_LOCATION_UNKNOWN); + index++; + } + } + } }
--- a/src/macosx/classes/sun/lwawt/macosx/CPlatformView.java Wed Jun 12 11:21:44 2013 +0100 +++ b/src/macosx/classes/sun/lwawt/macosx/CPlatformView.java Wed Jun 12 11:23:55 2013 +0100 @@ -212,7 +212,7 @@ private void deliverKeyEvent(NSEvent event) { responder.handleKeyEvent(event.getType(), event.getModifierFlags(), - event.getCharactersIgnoringModifiers(), event.getKeyCode()); + event.getCharactersIgnoringModifiers(), event.getKeyCode(), true); } private void deliverWindowDidExposeEvent() {