On Fri, 29 Sep 2023 19:35:33 GMT, Arik Hadas <[email protected]> wrote:
>> Credit goes to JetBrain that fixed it in JetBrainsRuntime (commit 24819d9).
>> This fix was also cherry-picked to muCommander and was verified on macOS
>> 12.6.8 and macOs 13, on X86_64 and on M1.
>>
>> Reproducer/step-to-verify:
>> 1. Compile the following class:
>>
>> import java.awt.Toolkit;
>> import java.awt.datatransfer.DataFlavor;
>> import java.awt.datatransfer.Transferable;
>> import java.awt.datatransfer.UnsupportedFlavorException;
>> import java.io.IOException;
>> import java.nio.file.Files;
>> import java.nio.file.Path;
>> import java.util.Arrays;
>>
>> public class Arik {
>>
>> public static void main(String[] args) throws IOException,
>> UnsupportedFlavorException {
>> System.out.println("copying a file to the clipboard2");
>> var path = Files.createTempFile(null, null);
>> Files.writeString(path.toAbsolutePath(), "test");
>> Toolkit.getDefaultToolkit().getSystemClipboard().setContents(new
>> MyTransferable(path), null);
>> try {
>> Thread.sleep(Long.MAX_VALUE);
>> } catch (InterruptedException e) {
>> }
>> }
>>
>> public static class MyTransferable implements Transferable {
>> private Path path;
>>
>> MyTransferable(Path path) {
>> this.path = path;
>> }
>>
>> @Override
>> public DataFlavor[] getTransferDataFlavors() {
>> return new DataFlavor[] { DataFlavor.javaFileListFlavor };
>> }
>>
>> @Override
>> public boolean isDataFlavorSupported(DataFlavor flavor) {
>> return flavor.equals(DataFlavor.javaFileListFlavor);
>> }
>>
>> @Override
>> public Object getTransferData(DataFlavor flavor) throws
>> UnsupportedFlavorException, IOException {
>> return Arrays.asList(path.toFile());
>> }
>>
>> }
>> }
>>
>> 2. Run the compiled class using current JRE (`java Arik`)
>> 3. Switch to Finder and check the content of the clipboard (`Edit -> Show
>> Clipboard`)
>> 4. Verify you see "Cliboard contents: unknown" as in the following
>> screenshot:
>> <img width="479" alt="clipboard-before"
>> src="https://github.com/openjdk/jdk/assets/6020068/71d29b2e-209f-4445-a1e0-ecb3fc3e388b">
>>
>> 5. Verify you cannot paste the content of the clipboard to Finder (`Edit ->
>> Paste` is disabled)
>> 6. Run the compiled class using JRE that includes this change (`java Arik`)
>> 7. 3. Switch to Finder and check the content of the clipboard (`Edit -> Show
>> Clipboard`)
>> 8. Verify you see "Cliboard contents: file U...
>
> Arik Hadas has refreshed the contents of this pull request, and previous
> commits have been removed. The incremental views will show differences
> compared to the previous content of the PR. The pull request contains one new
> commit since the last revision:
>
> 8314498: [macos] Transferring File objects to Finder fails
>
> Credit goes to JetBrain that fixed it in JetBrainsRuntime (commit 24819d9).
> This fix was also cherry-picked to muCommander and was verified on macOS
> 12.6.8 and macOs 13, on X86_64 and on M1.
@anstarovoyt, I've proposed [the fix you posted 3 years ago to
JetBrainsRuntime](https://github.com/JetBrains/JetBrainsRuntime/pull/37) here
to OpenJDK as it can be useful for other applications, like muCommander. Could
you please help getting it in? As I wrote in the description, the credit should
go to you guys, so if you want to post it yourself or want me to change
something in this PR it would be fine
-------------
PR Comment: https://git.openjdk.org/jdk/pull/15980#issuecomment-1741725756