<AWT Dev> [11] Review Request: 8196030 and 8190326
Sergey Bylokhov
Sergey.Bylokhov at oracle.com
Mon May 21 19:15:16 UTC 2018
But the code itself is unrelated to awt, coordinate conversion is a
java2d stuff, what about sun.java2d.SunGraphicsEnvironment?
On 21/05/2018 11:52, Phil Race wrote:
> All the actual cases seem to be in AWT so we should put these somewhere
> in AWT, not SU2.
>
> -phil.
>
> On 05/21/2018 11:28 AM, Sergey Bylokhov wrote:
>> It is also used by, Window peer on windows:
>> http://hg.openjdk.java.net/jdk/jdk/file/f4735ff8d17d/src/java.desktop/windows/classes/sun/awt/windows/WWindowPeer.java#l662
>>
>>
>> I guess that unix peers should use it as well in the same way as on
>> windows, actually all code which try to move something using x,y
>> coordinates in user space should use this method.
>>
>> On 21/05/2018 10:44, Phil Race wrote:
>>> Well I don't understand why that was put into SU2 either.
>>> Since it is also used just by the AWT Robot.
>>> It is from the fix for https://bugs.openjdk.java.net/browse/JDK-8176097
>>>
>>> So I think these should both be moved out of SU2 and into Robot code.
>>>
>>> -phil.
>>>
>>> On 05/21/2018 10:16 AM, Sergey Bylokhov wrote:
>>>> This method call getGraphicsConfigurationAtPoint() which is located
>>>> in the SwingUtilities2 and the robot class already depends on it:
>>>> http://hg.openjdk.java.net/jdk/jdk/file/f4735ff8d17d/src/java.desktop/share/classes/java/awt/Robot.java#l508
>>>>
>>>>
>>>> On 21/05/2018 10:03, Phil Race wrote:
>>>>> I don't understand why the new method is added in SwingUtilities2
>>>>> instead
>>>>> of directly in WRobotPeer.java since
>>>>> a) This makes AWT internals depend on Swing internals.
>>>>> b) There's no other client of this method.
>>>>>
>>>>> -phil.
>>>>>
>>>>>
>>>>> On 05/18/2018 12:38 PM, Sergey Bylokhov wrote:
>>>>>> Hello.
>>>>>> Please review the fix for jdk11.
>>>>>>
>>>>>> Bugs:
>>>>>> 8196030: AWT Robot mouseMove fails on Windows 10 1709 with HiDPI
>>>>>> https://bugs.openjdk.java.net/browse/JDK-8196030
>>>>>> 8190326: Robot.mouseMove uses scaling factor of main display
>>>>>> on unscaled second display
>>>>>> https://bugs.openjdk.java.net/browse/JDK-8190326
>>>>>>
>>>>>> Webrev: http://cr.openjdk.java.net/~serb/8196030/webrev.04
>>>>>>
>>>>>> Description:
>>>>>> This change will fix two issues:
>>>>>> - 8196030: In the Windows 10 relative mouse moving is broken.
>>>>>> Solution is to change the code to use the absolute mouse location.
>>>>>> Actually the fix reverts the changes which were done in
>>>>>> JDK-4288230 [1](It is interesting that previously the absolute
>>>>>> mouse position was broken). Take a look to the function which is
>>>>>> used to calculate the mouse position, this is the only way I found
>>>>>> to align coordinates which passed to windows(::SendInput() and
>>>>>> coordinate which returned by windows(::GetCursorPos().
>>>>>>
>>>>>> - 8190326: the logic how we convert coordinates from the user
>>>>>> space to device space is changed. Previously we use the
>>>>>> transformation of the main screen, now we will find the
>>>>>> appropriate screen(where coordinates are located) and then use
>>>>>> transformation of this screen.
>>>>>>
>>>>>> I have tested the fix on win7/10 using
>>>>>> scales:100%,125%,%150,%175,%200 in multi-monitor configuration.
>>>>>> But the new test is quite strict and may fail if there are some
>>>>>> rounding error in some variations of screen
>>>>>> resolution+scale+screen locations. So I expect some reports for
>>>>>> this test.
>>>>>>
>>>>>> Notes:
>>>>>> - The logic in the new method in SwingUtilities2 is similar to
>>>>>> Robot.createCompatibleImage(), but the new method uses
>>>>>> Region.clipRound() instead of floor/ceil. The reason is that we
>>>>>> use same logic in native. I think that
>>>>>> Robot.createCompatibleImage() should use clipRound() as well. Will
>>>>>> check this later in separate bug.
>>>>>>
>>>>>> - Similar but not the same bug exists in Robot.getPixelColor()
>>>>>> which uses the scale of the main screen, and uses simple cast to
>>>>>> (int), but it affects all platforms. Will check this later in
>>>>>> separate bug.
>>>>>>
>>>>>>
>>>>>> [1] https://bugs.openjdk.java.net/browse/JDK-4288230
>>>>>>
>>>>>
>>>>
>>>>
>>>
>>
>>
>
--
Best regards, Sergey.
More information about the awt-dev
mailing list