--- old/src/java.desktop/macosx/native/libawt_lwawt/awt/AWTView.m 2015-10-26 19:40:28.000000000 +0300 +++ new/src/java.desktop/macosx/native/libawt_lwawt/awt/AWTView.m 2015-10-26 19:40:28.000000000 +0300 @@ -889,8 +889,19 @@ // (i.e., when the user uses the Character palette or Inkwell), or when the string to insert is a complex // Unicode value. NSUInteger utf16Length = [aString lengthOfBytesUsingEncoding:NSUTF16StringEncoding]; + NSUInteger utf8Length = [aString lengthOfBytesUsingEncoding:NSUTF8StringEncoding]; + BOOL aStringIsComplex = NO; + if (utf16Length > 2) { + aStringIsComplex = YES; + } else if (utf8Length > 1) { + unichar codePoint = [aString characterAtIndex:0]; + if ((codePoint >= 0x3000) && (codePoint <= 0x303F)) { + // Code point is in 'CJK Symbols and Punctuation' code points range. + aStringIsComplex = YES; + } + } - if ([self hasMarkedText] || !fProcessingKeystroke || (utf16Length > 2)) { + if ([self hasMarkedText] || !fProcessingKeystroke || aStringIsComplex) { JNIEnv *env = [ThreadUtilities getJNIEnv]; static JNF_MEMBER_CACHE(jm_selectPreviousGlyph, jc_CInputMethod, "selectPreviousGlyph", "()V"); --- /dev/null 2015-10-26 19:40:29.000000000 +0300 +++ new/test/java/awt/im/8132503/bug8132503.html 2015-10-26 19:40:28.000000000 +0300 @@ -0,0 +1,38 @@ + + + + +Verify that Chinese full stop symbol can be entered in JTextArea with Pinyin input method (IM). + +This test is for OS X only. For other platforms please simply press "Pass". + +1. Go to "System Preferences -> Keyboard -> Input Sources" and add "Pinyin – Traditional" or "Pinyin – Simplified" IM from Chinese language group. +2. Set current IM to "Pinyin". +3. Set focus to the text area of the test and press "dot" character on the keyboard. +4. Set current IM to the IM used before "Pinyin" was set. +5. If "。" character is displayed in the text area, press "Pass", if "." character is displayed, press "Fail". + + + + --- /dev/null 2015-10-26 19:40:29.000000000 +0300 +++ new/test/java/awt/im/8132503/bug8132503.java 2015-10-26 19:40:29.000000000 +0300 @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* @test + @bug 8132503 + @summary [macosx] Chinese full stop symbol cannot be entered with Pinyin IM on OS X + @author Anton Litvinov + @run applet/manual=yesno bug8132503.html + */ + +import javax.swing.JApplet; +import javax.swing.JScrollPane; +import javax.swing.JTextArea; +import javax.swing.SwingUtilities; + +public class bug8132503 extends JApplet { + @Override + public void init() { + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + JTextArea textArea = new JTextArea("Text area of the test.", 40, 40); + add(new JScrollPane(textArea)); + } + }); + } +}