<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