Hi All,

Please review a fix for an issue where
when "yen" symbol is entered from a keyboard using Romaji keyboard layout using "backslash" character, it was showing a "backslash" character
rather than "yen" symbol.

This is a regression of JDK-8068283 <https://bugs.openjdk.java.net/browse/JDK-8068283> where the check to control JNI invocation of "sun.lwawt.macosx.CInputMethod.insertText(String)" is changed from
"if ([self hasMarkedText] || !fProcessingKeystroke || (utf8Length > 1))
to
if ([self hasMarkedText] || !fProcessingKeystroke || (utf16Length > 2))

Now, in this case for "yen" symbol, the utf16Length is 2 so InputMethodEvent is not generated, rather a KeyEvent is generated for "\" character. This check was again modified for JDK-8132503 <https://bugs.openjdk.java.net/browse/JDK-8132503> where the check for unichar belongs to certain unicode block is introduced

/(utf8Length > 1) && [self isCodePointInUnicodeBlockNeedingIMEvent:[useString characterAtIndex:0]]/

Now, there although utf8Length is 2 the check for codepoint is complex or not does not take into account "unicode" currency symbols. It only takes into account CJK symbols and punctuations and "Halfwidth and Fullwidth Forms' Unicode block.

Proposed fix also add "currency" symbol unicode [[https://www.fileformat.info/info/unicode/category/Sc/list.htm] in the mix so that we can have InputmethodEvent generated for currency symbols.

Bug: https://bugs.openjdk.java.net/browse/JDK-8191178
webrev: http://cr.openjdk.java.net/~psadhukhan/8191178/webrev.0/

Regards
Prasanta

Reply via email to