Withdrawn: 8314498: [macos] Transferring File objects to Finder fails

Arik Hadas duke at openjdk.org
Wed Oct 11 12:20:20 UTC 2023


On Fri, 29 Sep 2023 09:27:42 GMT, Arik Hadas <duke at openjdk.org> 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/steps-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 URL / items" as in the following screenshot:
> <img width="479" alt="clipboard-after" src="https://github.com/openjdk/jdk/as...

This pull request has been closed without being integrated.

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

PR: https://git.openjdk.org/jdk/pull/15980


More information about the client-libs-dev mailing list