[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openjdk-2d-dev
Subject:    Re: RFR: 8314498: [macos] Transferring File objects to Finder fails [v2]
From:       Arik Hadas <duke () openjdk ! org>
Date:       2023-09-30 9:37:39
Message-ID: 1V9DLhmT1vdeIVPhmmnA65zH0aRtBqraaIHiZV5Vdmk=.bcd2a704-198c-4665-ab06-1893c1768c59 () github ! com
[Download RAW message or body]

On Fri, 29 Sep 2023 19:35:33 GMT, Arik Hadas <duke@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/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


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic