<AWT Dev> [12] Review Request: 8214918 Unify GraphicsEnvironment.getCenterPoint()/getMaximumWindowBounds() across the platforms

Alexey Ivanov alexey.ivanov at oracle.com
Tue Jan 15 21:39:27 UTC 2019


Hi Sergey,

The change looks good to me.

On 20/12/2018 23:06, Sergey Bylokhov wrote:
> On 20/12/2018 10:57, Phil Race wrote:
>> The synopsis made me think this was refactoring.
>> But when I read it, it seems to be proposing removing the ability to
>> centre a window on a Xinerama desktop, with the principal 
>> justification that
>> this was only ever something that worked on Solaris.> Is this 
>> absolutely necessary ?
>
> Yes, I would like to drop it as it causes some surprising behavior, 
> when the
> window is opened somewhere out of the main screen.
> I have reopened the similar bug for the splash screen:
> https://bugs.openjdk.java.net/browse/JDK-6481523
>
> At some point we should follow this logic:
>  - By default use the main screen for the window/splash(even better 
> the screen where the app was run)
>  - The user may customize it by the "XINERAMA_CENTER_HINT" atom.

I agree the splash screen should be displayed at the centre of the 
currently used display or the main display.


Regards,
Alexey

>
>> Does that mean this (xinerama centering) is fundamentally 
>> unsupportable on Linux ?
>
> It is possible to implement even on windows/mac but we should not by 
> default
> open the windows in between of screens.
>
>> Don't you need to update the docs / referenced spec ?
>
> It was a Solaris only implementation, and guess we have no strict 
> specification
> on how it should work.
>
>>
>> -phil.
>>
>>
>> On 12/6/18 9:26 AM, Sergey Bylokhov wrote:
>>> Hello.
>>> Please review the fix for jdk 12.
>>>
>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8214918
>>> Webrev: http://cr.openjdk.java.net/~serb/8214918/webrev.00
>>>
>>> In the fix for JDK-8076313 I need to implement possibility of switch 
>>> between xinerama and non-xinerama modes at runtime. As a separate 
>>> part I would like to investigate the usage of 
>>> X11GraphicsEnvironment.runningXinerama() and replace it by some 
>>> other generic for single/multi-screen solution.
>>>
>>> This bug is about one of the place where the flag above is used.
>>>
>>> In jdk 1.4 two new methods were added to the GraphicsEnvironment class:
>>>  - getCenterPoint()
>>>  - getMaximumWindowBounds()
>>> see 
>>> https://docs.oracle.com/javase/7/docs/technotes/guides/awt/1.4/AWTChanges.html#windowCentering
>>>
>>> Take a look to this descriptions from the link above:
>>> "X-Window, Xinerama
>>> All monitors share a single virtual coordinate space, as on 
>>> Microsoft Windows. However, it is possible for the user to specify 
>>> through X resources where windows should be centered. If these 
>>> resources are set, getCenterPoint reflects their value. Otherwise, 
>>> it returns the point at the center of the virtual coordinate space. 
>>> (In practice, this will almost always be set - CDE sets it by 
>>> default.)"
>>>
>>> Since the case above was implemented on the Solaris, and uses an 
>>> extension of the xinerama, I suggest to remove this and align 
>>> implementation across the platforms:
>>>  - getCenterPoint returns the coordinates of the center of the 
>>> primary display for all platforms
>>>  - getMaximumWindowBounds returns the bounds of the primary display 
>>> minus display insets for all platforms



More information about the awt-dev mailing list