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/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 ...
>
> 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.

Hello! Actually, I don't like the fix:
1. It was the first time I touched Objective-C code, so the code itself is very 
poor. 
2. I didn't add any tests because I am not familiar with the test framework. 
3. At some point we received a number of exception reports related to my 
changes (most-likely), and I have no clue what was the reason. We did some 
investigation with @avu but unsuccessfully. 

So, my hope was that someone more experienced will handle the problem properly, 
but passed three years...

@avu Can you help to handle submitting the PR from our side?

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

PR Comment: https://git.openjdk.org/jdk/pull/15980#issuecomment-1757067973

Reply via email to