Hi All,

Kindly review the fix for JDK10.

Bug: 
https://bugs.openjdk.java.net/browse/JDK-8190767 
<https://bugs.openjdk.java.net/browse/JDK-8190767>

Webrev: 
http://cr.openjdk.java.net/~mhalder/8190767/webrev.00/ 
<http://cr.openjdk.java.net/~mhalder/8190767/webrev.00/>

Problem:
        In this problem two unrelated windows are created (first window and 
second window). If the second window is created when the first window is in 
fullscreen then the second window will automatically be created in fullscreen 
mode. This is the default behaviour with Cocoa windows. The second window 
receives windowWillEnterFullScreen notification when the first window is in 
fullscreen. windowWillEnterFullScreen notification is system generated 
notification and there is no way to prevent it. 

Above conclusion was made after debugging the issue to find out if there is any 
way to prevent the windowWillEnterFullScreen notification and also to find out 
if it generated due to some existing java (generic and native) code.

I wrote a simple Mac OS X application with 2 windows and observed the same 
behaviour. The second window is created in fullscreen mode if it is created 
when the first window is in fullscreen. Whereas the second window is displayed 
normal if the first window is in normal mode (not in fullscreen mode). The only 
way found to prevent the second window going to fullscreen is don’t set this 
behaviour for the second window.

Fix:
        The behaviour is normal on Mac OS. But if we want to prevent the second 
(all windows except the primary window) window to automatically created in 
fullscreen mode then the following fix can be applicable. 

By default all the Frames are set the WINDOW_FULLSCREENABLE property and by 
default all frames receives fullscreen event if the first frame is in 
fullscreen when it is created. Due to this setting the second frame which is 
created on button click goes to fullscreen on creation automatically. Mac OS 
fullscreen event notifications are received in case the first frame is in 
fullscreen and WINDOW_FULLSCREENABLE set for the second frame.

Only the first frame should have the WINDOW_FULLSCREENABLE property set. The 
frames created in this case were ownerless windows as mentioned earlier. 
Therefore it is not possible to find out the owner of the current frame, it is 
null for all the frames created. Hence the fix is if the current frame is the 
first frame then set the property otherwise don’t set the property 
WINDOW_FULLSCREENABLE.

Regards,
Manajit

Reply via email to