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