RFR: 8345538: Robot.mouseMove doesn't clamp bounds on macOS when trying to move mouse off screen [v11]

Phil Race prr at openjdk.org
Mon May 5 19:26:47 UTC 2025


On Sun, 4 May 2025 20:52:47 GMT, Alisen Chung <achung at openjdk.org> wrote:

> > > So this seems to be a bug in macOS, as the reported mouse location is incorrect while it is actually positioned at the edge?
> > > Probably, there are other macOS APIs that could be used to implement Java_sun_lwawt_macosx_CCursorManager_nativeGetCursorPosition. Or perhaps the methods within it should be called on the appkit thread - I see a potential race, since the mouse is moved asynchronously on appkit, but the coordinates are fetched on the current thread.
> > 
> > 
> > Did you have a chance to check our implementation of setting and getting the cursor?
> 
> I took a look at the cocoa documentation and I wasn't able to find any APIs that handle clamping. I also looked at our implementation: we create an empty mouse event then grab the location of that event. Since macOS doesn't do clamping, we would need to add clamping code to nativeGetCursorPosition after we grab the location of that empty event. I think it's easier to just do the clamping in CRobot on mouseMove instead since that would be the only way for the mouse to initially reach out of bounds. What do you think?

I (we) looked at the code that was reporting the off-screen mouse position several weeks ago.
What we are doing seems to correspond to all the suggestions on the internet as to how to get mouse position on macOS.
I didn't spot any obvious alternative.

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

PR Comment: https://git.openjdk.org/jdk/pull/22781#issuecomment-2852102362


More information about the client-libs-dev mailing list