-
Bug
-
Resolution: Fixed
-
P3
-
11, 12
-
b09
-
windows
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8259944 | 11.0.11-oracle | Dmitry Markov | P3 | Resolved | Fixed | b03 |
JDK-8223192 | 11.0.4 | Ichiroh Takiguchi | P3 | Resolved | Fixed | b02 |
JDK-8259945 | 8u291 | Dmitry Markov | P3 | Resolved | Fixed | b02 |
JDK-8262653 | emb-8u291 | Ichiroh Takiguchi | P3 | Resolved | Fixed | team |
JDK-8265771 | 7u311 | Dmitry Markov | P3 | Resolved | Fixed | b03 |
Issue:
This patch can fix following issues.
A: Cannot display surrogate pair character on Windows floating IME window for passive component
B: Control Windows IME status by using InputSubset and UnicodeBlock for CJK countries
C: Check preedit string availability for Windows Chinese IME
To recreate each issue.
Issue A:
1. Run SwingSet2 Java demo program with Japanese IME.
2. Click InternalFrameDemo's "Frame 0".
3. Turn on Japanese IME, then type "2000B"
(See attached SwingSet2-1.png)
4. Press F5 key.
The character is not displayed properly.
(See attached SwingSet2-2.png)
Withfix screen shot is available on SwingSet2-3.png
I used Japanese Windows 7 for this testing.
(I could not recreate this issue on English Windows Server 2012 R2.
But I could recreate this issue Japanese Windows 10)
Issue B:
Test program (ImSubsetsTest.java):
1. Compile and run ImSubsetsTest with CJK IMEs
2. Select language (ja:Japanese, ko:Korean, zh: Chinese).
Windows IME (same langugae's one) should be turned on.
3. Click JTextField (active component) or JButton (passive component)
(Please check IM status is changed or not)
4. Click different color's JTextField (active component) or JButton
(passive component)
(Please check IM status is changed or not)
5. Following operations did not work
Korean IME : HANJA->LATIN_DIGIT,BASIC_LATIN
Chinese IME : FULLWIDTH_DIGITS->LATIN_DIGIT,BASIC_LATIN
I think you can see this issue with English Windows.
I used English Windows Server 2012 R2 for this testing.
Movies are available, you may see how it works:
Without fix: B-ChineseIME-withoutfix.mov, B-KoreanIME-withoutfix.mov
With fix: B-ChineseIME-withfix.mov, B-KoreanIME-withfix.mov
Issue C:
Test program (IMFTestA):
On Chinese IME (Microsoft Pinyin ABC),
1. Compile and run IMFTestA
2. Click one of JTextArea window, turn ON Chinese IME
3. Click the other window, turn ON Chinese IME
4. Type "nihao", then preedit string is displayed
5. Click the other window, turn OFF Chinese IME
6. Click the other window, preedit string is still displayed but it's not convertable
I used English Windows Server 2012 R2 for this testing.
Movies are available, you may see how it works:
Without fix: C-ChineseIME-withoutfix.mov
With fix: C-ChineseIME-withfix.mov
Reason:
Issue A, proper font is not specified for passive component
Issue B, IME mode setting for CJK Windows IME is not correct
Issue C, Chinese Windows IME shares IME status between windows, Java needs to check preedit string is available or not
This patch can fix following issues.
A: Cannot display surrogate pair character on Windows floating IME window for passive component
B: Control Windows IME status by using InputSubset and UnicodeBlock for CJK countries
C: Check preedit string availability for Windows Chinese IME
To recreate each issue.
Issue A:
1. Run SwingSet2 Java demo program with Japanese IME.
2. Click InternalFrameDemo's "Frame 0".
3. Turn on Japanese IME, then type "2000B"
(See attached SwingSet2-1.png)
4. Press F5 key.
The character is not displayed properly.
(See attached SwingSet2-2.png)
Withfix screen shot is available on SwingSet2-3.png
I used Japanese Windows 7 for this testing.
(I could not recreate this issue on English Windows Server 2012 R2.
But I could recreate this issue Japanese Windows 10)
Issue B:
Test program (ImSubsetsTest.java):
1. Compile and run ImSubsetsTest with CJK IMEs
2. Select language (ja:Japanese, ko:Korean, zh: Chinese).
Windows IME (same langugae's one) should be turned on.
3. Click JTextField (active component) or JButton (passive component)
(Please check IM status is changed or not)
4. Click different color's JTextField (active component) or JButton
(passive component)
(Please check IM status is changed or not)
5. Following operations did not work
Korean IME : HANJA->LATIN_DIGIT,BASIC_LATIN
Chinese IME : FULLWIDTH_DIGITS->LATIN_DIGIT,BASIC_LATIN
I think you can see this issue with English Windows.
I used English Windows Server 2012 R2 for this testing.
Movies are available, you may see how it works:
Without fix: B-ChineseIME-withoutfix.mov, B-KoreanIME-withoutfix.mov
With fix: B-ChineseIME-withfix.mov, B-KoreanIME-withfix.mov
Issue C:
Test program (IMFTestA):
On Chinese IME (Microsoft Pinyin ABC),
1. Compile and run IMFTestA
2. Click one of JTextArea window, turn ON Chinese IME
3. Click the other window, turn ON Chinese IME
4. Type "nihao", then preedit string is displayed
5. Click the other window, turn OFF Chinese IME
6. Click the other window, preedit string is still displayed but it's not convertable
I used English Windows Server 2012 R2 for this testing.
Movies are available, you may see how it works:
Without fix: C-ChineseIME-withoutfix.mov
With fix: C-ChineseIME-withfix.mov
Reason:
Issue A, proper font is not specified for passive component
Issue B, IME mode setting for CJK Windows IME is not correct
Issue C, Chinese Windows IME shares IME status between windows, Java needs to check preedit string is available or not
- backported by
-
JDK-8223192 Windows IME related patch
- Resolved
-
JDK-8259944 Windows IME related patch
- Resolved
-
JDK-8259945 Windows IME related patch
- Resolved
-
JDK-8262653 Windows IME related patch
- Resolved
-
JDK-8265771 Windows IME related patch
- Resolved