<AWT Dev> [9] Review request for 8044614: [macosx] Focus issue with 2 applets in firefox
Alexander Scherbatiy
alexandr.scherbatiy at oracle.com
Fri Jul 18 11:57:14 UTC 2014
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