On Tue, 17 Dec 2024 01:40:32 GMT, Harshitha Onkar <hon...@openjdk.org> wrote:
>> Currently on macOS when mouseMove is given an offscreen coordinate to move >> the mouse to, mouseMove will physically clamp to the edge of the screen, but >> if you try to grab the mouse location immediately after by using >> MouseInfo.getPointerInfo().getLocation() you will get the value of the >> offscreen point. >> >> Windows and linux do this clamping and coordinate handling for us, but new >> distributions may not necessarily handle clamping the same way, so Robot >> should be checking for clamping rather than delegating it to native. >> >> This fix updates shared code to cache the screen bounds and adds a check to >> not exceed the bounds in mouseMove. The caching is done in the Robot >> constructor, so if the screen bounds changes the constructor must be called >> again to update to the new bounds. > > src/java.desktop/share/classes/java/awt/Robot.java line 226: > >> 224: peer.mouseMove(Math.min(Math.max(x, screenBounds.x), >> screenBounds.x + screenBounds.width), >> 225: Math.min(Math.max(y, screenBounds.y), screenBounds.y + >> screenBounds.height)); >> 226: afterEvent(); > > @alisenchung It might be good to add a simple test case. Probably > robot.mouseMove() to off-screen coordinates and pass the test if the > coordinates returned by MouseInfo.getPointerInfo().getLocation() is clamped > (limited to screen bounds) else fail. oops, i had a test and forgot to include it in the PR, good reminder! ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/22781#discussion_r1889135269