<AWT Dev> <AWT dev>[10] Review request for JDK-8190767: [macos] if JFrame is maximized on OS X, all new JFrames will be maximized by default
Kevin Rushforth
kevin.rushforth at oracle.com
Tue Feb 20 20:16:28 UTC 2018
I can't speak to whether the logic is correct or not. I was just
pointing out that the cast on line 692 is safe; since it is in an "if
(target instanceof Frame)" block, "target" is already known to be a Frame.
-- Kevin
Sergey Bylokhov wrote:
> On 20/02/2018 11:35, Kevin Rushforth wrote:
>> The new code is already inside an "if (target instanceof Frame)"
>> check...
>
> But the Frame is not a Dialog. The code which were removed in the fix
> was executed under this checks:
> // Either java.awt.Frame or java.awt.Dialog can be resizable
> resizable = isFrame ? ((Frame)target).isResizable() : (isDialog ?
> ((Dialog)target).isResizable() : false);
>
>>
>> -- Kevin
>>
>>
>> Sergey Bylokhov wrote:
>>> Hi, Manajit.
>>> You cannot cast the target to a Frame without any checks, because it
>>> is not necessary a Frame.
>>>
>>> On 16/02/2018 03:48, Manajit Halder wrote:
>>>> Hi Sergey,
>>>>
>>>> Please review the modified fix. The current webrev maintains the
>>>> window behaviour after it is shown as per the current implementation.
>>>> canFullScreen is set true in case the window is resizable.
>>>>
>>>> http://cr.openjdk.java.net/~mhalder/8190767/webrev.02/
>>>>
>>>> Regards,
>>>> Manajit
>>>>
>>>>> On 14-Feb-2018, at 8:29 AM, Sergey Bylokhov
>>>>> <sergey.bylokhov at oracle.com <mailto:sergey.bylokhov at oracle.com>>
>>>>> wrote:
>>>>>
>>>>> Hi, Manajit.>http://cr.openjdk.java.net/~mhalder/8190767/webrev.01/
>>>>> After the window is shown behavior should be the same as in
>>>>> current implementation(resizable windows should have
>>>>> canFullScreen=true, others canFullScreen=false) so you cannot just
>>>>> set it to "true" or "false".
>>>>>
>>>>>> The issue is not reproducible in jdk8. >
>>>>>> Regards,
>>>>>> Manajit
>>>>>>>
>>>>>>> On 31-Jan-2018, at 2:40 AM, Sergey Bylokhov
>>>>>>> <sergey.bylokhov at oracle.com <mailto:sergey.bylokhov at oracle.com>
>>>>>>> <mailto:sergey.bylokhov at oracle.com>> wrote:
>>>>>>>
>>>>>>> Hi, Manajit.
>>>>>>> Did you check that it works properly in jdk8?
>>>>>>>
>>>>>>> I guess we need to set "WINDOW_FULLSCREENABLE" after we show the
>>>>>>> window for the first time, with one exception if the window is
>>>>>>> MAXIMIZED_BOTH.
>>>>>>>
>>>>>>> On 29/01/2018 04:39, Manajit Halder wrote:
>>>>>>>> Hi All,
>>>>>>>> Kindly review the fix for JDK10.
>>>>>>>> Bug:
>>>>>>>> https://bugs.openjdk.java.net/browse/JDK-8190767
>>>>>>>> Webrev:
>>>>>>>> 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
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Best regards, Sergey.
>>>>>
>>>>>
>>>>> --
>>>>> Best regards, Sergey.
>>>>
>>>
>>>
>
>
More information about the awt-dev
mailing list