<AWT Dev> RFR: 8213232 Unix/X11 setCompositionEnableNative issue

Ichiroh Takiguchi takiguc at linux.vnet.ibm.com
Mon Mar 11 13:00:14 UTC 2019


Hello.

Could you review the fix and give me your suggestion, please ?

Thanks,
Ichiroh Takiguchi

On 2019-02-26 22:08, Ichiroh Takiguchi wrote:
> Hello.
> 
> Could you review the fix ?
> 
> Bug:    https://bugs.openjdk.java.net/browse/JDK-8213232
> Change: https://cr.openjdk.java.net/~itakiguchi/8213232/webrev.01/
> 
> JDK-8213232 [1] has movies.
> Please check it.
> 
> I applied following changes on webrev.01:
> 1. According to "Xlib - C Language X Interface" [2]
>    See "Preedit State Callbacks" section:
>    PreeditStartCallback() should return int.
> 2. Add 64bit Big Endian CPU support, like s390x
> 3. Change copyright year
> 
> [1] https://bugs.openjdk.java.net/browse/JDK-8213232
> [2] 
> https://www.x.org/releases/X11R7.6/doc/libX11/specs/libX11/libX11.html
> 
> Thanks,
> Ichiroh Takiguchi
> IBM Japan, Ltd.
> 
> On 2018-12-04 11:22, Ichiroh Takiguchi wrote:
>> Hello.
>> 
>> Could you review the fix ?
>> 
>> Bug:    https://bugs.openjdk.java.net/browse/JDK-8213232
>> Change: https://cr.openjdk.java.net/~itakiguchi/8213232/webrev.00/
>> 
>> This issue is related by wrong usage of XNPreeditState on 
>> XSetICValues().
>> Because of wrong usage, UnsupportedOperationException exception
>> happened with Xlib bundled input method.
>> Test instructions is in JDK-8213232.
>> 
>> I'd like to obtain a sponsor for this issue.
>> 
>> Thanks,
>> Ichiroh Takiguchi
>> IBM Japan, Ltd.
>> 
>> On 2018-06-19 02:15, Ichiroh Takiguchi wrote:
>>> Hello,
>>> IBM would like to contribute Unix/X11 setCompositionEnableNative 
>>> issue
>>> patch to OpenJDK project.
>>> 
>>> Issue:
>>> To  turn on or turn off IME via Java, XNPreeditState should be used
>>> with XSetValues().
>>> But it should be nested via XVaCreateNestedList() since 
>>> XNPreeditState
>>> is a part of XNPreeditAttributes.
>>> Current code is, like:
>>> -    ret = XSetICValues(pX11IMData->current_ic, XNPreeditState,
>>> -                       (enable ? XIMPreeditEnable : 
>>> XIMPreeditDisable), NULL);
>>> But it should be, like:
>>> +    pr_atrb = XVaCreateNestedList(0,
>>> +                  XNPreeditState, (enable ? XIMPreeditEnable :
>>> XIMPreeditDisable),
>>> +                  NULL);
>>> +    ret = XSetICValues(pX11IMData->current_ic, XNPreeditAttributes,
>>> pr_atrb, NULL);
>>> 
>>> On Linux platform, the issue can check with following test program 
>>> and
>>> kinput2 XIM server and
>>> Wnn8 for Linux/BSD (htt).
>>> ==================
>>> import java.awt.*;
>>> import java.awt.event.*;
>>> import javax.swing.*;
>>> 
>>> public class CompositionEnabledTest extends JFrame {
>>>   CompositionEnabledTest() {
>>>     Container c = getContentPane();
>>>     c.setLayout(new GridLayout(0,2));
>>>     JButton btn;
>>>     JTextField tf;
>>>     btn = new JButton("Undefined");
>>>     c.add(btn);
>>>     tf = new JTextField("Undefined");
>>>     c.add(tf);
>>>     btn = new JButton("Disabled");
>>>     btn.addFocusListener(new MyFocusListener(false));
>>>     c.add(btn);
>>>     tf = new JTextField("Disabled");
>>>     tf.addFocusListener(new MyFocusListener(false));
>>>     c.add(tf);
>>>     btn = new JButton("Enabled");
>>>     btn.addFocusListener(new MyFocusListener(true));
>>>     c.add(btn);
>>>     tf = new JTextField("Enabled");
>>>     tf.addFocusListener(new MyFocusListener(true));
>>>     c.add(tf);
>>>     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
>>>     pack();
>>>     setVisible(true);
>>>   }
>>>   class MyFocusListener implements FocusListener {
>>>     boolean state;
>>>     MyFocusListener(boolean state) {
>>>       this.state = state;
>>>     }
>>>     public void focusGained(FocusEvent fe) {
>>>       
>>> fe.getComponent().getInputContext().setCompositionEnabled(state);
>>>     }
>>>     public void focusLost(FocusEvent fe) { }
>>>   }
>>>   public static void main(String[] args) {
>>>     new CompositionEnabledTest();
>>>   }
>>> }
>>> ==================
>>> 
>>> Click JTextField and JButton, then XIM server status may be changed.
>>> If XIM server does not support XNPreeditState, it does not work.
>>> 
>>> I'd like contribute following 3 files:
>>> M src/java.desktop/share/classes/sun/awt/im/InputContext.java
>>> M src/java.desktop/unix/classes/sun/awt/X11InputMethod.java
>>> M src/java.desktop/unix/native/libawt_xawt/awt/awt_InputMethod.c
>>> 
>>> http://cr.openjdk.java.net/~aleonard/set_composition_enabled/webrev.00/
>>> 
>>> I appreciate any feedback please, and how I would go about obtaining 
>>> a
>>> sponsor and contributor?
>>> 
>>> Thanks,
>>> Ichiroh Takiguchi
>>> IBM Japan, Ltd.



More information about the awt-dev mailing list