RFR: 8227371: Drag&Drop while holding the CMD key does not work on macOS

Martin Fox duke at openjdk.java.net
Fri Oct 22 17:37:20 UTC 2021


During a drag-and-drop operation on the Mac the Command key will filter out every drag source operation except `NSDragOperationGeneric` (this behavior is provided by the OS). JavaFX drag sources only set the Move, Copy, and Link drag operation bits so the Command key reduces the set of available operations to nothing.

This PR changes nothing about how JavaFX behaves when the dnd operation involves an external application. As a drag source the same set of operations will be broadcast and as a drag destination the operations will be interpreted as they have always been.

For internal dnd within the JavaFX app `NSDragOperationMove` and `NSDragOperationGeneric` will both be set if the drag source specifies `TransferMode.MOVE`. On the other end a drag destination will interpret `NSDragOperationGeneric` and `NSDragOperationMove` as synonyms.

As part of this PR it was necessary to verify that `NSDragOperationGeneric` was not already being used during an internal drag operation.  There's a clause in `mapJavaMaskToNsOperation:` which translates `com_sun_glass_ui_Clipboard_ACTION_ANY` to `NSDragOperationEvery` and this includes the Generic bit. I believe this is a red herring, the Java dnd code converts `TransferMode.ANY` to a bitwise-OR of COPY, MOVE, and REFERENCE so `com_sun_glass_ui_Clipboard_ACTION_ANY` will never be passed down to the platform level.

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

Commit messages:
 - 8227371 Drag&Drop while holding the CMD key does not work on macOS

Changes: https://git.openjdk.java.net/jfx/pull/651/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jfx&pr=651&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8227371
  Stats: 87 lines in 3 files changed: 78 ins; 1 del; 8 mod
  Patch: https://git.openjdk.java.net/jfx/pull/651.diff
  Fetch: git fetch https://git.openjdk.java.net/jfx pull/651/head:pull/651

PR: https://git.openjdk.java.net/jfx/pull/651


More information about the openjfx-dev mailing list