Сбой перетаскивания JavaFX при помещении нескольких файлов в буфер обмена на Java 13 - PullRequest
1 голос
/ 10 ноября 2019

У меня есть следующий код, предназначенный для помещения ряда файлов из приложения JavaFX в системный буфер обмена:

pane.setOnDragDetected(event -> {

  List<File> files = ... 

  Dragboard dragBoard = ((Node)event.getSource()).startDragAndDrop(TransferMode.COPY);

  ClipboardContent clipboardContent = new ClipboardContent();
  clipboardContent.putFiles(files);
  dragBoard.setContent(clipboardContent);
  event.consume();

});

Код отлично работает на Java 11 (Oracle JDK 11.0.1).

В Java 13 (OpenJDK 13.0.1), однако, это завершается ошибкой, если я помещаю более одного файла в буфер обмена (один также отлично работает) со следующим сообщением об ошибке:

2019-11-09 23:53:28.956 java[50078:1146885] *** Terminating app due to uncaught exception 'NSGenericException', reason: 'There are 3 items on the pasteboard, but 1 drag images. There must be 1 draggingItem per pasteboardItem.'
*** First throw call stack:
(
    0   CoreFoundation                      0x00007fff2db3af53 __exceptionPreprocess + 250
    1   libobjc.A.dylib                     0x00007fff63c00835 objc_exception_throw + 48
    2   CoreFoundation                      0x00007fff2db3ada9 +[NSException raise:format:] + 189
    3   AppKit                              0x00007fff2afc93bb -[NSDraggingSession(NSInternal) _initWithPasteboard:image:offset:source:] + 247
    4   AppKit                              0x00007fff2afc8dee -[NSCoreDragManager dragImage:fromWindow:at:offset:event:pasteboard:source:slideBack:] + 1889
    5   AppKit                              0x00007fff2afc867d -[NSWindow(NSDrag) dragImage:at:offset:event:pasteboard:source:slideBack:] + 134
    6   libglass.dylib                      0x000000012f55a618 -[GlassViewDelegate startDrag:] + 1080
    7   libglass.dylib                      0x000000012f5650c7 Java_com_sun_glass_ui_mac_MacPasteboard__1putItemsFromArray + 2439
    8   ???                                 0x00000001140bec90 0x0 + 4631293072
    9   ???                                 0x00000001140b8a90 0x0 + 4631267984
    10  ???                                 0x00000001140b8a90 0x0 + 4631267984
    11  ???                                 0x00000001140b8a90 0x0 + 4631267984
)
libc++abi.dylib: terminating with uncaught exception of type NSException

Это то, что я могу найти обходной путь или я столкнулся с реальной проблемой в интеграции Java / JavaFX / macOS?


  • ОС: macOSКаталина (10.15.1)
  • JDK: openjdk-13.0.1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...