<i18n dev> <AWT Dev> RFR: X11 default visual support for IM status window on VNC
Sergey Bylokhov
Sergey.Bylokhov at oracle.com
Tue Jan 29 18:48:11 UTC 2019
Looks fine, if there are no other comments I'll push the fix this week.
On 21/01/2019 20:08, Ichiroh Takiguchi wrote:
> Hello Sergey.
>
> Sorry, code conflict was there.
> I fixed code conflict and modified Copyright year.
>
> Could you review the fix again ?
>
> Bug: https://bugs.openjdk.java.net/browse/JDK-8212677
> Change: https://cr.openjdk.java.net/~itakiguchi/8212677/webrev.01/
>
> Thanks,
> Ichiroh Takiguchi
> IBM Japan, Ltd.
>
> On 2018-12-01 09:49, Sergey Bylokhov wrote:
>> Looks fine, if there are no other comments I'll push the fix.
>>
>> On 26/11/2018 05:02, Ichiroh Takiguchi wrote:
>>> Hello.
>>>
>>> Could you review the fix ?
>>>
>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8212677
>>> Change: https://cr.openjdk.java.net/~itakiguchi/8212677/webrev.00/
>>>
>>> Screen shots are in JDK-8212677.
>>>
>>> I'd like to obtain a sponsor for this issue.
>>>
>>> Thanks,
>>> Ichiroh Takiguchi
>>> IBM Japan, Ltd.
>>>
>>> On 2018-06-21 21:58, Ichiroh Takiguchi wrote:
>>>> Hello Phil.
>>>>
>>>> I'm sorry, I forgot to put my comment against your question.
>>>>
>>>>> Is this changing the default visual for all WIndows, not just the IM status window?
>>>>> I think we need to understand the implications before this can be accepted.
>>>> I put following debug code:
>>>> =======
>>>> diff -r e1b3def12624
>>>> src/java.desktop/unix/native/libawt_xawt/awt/awt_InputMethod.c
>>>> --- a/src/java.desktop/unix/native/libawt_xawt/awt/awt_InputMethod.c
>>>> Wed Jun 13 06:35:04 2018 +0200
>>>> +++ b/src/java.desktop/unix/native/libawt_xawt/awt/awt_InputMethod.c
>>>> Thu Jun 21 21:23:11 2018 +0900
>>>> @@ -667,6 +667,7 @@
>>>> InputOutput,
>>>> adata->awt_visInfo.visual,
>>>> attribmask, &attrib);
>>>> + fprintf(stderr, "status window id = 0x%X\n", status);
>>>> XSelectInput(dpy, status,
>>>> ExposureMask | StructureNotifyMask | EnterWindowMask |
>>>> LeaveWindowMask | VisibilityChangeMask);
>>>> @@ -680,6 +681,21 @@
>>>> statusWindow->fontset = XCreateFontSet(dpy,
>>>>
>>>> "-*-*-medium-r-normal-*-*-120-*-*-*-*",
>>>> &mclr, &mccr, &dsr);
>>>> + {
>>>> + int cntFonts;
>>>> + for(cntFonts = 0; cntFonts < mccr; cntFonts++) {
>>>> + fprintf(stderr, "[M][%d] %s\n", cntFonts, mclr[cntFonts]);
>>>> + }
>>>> + }
>>>> + {
>>>> + XFontStruct **font_struct_list;
>>>> + char **font_name_list;
>>>> + int cntFonts;
>>>> + int numFonts = XFontsOfFontSet(statusWindow->fontset,
>>>> &font_struct_list, &font_name_list);
>>>> + for(cntFonts = 0; cntFonts < numFonts; cntFonts++) {
>>>> + fprintf(stderr, "[L][%d] %s\n", cntFonts,
>>>> font_name_list[cntFonts]);
>>>> + }
>>>> + }
>>>> /* In case we didn't find the font set, release the list of
>>>> missing characters */
>>>> if (mccr > 0) {
>>>> XFreeStringList(mclr);
>>>> =======
>>>>
>>>> I tested it on RHEL7.
>>>> I thought since window id was assigned, but it was gone on current code.
>>>> =======
>>>> $ java -jar Notepad.jar
>>>> status window id = 0x4000055
>>>> ...
>>>> $ xwininfo -id 0x4000055
>>>> X Error: 9: Bad Drawable: 0x4000055
>>>> Request Major code: 14
>>>> Request serial number: 3
>>>> xwininfo: error: No such window with id 0x4000055.
>>>> =======
>>>>
>>>> =======
>>>> $ java -jar Notepad.jar
>>>> status window id = 0x40000CA
>>>> ...
>>>> $ xwininfo -id 0x40000CA
>>>>
>>>> xwininfo: Window id: 0x40000ca (has no name)
>>>>
>>>> Absolute upper-left X: 0
>>>> Absolute upper-left Y: 600
>>>> Relative upper-left X: 0
>>>> Relative upper-left Y: 600
>>>> Width: 80
>>>> Height: 22
>>>> Depth: 24
>>>> Visual: 0x21
>>>> Visual Class: TrueColor
>>>> Border width: 0
>>>> Class: InputOutput
>>>> Colormap: 0x20 (installed)
>>>> Bit Gravity State: ForgetGravity
>>>> Window Gravity State: NorthWestGravity
>>>> Backing Store State: NotUseful
>>>> Save Under State: no
>>>> Map State: IsUnMapped
>>>> Override Redirect State: yes
>>>> Corners: +0+600 -944+600 -944-146 +0-146
>>>> -geometry 80x22+0+600
>>>> =======
>>>>
>>>> According to main window: (Left side: without fix, right side: with fix)
>>>> =======
>>>> xwininfo: Window id: 0x4000009 " (failure | xwininfo: Window id:
>>>> 0x460007e " (failure
>>>>
>>>> Absolute upper-left X: 4 Absolute upper-left X: 4
>>>> Absolute upper-left Y: 25 Absolute upper-left Y: 25
>>>> Relative upper-left X: 0 Relative upper-left X: 0
>>>> Relative upper-left Y: 0 Relative upper-left Y: 0
>>>> Width: 492 Width: 492
>>>> Height: 571 Height: 571
>>>> Depth: 24 Depth: 24
>>>> Visual: 0x169 | Visual: 0x21
>>>> Visual Class: TrueColor Visual Class: TrueColor
>>>> Border width: 0 Border width: 0
>>>> Class: InputOutput Class: InputOutput
>>>> Colormap: 0x4000008 (not installed) | Colormap: 0x20 (installed)
>>>> Bit Gravity State: NorthWestGravity Bit Gravity State:
>>>> NorthWestGravity
>>>> Window Gravity State: NorthWestGravity Window Gravity
>>>> State: NorthWestGravity
>>>> Backing Store State: NotUseful Backing Store State: NotUseful
>>>> Save Under State: no Save Under State: no
>>>> Map State: IsViewable Map State: IsViewable
>>>> Override Redirect State: no Override Redirect State: no
>>>> Corners: +4+25 -528+25 -528-172 +4-1 Corners: +4+25
>>>> -528+25 -528-172 +4-1
>>>> -geometry 492x571+0+0 -geometry 492x571+0+0
>>>> =======
>>>>
>>>> So main window's visual also changed by this fix.
>>>>
>>>>> Similarly for the fontset change .. this might change what others get.
>>>>> The fontset spec. there seems very loose to me ..
>>>>
>>>> Without fix
>>>> =======
>>>> $ java -jar Notepad.jar
>>>> status window id = 0x4000055
>>>> [M][0] JISX0208.1983-0
>>>> [M][1] GB2312.1980-0
>>>> [L][0] -misc-fixed-medium-r-normal--13-120-75-75-c-70-iso8859-1
>>>> [L][1] -misc-fixed-medium-r-normal--13-120-75-75-c-70-iso8859-1
>>>> [L][2] -daewoo-gothic-medium-r-normal--16-120-100-100-c-160-ksc5601.1987-0
>>>> [L][3] -sony-fixed-medium-r-normal--16-120-100-100-c-80-jisx0201.1976-0
>>>> [L][4] -misc-fixed-medium-r-normal--13-120-75-75-c-70-iso10646-1
>>>> =======
>>>>
>>>> With fix
>>>> =======
>>>> $ java -jar Notepad.jar
>>>> status window id = 0x40000CA
>>>> [M][0] GB2312.1980-0
>>>> [L][0] -misc-fixed-medium-r-normal--13-120-75-75-c-70-iso8859-1
>>>> [L][1] -misc-fixed-medium-r-normal--13-120-75-75-c-70-iso8859-1
>>>> [L][2] -misc-fixed-medium-r-normal--14-130-75-75-c-140-jisx0208.1983-0
>>>> [L][3] -daewoo-gothic-medium-r-normal--16-120-100-100-c-160-ksc5601.1987-0
>>>> [L][4] -sony-fixed-medium-r-normal--16-120-100-100-c-80-jisx0201.1976-0
>>>> [L][5] -misc-fixed-medium-r-normal--13-120-75-75-c-70-iso10646-1
>>>> =======
>>>>
>>>> [M] means "Missing" font, [L] means "Loaded".
>>>>
>>>> On 2018-06-20 23:14, Philip Race wrote:
>>>>> My question has not been answered. I don't think this is ready to go in.
>>>>>
>>>>> -phil.
>>>>>
>>>>> On 6/20/18, 4:23 AM, Ichiroh Takiguchi wrote:
>>>>>> Hello.
>>>>>>
>>>>>> New fixed code is in:
>>>>>> http://cr.openjdk.java.net/~aleonard/defvis/webrev.02/
>>>>>>
>>>>>> Could you check fixed files again ?
>>>>>>
>>>>>> I only updated following part between webrev.01 and webrev.02
>>>>>> ======
>>>>>> diff -r 70a582d110a1 -r 6f04164a9d62 src/java.desktop/unix/native/libawt_xawt/awt/awt_InputMethod.c
>>>>>> --- a/src/java.desktop/unix/native/libawt_xawt/awt/awt_InputMethod.c Wed Jun 06 21:03:25 2018 +0900
>>>>>> +++ b/src/java.desktop/unix/native/libawt_xawt/awt/awt_InputMethod.c Wed Jun 20 16:54:24 2018 +0900
>>>>>> @@ -677,7 +677,7 @@
>>>>>> return NULL;
>>>>>> }
>>>>>> statusWindow->w = status;
>>>>>> - //12-point font
>>>>>> + //12, 13-point fonts
>>>>>> statusWindow->fontset = XCreateFontSet(dpy,
>>>>>> "-*-*-medium-r-normal-*-*-120-*-*-*-*," \
>>>>>> "-*-*-medium-r-normal-*-*-130-*-*-*-*",
>>>>>> ======
>>>>>>
>>>>>>
>>>>>> Please create bugid and handle it.
>>>>>>
>>>>>> Thanks,
>>>>>> Ichiroh Takiguchi
>>>>>> IBM Japan, Ltd.
>>>>>>
>>>>>> On 2018-06-20 04:59, Naoto Sato wrote:
>>>>>>> Please change the comment in line 680, which should also mention 13 point font.
>>>>>>>
>>>>>>> Naoto
>>>>>>>
>>>>>>> On 6/19/18 12:54 PM, Naoto Sato wrote:
>>>>>>>> Looks OK wrt awt_InputMethod.c change.
>>>>>>>>
>>>>>>>> Naoto
>>>>>>>>
>>>>>>>> On 6/19/18 11:32 AM, Phil Race wrote:
>>>>>>>>> Where's the bug ID ?
>>>>>>>>>
>>>>>>>>> The review should have a bug ID in the subject line so we can all find it later !
>>>>>>>>>
>>>>>>>>> Is this changing the default visual for all WIndows, not just the IM status window?
>>>>>>>>> I think we need to understand the implications before this can be accepted.
>>>>>>>>>
>>>>>>>>> Similarly for the fontset change .. this might change what others get.
>>>>>>>>> The fontset spec. there seems very loose to me ..
>>>>>>>>>
>>>>>>>>> I think I18N-DEV should be asked about this too.
>>>>>>>>>
>>>>>>>>> -phil.
>>>>>>>>>
>>>>>>>>> On 06/19/2018 11:07 AM, Sergey Bylokhov wrote:
>>>>>>>>>> Looks fine, if there are no other comments I'll push the fix using the new bugid.
>>>>>>>>>>
>>>>>>>>>> On 06/06/2018 17:54, Ichiroh Takiguchi wrote:
>>>>>>>>>>> Hello Sergey.
>>>>>>>>>>> Thank you for your review.
>>>>>>>>>>>
>>>>>>>>>>> Could you review following patch ?
>>>>>>>>>>> http://cr.openjdk.java.net/~aleonard/defvis/webrev.01/
>>>>>>>>>>>
>>>>>>>>>>> Thanks,
>>>>>>>>>>> Ichiroh Takiguchi
>>>>>>>>>>> IBM Japan, Ltd.
>>>>>>>>>>>
>>>>>>>>>>> On 2018-06-06 07:15, Sergey Bylokhov wrote:
>>>>>>>>>>>> Hi, Ichiroh.
>>>>>>>>>>>> The approach looks fine, but maybe it is possible to decrees code
>>>>>>>>>>>> duplication in findWithTemplate(). After the fix it will have two
>>>>>>>>>>>> similar loops.
>>>>>>>>>>>>
>>>>>>>>>>>> On 24/05/2018 22:24, Ichiroh Takiguchi wrote:
>>>>>>>>>>>>> Hello,
>>>>>>>>>>>>> IBM would like to contribute X11 default visual support for IM status window patch to OpenJDK project.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Issue:
>>>>>>>>>>>>> Java's Native IM status window is not displayed even if it's there.
>>>>>>>>>>>>> Because of this issue, user cannot get proper visual feedback during key input operation.
>>>>>>>>>>>>> We found this issue on Tiger VNC.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Reason:
>>>>>>>>>>>>> Java may pick up unexpected visual for Java's Native IM status window when Xserver supports multiple visual.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Workaround:
>>>>>>>>>>>>> X11 default visual can be changed by FORCEDEFVIS environment variable, but it's not easy to find out default visual id.
>>>>>>>>>>>>>
>>>>>>>>>>>>> I'd like contribute following 2 files:
>>>>>>>>>>>>> M src/java.desktop/unix/native/libawt_xawt/awt/awt_GraphicsEnv.c
>>>>>>>>>>>>> (Change X11 visual setting)
>>>>>>>>>>>>> M src/java.desktop/unix/native/libawt_xawt/awt/awt_InputMethod.c
>>>>>>>>>>>>> (Support 13 point X11 misc fonts (like k14 font for Japanese), since the fonts may defined for unscaled fonts.)
>>>>>>>>>>>>>
>>>>>>>>>>>>> webrev files are in
>>>>>>>>>>>>> http://cr.openjdk.java.net/~aleonard/defvis/
>>>>>>>>>>>>>
>>>>>>>>>>>>> I appreciate any feedback please, and how I would go about obtaining a sponsor and contributor?
>>>>>>>>>>>>>
>>>>>>>>>>>>> Thanks,
>>>>>>>>>>>>> Ichiroh Takiguchi
>>>>>>>>>>>>> IBM Japan, Ltd.
>>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>
>>>
>
--
Best regards, Sergey.
More information about the i18n-dev
mailing list