[Rev 01] RFR: 8231513: JavaFX cause Keystroke Receiving prompt on MacOS 10.15 (Catalina)
jvos at openjdk.java.net
Sat Feb 1 08:38:08 UTC 2020
On Sat, 1 Feb 2020 08:38:08 GMT, Kevin Rushforth <kcr at openjdk.org> wrote:
>> 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.
> The pull request has been updated with 1 additional commit.
Marked as reviewed by jvos (Reviewer).
More information about the openjfx-dev