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 <[email protected]> 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/~dmarkov/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 <[email protected] >>> <mailto:[email protected]> <mailto:[email protected] >>> <mailto:[email protected]>>> 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 >>>> 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. >>>> Fix: >>>> CPlatformEmbeddedFrame.requestWindowFocus() should activate the embedded >>>> frame, (i.e. invoke notifyActivation() for the corresponding peer). >>>> Thanks, >>>> Dmitry >>> >>> >>> -- >>> Best regards, Sergey. > > > -- > Best regards, Sergey.
