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]> 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.
