XDND协议用于X11应用程序中的dnd支持。 http://www.newplanetsoftware.com/xdnd/
Gtk基于X11,但gtk不仅支持XDND协议:
typedef enum
{
GDK_DRAG_PROTO_MOTIF,
GDK_DRAG_PROTO_XDND,
GDK_DRAG_PROTO_ROOTWIN, /* A root window with nobody claiming
* drags */
GDK_DRAG_PROTO_NONE, /* Not a valid drag window */
GDK_DRAG_PROTO_WIN32_DROPFILES, /* The simple WM_DROPFILES dnd */
GDK_DRAG_PROTO_OLE2, /* The complex OLE2 dnd (not implemented) */
GDK_DRAG_PROTO_LOCAL /* Intra-app */
} GdkDragProtocol;
我检查了SWT中的值
public class GdkDragContext {
/** @field cast=(GdkDragProtocol) */
public int protocol;
/** @field cast=(gboolean) */
public boolean is_source;
/** @field cast=(GdkWindow *) */
public long /*int*/ source_window;
/** @field cast=(GdkWindow *) */
public long /*int*/ dest_window;
/** @field cast=(GList *) */
public long /*int*/ targets;
/** @field cast=(GdkDragAction) */
public int actions;
/** @field cast=(GdkDragAction) */
public int suggested_action;
/** @field cast=(GdkDragAction) */
public int action;
/** @field cast=(guint32) */
public int start_time;
public static final int sizeof = OS.GdkDragContext_sizeof();
}
协议的值是1,因此它也使用XDND协议。 那么可以在X11和SWT应用程序之间交换数据,即从x11拖到SWT还是反向?