<AWT Dev> [9] Review request for 8044614: [macosx] Focus issue with 2 applets in firefox

dmitry markov dmitry.markov at oracle.com
Wed Jul 16 12:08:49 UTC 2014

Hi Alexandr,

I am sorry for the delay.
When a browser's window becomes active/inactive, the browser generates 
WindowFocusEvent and sends it to the applets via Java Plugin. So the 
order of the events is defined by the browser. I tested several browsers 
- all of them sends WindowFocusEvent(parentWindow=false) to the active 
window and then WindowFocusEvent(parentWindow=true) to inactive window 
during switching between two browser's windows. It looks like this is 
common practice for such operation. However, I did not find any docs 
which can confirm this behavior.

Please find new version of the fix here - 
- Made small refactoring: focusedWindow -> globalFocusedWindow, 
previousFocusedWindow -> pluginFocusedWindow, etc.
- Added manual test


On 04/07/2014 14:26, Alexander Scherbatiy wrote:
> On 7/3/2014 2:25 PM, Alexander Scherbatiy wrote:
>> On 7/3/2014 1:15 PM, dmitry markov wrote:
>>> Hi Alexandr,
>>> Thank you for review.
>>> For the use case you described - when we move back to the first 
>>> browser window with 3 applets, the first applet (not the second one) 
>>> will receive the focus. This behavior is incorrect, since the second 
>>> applet should receive the focus.
>>> I have updated the fix, please find new version here: 
>>> http://cr.openjdk.java.net/~dmarkov/8044614/jdk9/webrev.01/
>>> Now we store the information about focused applet when browser 
>>> window is deactivated and restore the focus to the previously 
>>> focused applet when browser window becomes active again
>>     The case can be more complicated with some browsers where each of 
>> them has several applets.
>>     It seems there should be a map between a browser and it's focused 
>> applet.
>    I see that your fix solves these cases.
>    One more problem can be with the WindowsFocusEvents order.
>    Is it guarantee that order of events WindowsFocusEvent 
> (parentwindow=false) to one browser and WindowsFocusEvent 
> (parentWindow=true)
>    for other browser can't be changed?
>   I would suggest to  do a small refactoring.
>   Something like focusedWindow to globalFocusedWindow, 
> previousFocusedWindow to pluginFocusedWindow, add method like 
> isPluginFocused(...)
>   and use conditional operator '?' for globalFocusedWindow setting.
>   Thanks,
>   Alexandr.
>>     Is it possible to add a manual test for the fix?
>>    Thanks,
>>    Alexandr.
>>> Thanks,
>>> Dmitry
>>> On 02/07/2014 16:36, Alexander Scherbatiy wrote:
>>>>  Let's assume one browser has 3 applets where the second applet has 
>>>> focus.
>>>>  I click on the second browser with an applet (the applet receives 
>>>> the focus) and then click on the first browser back.
>>>>  Should the second applet in the first browser receive the focus?
>>>>  Thanks,
>>>>  Alexandr.
>>>> On 7/2/2014 2:45 PM, dmitry markov wrote:
>>>>> Hello,
>>>>> Could you review the fix for jdk9, please?
>>>>>     bug: https://bugs.openjdk.java.net/browse/JDK-8044614
>>>>>     webrev: 
>>>>> http://cr.openjdk.java.net/~dmarkov/8044614/jdk9/webrev.00/
>>>>> Problem description: on Mac OSX when switching between several 
>>>>> applets running in separate browser's windows, the applet in 
>>>>> active window does not receive focus.
>>>>> Fix: the method CEmbeddedFrame.handleWindowFocusEvent() should be 
>>>>> modified. It has to detect the switching between browser's windows 
>>>>> and update focusedWindow field accordingly.
>>>>> Thanks,
>>>>> Dmitry

More information about the awt-dev mailing list