Detecting successful file drops on macOS

Christopher Schnick crschnick at xpipe.io
Sat Feb 10 05:17:50 UTC 2024


Hello,

I'm using macOS Sonoma 14.3 aarch64 and I'm trying to recognize whether 
a file was successfully dropped into finder from the JavaFX application. 
However, the event always reports that it was not accepted. I was under 
the impression that event.isAccepted() should return true if it was 
successfully dropped. This is the reproducer:

|public class DragDrop extends Application {
     @Override
     public void start(Stage primaryStage) throws Exception {
         var file = Files.createTempFile("test", null);

         var r = new Region();
         r.setOnDragDetected(event -> {
             event.setDragDetect(true);
             Dragboard db = r.startDragAndDrop(TransferMode.MOVE);
             var cc = new ClipboardContent();
             cc.putFiles(List.of(file.toFile()));
             db.setContent(cc);
             event.consume();
         });

         r.setOnDragDone(event -> {
             System.out.println("Accepted: " + event.isAccepted());
             System.out.println(event);
         });

         var scene = new Scene(r, 450, 500);
         primaryStage.setScene(scene);
         primaryStage.setTitle("Test");
         primaryStage.show();
     }
}|

|
|

I looked through the documentation of DragEvent but I'm still not really 
sure whether this is a bug. The documentation of DragEvent is a little 
bit light when it comes to behavior of drag events that go to the system 
itself.

Best
Christopher Schnick
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/openjfx-dev/attachments/20240210/93296134/attachment.htm>


More information about the openjfx-dev mailing list