On Fri, 12 Feb 2021 21:53:05 GMT, Olga Mikhaltsova <omikhaltc...@openjdk.org> 
wrote:

>> src/java.desktop/unix/classes/sun/awt/X11/XDnDDropTargetProtocol.java line 
>> 618:
>> 
>>> 616:             try {
>>> 617:                 for (int i = 0; i < gdslen; i++) {
>>> 618:                     long screenRoot = XlibWrapper.RootWindow(display, 
>>> i);
>> 
>> I am not sure this will work in the multi-monitors configuration when the 
>> screen is split across a few monitors(when Xinerama is enabled for example). 
>> In such a configuration, only one root window and only one X11 screen exist. 
>> And the index of the GraphicsDevice is the index of the "virtual" monitor, 
>> so you cannot pass this index to the "XlibWrapper.RootWindow".
>> 
>> A few questions:
>> * Are you sure that to scale the x/y in the device space you need to find 
>> where the pointer is located? And not where the x/y coordinates are located 
>> themselves?
>> * Did you try to iterate over the devices->downscale the bounds of each GD 
>> to the device scale and upscale the x/y using the selected device. Such 
>> utility method can be added to the SunGraphicsEnvironment
>
> Sergey, thanks for the hint! Hope I understand you right. Please, review my 
> changes!
> 
> I decided to do necessary scaling in place and not to add an utility method 
> to SunGraphicsEnvironment due to the following doubts: 
> the methods from SunGraphicsEnvironment can be called from different OS and 
> I'm going to use GraphicsConfig::getBounds() but I see that the Unix 
> implementation includes downscaling (X11GraphicsConfig::getBounds(), 
> src/java.desktop/unix/classes/sun/awt/X11GraphicsConfig.java) and the Windows 
> one is not (Win32GraphicsConfig::getBounds(), 
> src/java.desktop/windows/classes/sun/awt/Win32GraphicsConfig.java); 
> so for Unix I need upscaling before checking the point position but for 
> Windows it is not needed. 
> Please, correct me if I'm wrong!
> 
> Concerning my previous implementation based on the cursor position, would you 
> be so kind to take a look at XMouseInfoPeer::fillPointWithCoords(..) 
> (src/java.desktop/unix/classes/sun/awt/X11/XMouseInfoPeer.java) in order to 
> check whether it should be also fixed?

Yes, I think the fillPointWithCoords is also broken.

I'll run the tests for this change.

-------------

PR: https://git.openjdk.java.net/jdk/pull/1907

Reply via email to