Dt/Dnd.h(5)

NAME
Dt/Dnd.h - Drag and drop definitions

SYNOPSIS
#include <Dt/Dnd.h>

DESCRIPTION
The <Dt/Dnd.h> header defines the following enumeration types:

    DtCR_DND_CONVERT_DATA
    DtCR_DND_CONVERT_DELETE
    DtCR_DND_DRAG_FINISH
    DtCR_DND_TRANSFER_DATA
    DtCR_DND_DROP_ANIMATE

The header defines the following enumeration data types, with at least the following members:

    DtDND_SUCCESS, DtDND_FAILURE

        DtDND_TEXT_TRANSFER     = (1L << 0)
        DtDND_FILENAME_TRANSFER = (1L << 1)
        DtDND_BUFFER_TRANSFER   = (1L << 2)

The header declares the following structures:

    typedef struct _DtDndBuffer {
    	void *bp;
    	int size;
    	string name;
    } DtDndBuffer;

    typedef struct _DtDndContext {
    	DtDndProtocol protocol;
    	int numItems;
    	union {
    		XmString *strings;
    		String *files;
    		DtDndBuffer *buffers;
    	} data;
    } DtDndContext;

    typedef struct _DtDndConvertCallbackStruct {
    	int reason;
    	XEvent *event;
    	DtDndContext *dragData;
    	DtDndStatus status;
    } DtDndConvertCallbackStruct, *DtDndConvertCallback;

    typedef struct _DtDndDragFinishCallbackStruct {
    	int reason;
    	XEvent *event;
    	DtDndContext *dragData;
    	Widget sourceIcon;
    } DtDndDragFinishCallbackStruct, *DtDndDragFinishCallback;

    typedef struct _DtDndTransferCallbackStruct {
    	int reason;
    	XEvent *event;
    	Position x, y;
    	unsigned char operation;
    	DtDndContext *dropData;
    	Boolean completeMove;
    	DtDndStatus status;
    } DtDndTransferCallbackStruct, *DtDndTransferCallback;

    typedef struct _DtDndDropAnimateCallbackStruct {
    	int reason;
    	XEvent *event;
    	Position x, y;
    	unsigned char operation;
    	DtDndContext *dropData;
    } DtDndDropAnimateCallbackStruct, *DtDndDropAnimateCallback;

The header declares the following as functions:

Widget DtDndCreateSourceIcon(Widget parent,
	Pixmap pixmap,
	Pixmap mask);

Widget DtDndDragStart(Widget dragSource,
	XEvent *event,
	DtDndProtocol protocol,
	Cardinal numItems,
	unsigned char operations,
	XtCallbackList convertCallback,
	XtCallbackList dragFinishCallback,
	ArgList argList,
	Cardinal argCount);

Widget DtDndVaDragStart(Widget dragSource,
	XEvent *event,
	DtDndProtocol protocol,
	Cardinal numItems,
	unsigned char operations,
	XtCallbackList convertCallback,
	XtCallbackList dragFinishCallback,
	...);

void DtDndDropRegister(Widget dropSite,
	DtDndProtocol protocols,
	unsigned char operations,
	XtCallbackList transferCallback,
	ArgList argList,
	Cardinal argCount);

void DtDndVaDropRegister(Widget dropSite,
	DtDndProtocol protocols,
	unsigned char operations,
	XtCallbackList transferCallback,
	...);

void DtDndDropUnregister(Widget dropSite);