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

dmitry markov dmitry.markov at oracle.com
Wed Jul 23 07:29:46 UTC 2014


Hello,

Could anyone else review the fix, please?

https://bugs.openjdk.java.net/browse/JDK-8044614
http://cr.openjdk.java.net/~dmarkov/8044614/jdk9/webrev.02/

Thanks in advance,
Dmitry

On 18/07/2014 15:57, Alexander Scherbatiy wrote:
>
>   The fix looks good to me.
>
>   Thanks,
>   Alexandr.
>
>
> On 7/18/2014 3:52 PM, dmitry markov wrote:
>> Hi Alexandr,
>>
>> Please find answer below.
>>
>> Thanks,
>> Dmitry
>> On 17/07/2014 14:18, Alexander Scherbatiy wrote:
>>>
>>>   The pluginFocusedWindow is only updated after switching from one 
>>> browser to another (after WindowFocusEvent event).
>>>   Should it also be updated after switching from one applet to 
>>> another in the same browser (after FocusEvent)?
>> It is not necessary, since the pluginFocusedWindow stores information 
>> about the latest focused applet in the browser's window. This 
>> information is only used for focus restoring when the window becomes 
>> active again. So I think that is enough to update pluginFocusedWindow 
>> only in handleWindowFocusEvent() when the browser's window becomes 
>> inactive.
>>
>>>
>>>   What happens if the focused applet is closed? Does the 
>>> pluginFocusedWindow  correctly updated in this case?
>>>   Does the closed applet receives handleFocusEvent(false) event?
>> The closing of an applet means that we closed the browser's window 
>> contained the applet or moved to another web-page. In this case we 
>> are not interesting in pluginFocusedWindow or focus events anymore, 
>> since all applets in the window are destroyed. If we go back to the 
>> applet's page, all applets will be started from scratch.
>>>
>>>    Thanks,
>>>   Alexandr.
>>>
>>>
>>> On 7/16/2014 4:08 PM, dmitry markov wrote:
>>>> 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 - 
>>>> http://cr.openjdk.java.net/~dmarkov/8044614/jdk9/webrev.02/
>>>> Changes:
>>>> - Made small refactoring: focusedWindow -> globalFocusedWindow, 
>>>> previousFocusedWindow -> pluginFocusedWindow, etc.
>>>> - Added manual test
>>>>
>>>> Thanks,
>>>> Dmitry
>>>>
>>>> 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