On Tue, 17 Dec 2024 01:01:55 GMT, Alisen Chung <ach...@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 225: > 223: // peer.mouseMove(x, y); > 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)); But that will limit current robot's functionality on the multi-monitor setups. Right now i can move mouse using robot from one screen to another, With your change it seems to be impossible? ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/22781#discussion_r1887856509