<AWT Dev>  RFR 8205479: OS X: requestFocus() does not work properly for embedded frame
Sergey.Bylokhov at oracle.com
Sun Aug 5 00:15:01 UTC 2018
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.
>> On 1 Jul 2018, at 00:21, Sergey Bylokhov <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
>> 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
>>> - 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.
>>>> 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>>
>>>> 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:
>>>>> Could you review a fix for jdk11, please?
>>>>> bug: https://bugs.openjdk.java.net/browse/JDK-8205479
>>>>> webrev: http://cr.openjdk.java.net/~dmarkov/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.
>>>>> CPlatformEmbeddedFrame.requestWindowFocus() should activate the
>>>>> embedded frame, (i.e. invoke notifyActivation() for the
>>>>> corresponding peer).
>>>> Best regards, Sergey.
>> Best regards, Sergey.
Best regards, Sergey.
More information about the awt-dev