Hi Sergey,

 

As per our conversation, please review a fix for 

Bug: https://bugs.openjdk.java.net/browse/JDK-8176359

Webrev: http://cr.openjdk.java.net/~kaddepalli/8176359/webrev00/

 

The problem is that when the secondary monitor is larger than the primary 
monitor, and the window needs to maximize onto the secondary screen, it results 
in wrong window sizes. 

The root cause is in WFramePeer::adjustMaximizedBounds, which tries to 
compensate the window bounds appropriately, but it is not adequate. It solves 
another related bug: JDK-6699851, but the requirement is that, for a window to 
be maximized even on a secondary screen, it still needs to provide the 
dimensions of the primary screen, and the Window Manager automatically 
compensates for the difference.

The proposed fix addresses this problem in both cases, but there are some more 
problems that were discovered on the way:

1.       The window bounds seem random (or atleast seem so), when maximized 
bounds that are larger than the primary screen bounds, but are smaller than the 
secondary screen bounds are provided. Unfortunately, there is no clear 
document/information regarding the way it is adjusted. The best I could get is 
this: https://blogs.msdn.microsoft.com/oldnewthing/20150501-00/?p=44964

2.       Scaling provides a new dimension of problems, and it seems hard to 
satisfy all the cases - due to the floating point computations. The proposed 
fix works for 100, 125, 150 and 175 % scalings, but again, it depends on the 
resolution of the monitors. 

3.       I have written a test case which tries to display maximized windows on 
each screen and tests if the bounds are proper. When I set the screen bounds as 
maximizedBounds, and then query the frame bounds post displaying the screen, 
they are not the same. However, I found that the contentPane bounds are closer, 
but still not exactly same. Is there something I'm missing?

 

Thanks,

Krishna

Reply via email to