RFR: 8231513: JavaFX cause Keystroke Receiving prompt on MacOS 10.15 (Catalina)

Kevin Rushforth kevin.rushforth at oracle.com
Thu Jan 30 23:59:19 UTC 2020


The Skara bot isn't sending email at the moment, so here is an RFR for 
jfx14:

PR: https://github.com/openjdk/jfx/pull/102
JBS: https://bugs.openjdk.java.net/browse/JDK-8231513

This is a fix for 
[JDK-8231513](https://bugs.openjdk.java.net/browse/JDK-8231513) to 
disable the use of `CGEventTap` when running on macOS 10.15 or later.

The effect of this bug is that a scary dialog is shown for all users the 
first time they run a JavaFX application and move the mouse is moved 
into the JavaFX window. It also is reported to block apps from being 
accepted in the Apple store.

This bug is caused by a change in macOS 10.15 to require additional 
permissions for using CGEventTap, which JavaFX uses to track touch events.

The suggested replacement API, 
`NSEvent::addLocalMonitorForEventsMatchingMask`, works just differently 
enough (it tracks events delivered to a specific view, whereas the 
current code is implemented using a global monitor and a global set of 
touch points), that it would be too risky to change it this late in the 
release.

For openjfx14, I am proposing to disable touch events completely if 
running on macOS 10.15 (or later). This will disable the tracking of 
native touch events, but those events are not used by default on macOS 
anyway. For Mac systems with a trackpad we instead rely on macOS to do 
the gesture recognition by default, and this fix does not intefere with 
that functionality.

I have verified that this avoids the dialog on macOS 10.15 and that the 
HelloGestures program still runs correctly and still recognizes trackpad 
gestures such as zoom and rotate. I also verified that the changes don't 
affect macOS 10.14 or earlier (the Event Tap code is still enabled on 
those older OS versions).

See [this 
thread](https://mail.openjdk.java.net/pipermail/openjfx-dev/2020-January/024876.html) 
on openjfx-dev for more discussion.

-- Kevin



More information about the openjfx-dev mailing list