Dt/Dnd.h(file formats)

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:

DtDndStatus
    DtDND_SUCCESS, DtDND_FAILURE

DtDndProtocol

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);