diff --git a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/ClipboardProxy.java b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/ClipboardProxy.java index fd61b6c8eaa..f53699c77ec 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/ClipboardProxy.java +++ b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/ClipboardProxy.java @@ -169,6 +169,9 @@ boolean setData(Clipboard owner, Object[] data, Transfer[] dataTypes, int clipbo System.arraycopy(entries, 0, tmp, 0, entries.length); tmp[entries.length] = entry; entries = tmp; + TransferData tdata = new TransferData(); + tdata.type = typeIds[j]; + transfer.javaToNative(data[i], tdata); } } diff --git a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/TextTransfer.java b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/TextTransfer.java index c0cea471819..e135b96319d 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/TextTransfer.java +++ b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/TextTransfer.java @@ -13,6 +13,8 @@ *******************************************************************************/ package org.eclipse.swt.dnd; +import java.nio.charset.*; + import org.eclipse.swt.internal.*; import org.eclipse.swt.internal.gtk.*; @@ -109,8 +111,29 @@ public void javaToNative (Object object, TransferData transferData) { transferData.pValue = string_target; transferData.result = 1; } + if (transferData.type == TEXT_PLAIN_UTF8_ID) { + // Convert the text into RFC-1341 format + byte[] rfc1341Data = encodeTextAsRFC1341(string); + transferData.format = 8; // Format for UTF-8 + transferData.length = rfc1341Data.length; + transferData.pValue = OS.g_malloc(rfc1341Data.length); + if (transferData.pValue != 0) { + C.memmove(transferData.pValue, rfc1341Data, rfc1341Data.length); + transferData.result = 1; + } + } +} + +// New method to encode text as RFC-1341 +private byte[] encodeTextAsRFC1341(String text) { + // Implement encoding logic here, e.g., adding MIME headers and encoding text + // This is a simplified example; actual encoding depends on RFC-1341 standards +// String rfc1341Text = "Content-Type: " + TEXTPLAINUTF8 + "\r\n\r\n" + text; + String rfc1341Text = text; + return rfc1341Text.getBytes(StandardCharsets.UTF_8); } + /** * This implementation of nativeToJava converts a platform specific * representation of plain text to a java String.