Hi Phil,

You are right, these changes are mainly intended for JDK 8u due to applet 
support presence. However they might be helpful for other EmbeddedFrame users. 
That’s why I would like to integrate the changes into jdk-client too.

I am not going to integrate the fix into JDK 11 GA, I will push it to JDK 12 
instead.

Thanks,
Dmitry 

> On 5 Aug 2018, at 02:37, Philip Race <[email protected]> wrote:
> 
> This is a P3. It is now too late for 11 even if it was fine when the thread 
> began.
> Fixes for 11 must be P2 or higher and you will need to personally
> run all jtreg + JCK tests as a minimum level of testing.
> 
> And CPlatformWindow fixes have not been very successful lately !
> 
> So you probably need to wait until the current TCK issue there is resolved 
> before
> you can begin.
> 
> I'm also curious if this even matters for 11 which has no applet support - 
> although
> I do recognise EmbeddedFrame is used in other scenarios too.
> 
> But if this is just to enable a backport, then perhaps rushing it into 11 GA 
> is not needed.
> 
> -phil.
> 
> On 8/4/18, 5:13 PM, Sergey Bylokhov wrote:
>> Looks fine.
>> 
>> On 30/06/2018 08:12, Dmitry Markov wrote:
>>> Hi Sergey,
>>> 
>>>> On 27 Jun 2018, at 01:15, Sergey Bylokhov <[email protected] 
>>>> <mailto:[email protected]>> wrote:
>>>> 
>>>> Hi, Dmitry.
>>>> Can you please provide some more details why this bug is reproducible only 
>>>> on mac and not on the other platforms(I meant the bug related to the popup 
>>>> menu not SHOULD_BECOME_KEY and SHOULD_BECOME_MAIN bits)
>>>> 
>>> 
>>> The implementation of EmbeddedFrame on Mac OSX is lightweight and it is 
>>> heavyweight on Window/Linux. In other words on Windows/Linux an embedded 
>>> frame is able to receive events from the platform by itself and transfer 
>>> them to its child windows if any. However it does not work for Mac OSX: 
>>> CEmbeddedFrame receives events only from the embedder, (e.g. browser) which 
>>> is not aware of any windows owned by the embedded frame. So on Mac OSX if 
>>> the embedded frame owns a simple window (which is unfocusable by default) 
>>> there is no way to provide the simple window with keyboard input. At the 
>>> same time on other platforms the simple window receives key events in the 
>>> same scenario.
>>> 
>>> The test applet attached to the bug demonstrates the problem, (i.e. simple 
>>> window owned by embedded frame is unable to receive keyboard input) on Mac 
>>> and its absence on other platform. Currently I have only this test which 
>>> works on all platforms without any modifications.
>>> 
>>>> I have checked our current behavior on win/lin/mac in all cases the simple 
>>>> "Window" cannot get a focus, without any difference which parent is 
>>>> used(null/frame/window).
>>>> 
>>>> So for example if the window1 is owned by another window2, then both of 
>>>> them are "unfocusable", but after the current fix, both will be 
>>>> "focusable" if the window2 will be owned by the embedded frame.
>>> 
>>> I agree it was not good idea to make simple window focusable even if it was 
>>> owned by embedded frame. I think it will be better to allow simple window 
>>> receive keyboard input if it is owned by embedded frame. In other words 
>>> simple window will stay unfocusable, (i.e. SHOUL_BECOME_MAIN and 
>>> SHOULD_BECOME_KEY bits are unset) but it will be able to receive key events 
>>> when necessary. Please find the implementation of this approach here: 
>>> http://cr.openjdk.java.net/~dmarkov/8130655/webrev.01/ 
>>> <http://cr.openjdk.java.net/%7Edmarkov/8130655/webrev.01/>
>>> 
>>> Changes:
>>>  - Added methods CPlatformWindow and AWTWindow to check whether the window 
>>> is simple and owned by embedded frame
>>>  - Modified canBecomeKeyWindow() in AWTWindow to take into account window 
>>> type and owner
>>> 
>>> Could you review the new version, please?
>>> 
>>> Thanks,
>>> Dmitry
>>>> 
>>>> On 25/06/2018 03:35, Dmitry Markov wrote:
>>>>> Hello,
>>>>> Could you review a fix for jdk11, please?
>>>>> bug: https://bugs.openjdk.java.net/browse/JDK-8130655
>>>>> webrev: http://cr.openjdk.java.net/~dmarkov/8130655/webrev.00/ 
>>>>> <http://cr.openjdk.java.net/%7Edmarkov/8130655/webrev.00/>
>>>>> Problem description:
>>>>> On OS X platform a window does not receive keyboard input if it is owned 
>>>>> by embedded frame. According to the current implementation “simple 
>>>>> window” (not frame or dialog) is NOT natively focusable, (i.e. 
>>>>> SHOULD_BECOME_KEY and SHOULD_BECOME_MAIN bits are not set for its native 
>>>>> peer); embedded frame receives events from the embedder, (e.g. browser, 
>>>>> etc.) but does not translate them to the its own child windows. So if 
>>>>> “simple window” is owned by embedded frame it is impossible for the 
>>>>> window to receive any key events.
>>>>> Fix:
>>>>> Set SHOULD_BECOME_KEY and SHOULD_BECOME_MAIN bits for simple window which 
>>>>> is owned by embedded frame.
>>>>> Thanks,
>>>>> Dmitry
>>>> 
>>>> 
>>>> -- 
>>>> Best regards, Sergey.
>>> 
>> 
>> 

Reply via email to