<AWT Dev> [9] Review request for 8065739 [macosx] Frame warps to lower left of screen when displayed

Sergey Bylokhov Sergey.Bylokhov at oracle.com
Thu May 21 12:18:13 UTC 2015


Hi, Alexander.
The fix looks fine.

On 20.05.15 18:59, Alexander Scherbatiy wrote:
>
> On 5/15/2015 2:30 PM, Sergey Bylokhov wrote:
>> Hi, Alexander.
>> A few notes:
>>  - _peer.setMaximizedBounds(_peer.getMaximizedBounds()); this line 
>> looks odd, probably we can call updateMaximizedBounds in 
>> LWWindowPeer. initializeImpl()?
>>  - Do we need to call maximize(); in the initialize() or we can leave 
>> it in the setVisible()? It seems that after we set 
>> NSWindowStandardFrame isZoomed should work properly in the callback?
>>  - Why we cannot return DefaultMaximizedBounds from the 
>> getMaximizedBounds if it was not set? Then it will not be necessary 
>> to check it to null everywhere.
>>  - Can we call updateMaximizedBounds(); in 
>> LWWindowPeer.displayChanged() only in case of new device?
>>
>
> Could you review the updated fix:
>   http://cr.openjdk.java.net/~alexsch/8065739/webrev.05
>
>   The fix has been updated according to the comments.
>
>   Thanks,
>   Alexandr.
>> On 14.05.15 12:40, Alexander Scherbatiy wrote:
>>> On 5/12/2015 4:44 PM, Alexander Scherbatiy wrote:
>>>>
>>>> Could you review the updated fix:
>>>> - maximized bounds are updated after switching to new screen if 
>>>> they are not set by a user
>>>> - the test for the maximized window moved from one screen to 
>>>> another is added
>>>    Sorry. Just forgot to add the webrev link:
>>> http://cr.openjdk.java.net/~alexsch/8065739/webrev.04/
>>>
>>>    Thanks,
>>>    Alexandr.
>>>
>>>>
>>>>
>>>> Thanks,
>>>> Alexandr.
>>>>
>>>> On 5/8/2015 3:42 PM, Sergey Bylokhov wrote:
>>>>> Hi, Alexander.
>>>>> Does the new tests cover all corner cases which we discussed offline?
>>>>>
>>>>> On 08.05.15 15:28, Alexander Scherbatiy wrote:
>>>>>>
>>>>>>   Hello,
>>>>>>
>>>>>>  Could you review the updated fix:
>>>>>> http://cr.openjdk.java.net/~alexsch/8065739/webrev.03
>>>>>>
>>>>>>  - The -windowWillUseStandardFrame:defaultFrame: method is 
>>>>>> implemented in AWTWindow to correctly get and check a size of the 
>>>>>> maximized window.
>>>>>>    After that the -isZoomed method correctly defines the zoomed 
>>>>>> state for both visible and not visible window.
>>>>>>
>>>>>>  Thanks,
>>>>>>  Alexandr.
>>>>>>
>>>>>> On 4/29/2015 7:03 PM, Alexander Scherbatiy wrote:
>>>>>>>
>>>>>>>  Hello,
>>>>>>>
>>>>>>>  Could you review the updated fix:
>>>>>>> http://cr.openjdk.java.net/~alexsch/8065739/webrev.02
>>>>>>>
>>>>>>>   - the zoom state is applied after NSWindow creation if Frame 
>>>>>>> has MAXIMIZED_BOTH state.
>>>>>>>
>>>>>>>  Thanks,
>>>>>>>  Alexandr.
>>>>>>>
>>>>>>> On 4/15/2015 10:57 PM, Sergey Bylokhov wrote:
>>>>>>>> Hi, Alexander.
>>>>>>>> As far as I understand the main issue is that we get a native 
>>>>>>>> notifications during window initialization(after nswindows was 
>>>>>>>> created and before zoom method will be called)? Probably we can 
>>>>>>>> apply the zoom state when we create a window in one appkit call?
>>>>>>>>
>>>>>>>> On 08.04.15 17:54, Alexander Scherbatiy wrote:
>>>>>>>>> Hello,
>>>>>>>>>
>>>>>>>>> Could you review the fix:
>>>>>>>>>   bug: https://bugs.openjdk.java.net/browse/JDK-8065739
>>>>>>>>>   webrev: http://cr.openjdk.java.net/~alexsch/8065739/webrev.00
>>>>>>>>>
>>>>>>>>>   Use case:
>>>>>>>>>   ------------
>>>>>>>>>   Frame frame = new Frame();
>>>>>>>>>   frame.pack();
>>>>>>>>>   frame.setBounds(screenBounds);
>>>>>>>>>   frame.setVisible(true);
>>>>>>>>>   ------------
>>>>>>>>>
>>>>>>>>>   The frame is in the normal state but Mac OS X treats a frame 
>>>>>>>>> with screen bounds as zoomed.
>>>>>>>>>   The setVisible() method calls unmaximize() method to return 
>>>>>>>>> the zoomed window to the normal state.
>>>>>>>>>   The native zoom() method sets the initial sizes for the 
>>>>>>>>> window which are zero because of the pack() call.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>   There is already checkZoom() method which synchronizes 
>>>>>>>>> native window zoom state and and the frame extended state when 
>>>>>>>>> a frame is resized by mouse.
>>>>>>>>>   However it can't be always used for the synchronization 
>>>>>>>>> between native window zoom state and setBounds() call because 
>>>>>>>>> of the following case:
>>>>>>>>>
>>>>>>>>>   -----------------
>>>>>>>>>   Frame frame = new Frame();
>>>>>>>>>   frame.setBounds(smallBounds);
>>>>>>>>>   frame.setExtendedState(Frame.MAXIMIZED_BOTH);
>>>>>>>>>   frame.setVisible(true);
>>>>>>>>>   -----------------
>>>>>>>>>
>>>>>>>>>   This is the valid scenario where the frame should be maximized.
>>>>>>>>>
>>>>>>>>>   The solution synchronizes the zoom and the frame state only 
>>>>>>>>> when the native window is zoomed.
>>>>>>>>>   In opposite case we need to return from the zoomed sizes to 
>>>>>>>>> previous sizes which are the same as for the zoomed window.
>>>>>>>>>
>>>>>>>>> Thanks,
>>>>>>>>> Alexandr.
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>
>>>
>>
>>
>> -- 
>> Best regards, Sergey.
>


-- 
Best regards, Sergey.



More information about the awt-dev mailing list