<AWT Dev> [11] RFR 8205479: OS X: requestFocus() does not work properly for embedded frame

Dmitry Markov dmitry.markov at oracle.com
Thu Aug 16 09:50:23 UTC 2018


Hi Alexey,

Thank you for the review. Unfortunately it is impossible to create the automated standalone test for this issue.

Thanks,
Dmitry 

> On 15 Aug 2018, at 19:46, Alexey Ivanov <alexey.ivanov at oracle.com> wrote:
> 
> Hi Dmitry,
> 
> The fix looks good.
> 
> Can an automated test be written for this issue?
> 
> Regards,
> Alexey
> 
> On 06/08/2018 15:46, Dmitry Markov wrote:
>> Thank you, Sergey!
>> 
>> Looking for the second +1 from someone else.
>> 
>> Thanks,
>> Dmitry
>> 
>>> On 5 Aug 2018, at 01:15, Sergey Bylokhov <Sergey.Bylokhov at oracle.com <mailto:Sergey.Bylokhov at oracle.com>> wrote:
>>> 
>>> Looks fine.
>>> 
>>> On 01/07/2018 02:26, Dmitry Markov wrote:
>>>> Hi Sergey,
>>>> The changes in CPlatformEmbeddedFrame are intended for handling the case when the embedder window contains several embedded frames and focus is transferred programmatically between the frames. In particular if requestFocus() is invoked for some component located at inactive frame it is necessary to activate the frame via CPlatformEmbeddedFrame.requestWindowFocus() to make such focus transition possible.
>>>> I am sorry, I do not have information about whether the situation described above is applicable for SWT or not. Anyway it is out of scope for this review.
>>>> Thanks,
>>>> Dmitry
>>>>> On 1 Jul 2018, at 00:21, Sergey Bylokhov <Sergey.Bylokhov at oracle.com <mailto:Sergey.Bylokhov at oracle.com> <mailto:Sergey.Bylokhov at oracle.com <mailto:Sergey.Bylokhov at oracle.com>>> wrote:
>>>>> 
>>>>> Hi, Dmitry
>>>>> Can you please clarify why the changes in CPlatformEmbeddedFrame are necessary? Why the same code does not exists in CViewPlatformEmbeddedFrame?
>>>>> 
>>>>> On 27/06/2018 10:25, Dmitry Markov wrote:
>>>>>> Hi Sergey,
>>>>>> You are right, it is better to use synthesizeWindowActivation(). Please find the updated webrew here:http://cr.openjdk.java.net/~dmarkov/8205479/webrev.01/ <http://cr.openjdk.java.net/%7Edmarkov/8205479/webrev.01/> <http://cr.openjdk.java.net/%7Edmarkov/8205479/webrev.01/ <http://cr.openjdk.java.net/%7Edmarkov/8205479/webrev.01/>>
>>>>>> Changes:
>>>>>>  - Overrode synthesizeWindowActivation() for CEmbeddedFrame. It calls handleWindowFocusEvent() which actually activates or deactivates embedded frame.
>>>>>>  - Added updateGlobalFocusedWindow() to CEmbeddedFrame. This method should be called when the focus is transferred to embedded frame programmatically since handleWindowFocusEvent() skips activation for non-focused embedded frames.
>>>>>> Thanks,
>>>>>> Dmitry
>>>>>>> On 27 Jun 2018, at 01:20, Sergey Bylokhov <Sergey.Bylokhov at oracle.com <mailto:Sergey.Bylokhov at oracle.com> <mailto:Sergey.Bylokhov at oracle.com <mailto:Sergey.Bylokhov at oracle.com>><mailto:Sergey.Bylokhov at oracle.com <mailto:Sergey.Bylokhov at oracle.com>>> wrote:
>>>>>>> 
>>>>>>> Hi, Dmitry.
>>>>>>> Can you please confirm that we should not implement synthesizeWindowActivation() to achieve this behavior?
>>>>>>> I guess we should do the same as in CViewEmbeddedFrame which is used by SWT.
>>>>>>> 
>>>>>>> On 25/06/2018 09:11, Dmitry Markov wrote:
>>>>>>>> Hello,
>>>>>>>> Could you review a fix for jdk11, please?
>>>>>>>>  bug: https://bugs.openjdk.java.net/browse/JDK-8205479 <https://bugs.openjdk.java.net/browse/JDK-8205479>
>>>>>>>>  webrev: http://cr.openjdk.java.net/~dmarkov/8205479/webrev.00/ <http://cr.openjdk.java.net/%7Edmarkov/8205479/webrev.00/> <http://cr.openjdk.java.net/%7Edmarkov/8205479/webrev.00/ <http://cr.openjdk.java.net/%7Edmarkov/8205479/webrev.00/>>
>>>>>>>> Problem description:
>>>>>>>> On Mac OSX when focus is transferred to some component located at embedded frame, CPlatformEmbeddedFrame.requestWindowFocus() is called to activate owning frame. However that method does nothing, (i.e. no activation happens). As a result the focus cannot be transferred to the component because its owner is not active.
>>>>>>>> Fix:
>>>>>>>> CPlatformEmbeddedFrame.requestWindowFocus() should activate the embedded frame, (i.e. invoke notifyActivation() for the corresponding peer).
>>>>>>>> Thanks,
>>>>>>>> Dmitry
>>>>>>> 
>>>>>>> 
>>>>>>> --
>>>>>>> Best regards, Sergey.
>>>>> 
>>>>> 
>>>>> --
>>>>> Best regards, Sergey.
>>> 
>>> 
>>> -- 
>>> Best regards, Sergey.
>> 
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/awt-dev/attachments/20180816/6eb051f6/attachment.html>


More information about the awt-dev mailing list