diff --git a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/ByteArrayTransfer.java b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/ByteArrayTransfer.java index 7ea790bf899..d3cdef10270 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/ByteArrayTransfer.java +++ b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/ByteArrayTransfer.java @@ -156,7 +156,7 @@ public boolean isSupportedType(TransferData transferData){ */ @Override protected void javaToNative (Object object, TransferData transferData) { - transferData.result = 0; + transferData.gtk3().result = 0; if (!checkByteArray(object) || !isSupportedType(transferData)) { DND.error(DND.ERROR_INVALID_DATA); } @@ -165,10 +165,10 @@ protected void javaToNative (Object object, TransferData transferData) { long pValue = OS.g_malloc(buffer.length); if (pValue == 0) return; C.memmove(pValue, buffer, buffer.length); - transferData.length = buffer.length; - transferData.format = 8; - transferData.pValue = pValue; - transferData.result = 1; + transferData.gtk3().length = buffer.length; + transferData.gtk3().format = 8; + transferData.gtk3().pValue = pValue; + transferData.gtk3().result = 1; } /** @@ -183,11 +183,11 @@ protected void javaToNative (Object object, TransferData transferData) { */ @Override protected Object nativeToJava(TransferData transferData) { - if ( !isSupportedType(transferData) || transferData.pValue == 0) return null; - int size = transferData.format * transferData.length / 8; + if ( !isSupportedType(transferData) || transferData.gtk3().pValue == 0) return null; + int size = transferData.gtk3().format * transferData.gtk3().length / 8; if (size == 0) return null; byte[] buffer = new byte[size]; - C.memmove(buffer, transferData.pValue, size); + C.memmove(buffer, transferData.gtk3().pValue, size); return buffer; } diff --git a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/Clipboard.java b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/Clipboard.java index 6cd70304a42..d76d8bb90a4 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/Clipboard.java +++ b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/Clipboard.java @@ -312,9 +312,9 @@ public Object getContents(Transfer transfer, int clipboards) { if (selection_data != 0) { TransferData tdata = new TransferData(); tdata.type = GTK3.gtk_selection_data_get_data_type(selection_data); - tdata.pValue = GTK3.gtk_selection_data_get_data(selection_data); - tdata.length = GTK3.gtk_selection_data_get_length(selection_data); - tdata.format = GTK3.gtk_selection_data_get_format(selection_data); + tdata.gtk3().pValue = GTK3.gtk_selection_data_get_data(selection_data); + tdata.gtk3().length = GTK3.gtk_selection_data_get_length(selection_data); + tdata.gtk3().format = GTK3.gtk_selection_data_get_format(selection_data); result = transfer.nativeToJava(tdata); GTK3.gtk_selection_data_free(selection_data); selection_data = 0; 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..3b9d7a9a5fe 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 @@ -139,11 +139,11 @@ long getFunc(long clipboard, long selection_data, long info, long user_data_or_o if (index == -1) return 0; Object[] data = (clipboard == Clipboard.GTKCLIPBOARD) ? clipboardData : primaryClipboardData; types[index].javaToNative(data[index], tdata); - if (tdata.format < 8 || tdata.format % 8 != 0) { + if (tdata.gtk3().format < 8 || tdata.gtk3().format % 8 != 0) { return 0; } - GTK3.gtk_selection_data_set(selection_data, tdata.type, tdata.format, tdata.pValue, tdata.length); - OS.g_free(tdata.pValue); + GTK3.gtk_selection_data_set(selection_data, tdata.type, tdata.gtk3().format, tdata.gtk3().pValue, tdata.gtk3().length); + OS.g_free(tdata.gtk3().pValue); return 1; } diff --git a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/DragSource.java b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/DragSource.java index 07dfbd9addc..dfe937d98f3 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/DragSource.java +++ b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/DragSource.java @@ -516,9 +516,9 @@ void dragGetData(long widget, long context, long selection_data, int info, int TransferData transferData = new TransferData(); transferData.type = target; - transferData.pValue = data; - transferData.length = length; - transferData.format = format; + transferData.gtk3().pValue = data; + transferData.gtk3().length = length; + transferData.gtk3().format = format; DNDEvent event = new DNDEvent(); event.widget = this; @@ -536,9 +536,9 @@ void dragGetData(long widget, long context, long selection_data, int info, int } if (transfer == null) return; transfer.javaToNative(event.data, transferData); - if (transferData.result != 1) return; - GTK3.gtk_selection_data_set(selection_data, transferData.type, transferData.format, transferData.pValue, transferData.length); - OS.g_free(transferData.pValue); + if (transferData.gtk3().result != 1) return; + GTK3.gtk_selection_data_set(selection_data, transferData.type, transferData.gtk3().format, transferData.gtk3().pValue, transferData.gtk3().length); + OS.g_free(transferData.gtk3().pValue); return; } diff --git a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/DropTarget.java b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/DropTarget.java index e82fbca3754..5f641b78e94 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/DropTarget.java +++ b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/DropTarget.java @@ -358,9 +358,9 @@ void drag_data_received ( long widget, long context, int x, int y, long selectio long type = GTK3.gtk_selection_data_get_data_type(selection_data); if (data != 0) { transferData.type = type; - transferData.length = length; - transferData.pValue = data; - transferData.format = format; + transferData.gtk3().length = length; + transferData.gtk3().pValue = data; + transferData.gtk3().format = format; for (int i = 0; i < transferAgents.length; i++) { Transfer transfer = transferAgents[i]; if (transfer != null && transfer.isSupportedType(transferData)) { diff --git a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/FileTransfer.java b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/FileTransfer.java index a5682302ef9..670231d580f 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/FileTransfer.java +++ b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/FileTransfer.java @@ -69,7 +69,7 @@ public static FileTransfer getInstance () { */ @Override public void javaToNative(Object object, TransferData transferData) { - transferData.result = 0; + transferData.gtk3().result = 0; if (!checkFile(object) || !isSupportedType(transferData)) { DND.error(DND.ERROR_INVALID_DATA); } @@ -119,10 +119,10 @@ public void javaToNative(Object object, TransferData transferData) { long ptr = OS.g_malloc(buffer.length+1); C.memset(ptr, '\0', buffer.length+1); C.memmove(ptr, buffer, buffer.length); - transferData.pValue = ptr; - transferData.length = buffer.length; - transferData.format = 8; - transferData.result = 1; + transferData.gtk3().pValue = ptr; + transferData.gtk3().length = buffer.length; + transferData.gtk3().format = 8; + transferData.gtk3().result = 1; } /** * This implementation of nativeToJava converts a platform specific @@ -137,10 +137,10 @@ public void javaToNative(Object object, TransferData transferData) { */ @Override public Object nativeToJava(TransferData transferData) { - if ( !isSupportedType(transferData) || transferData.pValue == 0 || transferData.length <= 0 ) return null; - int length = transferData.length; + if ( !isSupportedType(transferData) || transferData.gtk3().pValue == 0 || transferData.gtk3().length <= 0 ) return null; + int length = transferData.gtk3().length; byte[] temp = new byte[length]; - C.memmove(temp, transferData.pValue, length); + C.memmove(temp, transferData.gtk3().pValue, length); boolean gnomeList = transferData.type == GNOME_LIST_ID; int sepLength = gnomeList ? 1 : 2; long [] files = new long [0]; diff --git a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/HTMLTransfer.java b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/HTMLTransfer.java index f9c8e36dfb7..cbd509db19b 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/HTMLTransfer.java +++ b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/HTMLTransfer.java @@ -61,7 +61,7 @@ public static HTMLTransfer getInstance () { */ @Override public void javaToNative (Object object, TransferData transferData){ - transferData.result = 0; + transferData.gtk3().result = 0; if (!checkHTML(object) || !isSupportedType(transferData)) { DND.error(DND.ERROR_INVALID_DATA); } @@ -71,10 +71,10 @@ public void javaToNative (Object object, TransferData transferData){ long pValue = OS.g_malloc(byteCount); if (pValue == 0) return; C.memmove(pValue, utf8, byteCount); - transferData.length = byteCount; - transferData.format = 8; - transferData.pValue = pValue; - transferData.result = 1; + transferData.gtk3().length = byteCount; + transferData.gtk3().format = 8; + transferData.gtk3().pValue = pValue; + transferData.gtk3().result = 1; } /** @@ -89,21 +89,21 @@ public void javaToNative (Object object, TransferData transferData){ */ @Override public Object nativeToJava(TransferData transferData){ - if ( !isSupportedType(transferData) || transferData.pValue == 0 ) return null; + if ( !isSupportedType(transferData) || transferData.gtk3().pValue == 0 ) return null; /* Ensure byteCount is a multiple of 2 bytes */ - int size = (transferData.format * transferData.length / 8) / 2 * 2; + int size = (transferData.gtk3().format * transferData.gtk3().length / 8) / 2 * 2; if (size <= 0) return null; char[] bom = new char[1]; // look for a Byte Order Mark - if (size > 1) C.memmove (bom, transferData.pValue, 2); + if (size > 1) C.memmove (bom, transferData.gtk3().pValue, 2); String string; if (bom[0] == '\ufeff' || bom[0] == '\ufffe') { // utf16 char[] chars = new char [size/2]; - C.memmove (chars, transferData.pValue, size); + C.memmove (chars, transferData.gtk3().pValue, size); string = new String (chars); } else { byte[] utf8 = new byte[size]; - C.memmove(utf8, transferData.pValue, size); + C.memmove(utf8, transferData.gtk3().pValue, size); // convert utf8 byte array to a unicode string char [] unicode = org.eclipse.swt.internal.Converter.mbcsToWcs (utf8); string = new String (unicode); diff --git a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/ImageTransfer.java b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/ImageTransfer.java index a58b0b35631..b9eb3463680 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/ImageTransfer.java +++ b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/ImageTransfer.java @@ -111,14 +111,14 @@ public void javaToNative(Object object, TransferData transferData) { if (type == null) return; GDK.gdk_pixbuf_save_to_bufferv(pixbuf, buffer, len, type, null, null, null); OS.g_object_unref(pixbuf); - transferData.pValue = buffer[0]; - transferData.length = (int)(len[0] + 3) / 4 * 4; - transferData.result = 1; + transferData.gtk3().pValue = buffer[0]; + transferData.gtk3().length = (int)(len[0] + 3) / 4 * 4; + transferData.gtk3().result = 1; // The following value has been changed from 32 to 8 as a simple fix for #146 // See https://www.cc.gatech.edu/data_files/public/doc/gtk/tutorial/gtk_tut-16.html where it states: // "The format field is actually important here - the X server uses it to figure out whether the data // needs to be byte-swapped or not. Usually it will be 8 - i.e. a character - or 32 - i.e. a. integer." - transferData.format = 8; + transferData.gtk3().format = 8; } image.dispose(); } @@ -136,10 +136,10 @@ public void javaToNative(Object object, TransferData transferData) { @Override public Object nativeToJava(TransferData transferData) { ImageData imgData = null; - if (transferData.length > 0) { + if (transferData.gtk3().length > 0) { long loader = GDK.gdk_pixbuf_loader_new(); try { - GDK.gdk_pixbuf_loader_write(loader, transferData.pValue, transferData.length, null); + GDK.gdk_pixbuf_loader_write(loader, transferData.gtk3().pValue, transferData.gtk3().length, null); GDK.gdk_pixbuf_loader_close(loader, null); long pixbuf = GDK.gdk_pixbuf_loader_get_pixbuf(loader); if (pixbuf != 0) { diff --git a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/RTFTransfer.java b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/RTFTransfer.java index 586ff586da7..383db27e78b 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/RTFTransfer.java +++ b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/RTFTransfer.java @@ -13,6 +13,7 @@ *******************************************************************************/ package org.eclipse.swt.dnd; +import org.eclipse.swt.dnd.TransferData.*; import org.eclipse.swt.internal.*; import org.eclipse.swt.internal.gtk.*; @@ -63,7 +64,7 @@ public static RTFTransfer getInstance () { */ @Override public void javaToNative (Object object, TransferData transferData){ - transferData.result = 0; + transferData.gtk3().result = 0; if (!checkRTF(object) || !isSupportedType(transferData)) { DND.error(DND.ERROR_INVALID_DATA); } @@ -72,10 +73,10 @@ public void javaToNative (Object object, TransferData transferData){ long pValue = OS.g_malloc(buffer.length); if (pValue == 0) return; C.memmove(pValue, buffer, buffer.length); - transferData.length = buffer.length - 1; - transferData.format = 8; - transferData.pValue = pValue; - transferData.result = 1; + transferData.gtk3().length = buffer.length - 1; + transferData.gtk3().format = 8; + transferData.gtk3().pValue = pValue; + transferData.gtk3().result = 1; } /** @@ -90,11 +91,11 @@ public void javaToNative (Object object, TransferData transferData){ */ @Override public Object nativeToJava(TransferData transferData){ - if ( !isSupportedType(transferData) || transferData.pValue == 0 ) return null; - int size = transferData.format * transferData.length / 8; + if ( !isSupportedType(transferData) || transferData.gtk3().pValue == 0 ) return null; + int size = transferData.gtk3().format * transferData.gtk3().length / 8; if (size == 0) return null; byte[] buffer = new byte[size]; - C.memmove(buffer, transferData.pValue, size); + C.memmove(buffer, transferData.gtk3().pValue, size); char [] chars = Converter.mbcsToWcs (buffer); String string = new String (chars); int end = string.indexOf('\0'); 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 a745aa13026..a58703e403b 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,7 @@ *******************************************************************************/ package org.eclipse.swt.dnd; +import org.eclipse.swt.dnd.TransferData.*; import org.eclipse.swt.internal.*; import org.eclipse.swt.internal.gtk.*; @@ -71,7 +72,7 @@ public static TextTransfer getInstance () { */ @Override public void javaToNative (Object object, TransferData transferData) { - transferData.result = 0; + transferData.gtk3().result = 0; if (!checkText(object) || !isSupportedType(transferData)) { DND.error(DND.ERROR_INVALID_DATA); } @@ -85,28 +86,28 @@ public void javaToNative (Object object, TransferData transferData) { boolean result = GDK.gdk_x11_display_utf8_to_compound_text (GDK.gdk_display_get_default(), utf8, encoding, format, ctext, length); if (!result) return; transferData.type = encoding[0]; - transferData.format = format[0]; - transferData.length = length[0]; - transferData.pValue = ctext[0]; - transferData.result = 1; + transferData.gtk3().format = format[0]; + transferData.gtk3().length = length[0]; + transferData.gtk3().pValue = ctext[0]; + transferData.gtk3().result = 1; } if (transferData.type == UTF8_STRING_ID || transferData.type == TEXT_PLAIN_UTF8_ID) { long pValue = OS.g_malloc(utf8.length); if (pValue == 0) return; C.memmove(pValue, utf8, utf8.length); - transferData.format = 8; - transferData.length = utf8.length - 1; - transferData.pValue = pValue; - transferData.result = 1; + transferData.gtk3().format = 8; + transferData.gtk3().length = utf8.length - 1; + transferData.gtk3().pValue = pValue; + transferData.gtk3().result = 1; } if (transferData.type == STRING_ID) { long string_target = GDK.gdk_utf8_to_string_target(utf8); if (string_target == 0) return; transferData.type = STRING_ID; - transferData.format = 8; - transferData.length = C.strlen(string_target); - transferData.pValue = string_target; - transferData.result = 1; + transferData.gtk3().format = 8; + transferData.gtk3().length = C.strlen(string_target); + transferData.gtk3().pValue = string_target; + transferData.gtk3().result = 1; } } @@ -122,9 +123,10 @@ public void javaToNative (Object object, TransferData transferData) { */ @Override public Object nativeToJava(TransferData transferData){ - if (!isSupportedType(transferData) || transferData.pValue == 0) return null; + + if (!isSupportedType(transferData) || transferData.gtk3().pValue == 0) return null; long [] list = new long [1]; - int count = GDK.gdk_text_property_to_utf8_list_for_display(GDK.gdk_display_get_default(), transferData.type, transferData.format, transferData.pValue, transferData.length, list); + int count = GDK.gdk_text_property_to_utf8_list_for_display(GDK.gdk_display_get_default(), transferData.type, transferData.gtk3().format, transferData.gtk3().pValue, transferData.gtk3().length, list); if (count == 0) return null; long [] ptr = new long [1]; C.memmove(ptr, list[0], C.PTR_SIZEOF); diff --git a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/TransferData.java b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/TransferData.java index 3ff822475e1..7efa0e2614b 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/TransferData.java +++ b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/TransferData.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2012 IBM Corporation and others. + * Copyright (c) 2000, 2025 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -13,6 +13,7 @@ *******************************************************************************/ package org.eclipse.swt.dnd; +import org.eclipse.swt.internal.gtk.*; /** * The TransferData class is a platform specific data structure for @@ -46,66 +47,115 @@ public class TransferData { public long type; /** - * Specifies the number of units in pValue. - * (Warning: This field is platform dependent) - *

- * IMPORTANT: This field is not part of the SWT - * public API. It is marked public only so that it can be shared - * within the packages provided by SWT. It is not available on all - * platforms and should never be accessed from application code. - *

- * - * @see TransferData#format for the size of one unit - * - * @noreference This field is not intended to be referenced by clients. + * @noreference This class is not intended to be referenced by clients. + * @noinstantiate This class is not intended to be instantiated by clients. + * @noextend This class is not intended to be subclassed by clients. + * @since 3.132 */ - public int length; + public static class TransferDataGTK3 { + /** + * Specifies the number of units in pValue. + * (Warning: This field is platform dependent) + *

+ * IMPORTANT: This field is not part of the SWT + * public API. It is marked public only so that it can be shared + * within the packages provided by SWT. It is not available on all + * platforms and should never be accessed from application code. + *

+ * + * @see TransferDataGTK3#format for the size of one unit + * + * @noreference This field is not intended to be referenced by clients. + */ + public int length; + /** + * Specifies the size in bits of a single unit in pValue. + * (Warning: This field is platform dependent) + *

+ * IMPORTANT: This field is not part of the SWT + * public API. It is marked public only so that it can be shared + * within the packages provided by SWT. It is not available on all + * platforms and should never be accessed from application code. + *

+ * + * This is most commonly 8 bits. + * + * @noreference This field is not intended to be referenced by clients. + */ + public int format; + /** + * Pointer to the data being transferred. + * (Warning: This field is platform dependent) + *

+ * IMPORTANT: This field is not part of the SWT + * public API. It is marked public only so that it can be shared + * within the packages provided by SWT. It is not available on all + * platforms and should never be accessed from application code. + *

+ * + * @noreference This field is not intended to be referenced by clients. + */ + public long pValue; + /** + * The result field contains the result of converting a + * java data type into a platform specific value. + * (Warning: This field is platform dependent) + *

+ * IMPORTANT: This field is not part of the SWT + * public API. It is marked public only so that it can be shared + * within the packages provided by SWT. It is not available on all + * platforms and should never be accessed from application code. + *

+ *

The value of result is 1 if the conversion was successful. + * The value of result is 0 if the conversion failed.

+ * + * @noreference This field is not intended to be referenced by clients. + */ + public int result; + + private TransferDataGTK3() {} + } /** - * Specifies the size in bits of a single unit in pValue. - * (Warning: This field is platform dependent) - *

- * IMPORTANT: This field is not part of the SWT - * public API. It is marked public only so that it can be shared - * within the packages provided by SWT. It is not available on all - * platforms and should never be accessed from application code. - *

- * - * This is most commonly 8 bits. - * - * @noreference This field is not intended to be referenced by clients. + * @noreference This class is not intended to be referenced by clients. + * @noinstantiate This class is not intended to be instantiated by clients. + * @noextend This class is not intended to be subclassed by clients. + * @since 3.132 */ - public int format; + public static class TransferDataGTK4 { + // GTK4 specific fields will be introduced here + + private TransferDataGTK4() {} + } + + private TransferDataGTK3 gtk3; + + private TransferDataGTK4 gtk4; /** - * Pointer to the data being transferred. - * (Warning: This field is platform dependent) - *

- * IMPORTANT: This field is not part of the SWT - * public API. It is marked public only so that it can be shared - * within the packages provided by SWT. It is not available on all - * platforms and should never be accessed from application code. - *

- * - * @noreference This field is not intended to be referenced by clients. + * @noreference This method is not intended to be referenced by clients. */ - public long pValue; - + public TransferDataGTK3 gtk3() { + if (gtk3 != null) { + return gtk3; + } + if (!GTK.GTK4) { + gtk3 = new TransferDataGTK3(); + return gtk3; + } + throw new UnsupportedOperationException("Illegal attempt to use GTK3 TransferData on GTK4"); + } /** - * The result field contains the result of converting a - * java data type into a platform specific value. - * (Warning: This field is platform dependent) - *

- * IMPORTANT: This field is not part of the SWT - * public API. It is marked public only so that it can be shared - * within the packages provided by SWT. It is not available on all - * platforms and should never be accessed from application code. - *

- *

The value of result is 1 if the conversion was successful. - * The value of result is 0 if the conversion failed.

- * - * @noreference This field is not intended to be referenced by clients. + * @noreference This method is not intended to be referenced by clients. */ - public int result; - + public TransferDataGTK4 gtk4() { + if (gtk4 != null) { + return gtk4; + } + if (GTK.GTK4) { + gtk4 = new TransferDataGTK4(); + return gtk4; + } + throw new UnsupportedOperationException("Illegal attempt to use GTK4 TransferData on GTK3"); + } } diff --git a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/URLTransfer.java b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/URLTransfer.java index 6fdbb76ddd4..35bbab9155c 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/URLTransfer.java +++ b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/gtk/org/eclipse/swt/dnd/URLTransfer.java @@ -62,7 +62,7 @@ public static URLTransfer getInstance () { */ @Override public void javaToNative (Object object, TransferData transferData){ - transferData.result = 0; + transferData.gtk3().result = 0; if (!checkURL(object) || !isSupportedType(transferData)) { DND.error(DND.ERROR_INVALID_DATA); } @@ -74,10 +74,10 @@ public void javaToNative (Object object, TransferData transferData){ long pValue = OS.g_malloc(byteCount); if (pValue == 0) return; C.memmove(pValue, chars, byteCount); - transferData.length = byteCount; - transferData.format = 8; - transferData.pValue = pValue; - transferData.result = 1; + transferData.gtk3().length = byteCount; + transferData.gtk3().format = 8; + transferData.gtk3().pValue = pValue; + transferData.gtk3().result = 1; } /** @@ -92,12 +92,12 @@ public void javaToNative (Object object, TransferData transferData){ */ @Override public Object nativeToJava(TransferData transferData){ - if (!isSupportedType(transferData) || transferData.pValue == 0) return null; + if (!isSupportedType(transferData) || transferData.gtk3().pValue == 0) return null; /* Ensure byteCount is a multiple of 2 bytes */ - int size = (transferData.format * transferData.length / 8) / 2 * 2; + int size = (transferData.gtk3().format * transferData.gtk3().length / 8) / 2 * 2; if (size <= 0) return null; char[] chars = new char [size/2]; - C.memmove (chars, transferData.pValue, size); + C.memmove (chars, transferData.gtk3().pValue, size); String string = new String (chars); int end = string.indexOf('\0'); return (end == -1) ? string : string.substring(0, end);