1 /* $Header: /cvsroot/lesstif/lesstif/test/Xm/drag_help/drag_bitmap.c,v 1.3 2001/05/23 13:42:30 amai Exp $ */
2
3 #include <Xm/Xm.h>
4 #include <Xm/DragDrop.h>
5 #include "bitmap.h"
6
7 extern Boolean export_bitmap();
8
9 void
drop_site_enter(w,client_data,call_data)10 drop_site_enter(w, client_data, call_data)
11 Widget w;
12 XtPointer client_data;
13 XtPointer call_data;
14 {
15 Bitmap_p bitmap = (Bitmap_p) client_data;
16
17 if (((XmDropSiteEnterCallbackStruct *) call_data)->dropSiteStatus ==
18 XmVALID_DROP_SITE)
19 XtVaSetValues(w, XmNsourceCursorIcon, bitmap->state_icon, NULL);
20 }
21
22 void
drop_site_leave(w,client_data,call_data)23 drop_site_leave(w, client_data, call_data)
24 Widget w;
25 XtPointer client_data;
26 XtPointer call_data;
27 {
28 XtVaSetValues(w, XmNsourceCursorIcon, NULL, NULL);
29 }
30
31 void
drag_bitmap(w,bitmap,event)32 drag_bitmap(w, bitmap, event)
33 Widget w;
34 Bitmap_p bitmap;
35 XEvent *event;
36 {
37 Widget drag_context;
38 Arg al[10];
39 int ac = 0;
40 Atom export_targets[2];
41
42 export_targets[0] = XA_STRING;
43 export_targets[1] = XA_PIXMAP;
44
45 if (bitmap->state_icon == NULL) {
46 XtSetArg(al[ac], XmNpixmap, bitmap->bitmap); ac++;
47 XtSetArg(al[ac], XmNwidth, bitmap->width); ac++;
48 XtSetArg(al[ac], XmNheight, bitmap->height); ac++;
49 bitmap->state_icon = XmCreateDragIcon(w, "drag_icon", al, ac);
50 ac = 0;
51 }
52 XtSetArg(al[ac], XmNconvertProc, export_bitmap); ac++;
53 XtSetArg(al[ac], XmNclientData, bitmap); ac++;
54 XtSetArg(al[ac], XmNexportTargets, export_targets); ac++;
55 XtSetArg(al[ac], XmNnumExportTargets, 2); ac++;
56 XtSetArg(al[ac], XmNdragOperations, XmDROP_COPY); ac++;
57 drag_context = XmDragStart(w, event, al, ac);
58
59 /* Register callbacks for entering and leaving drop sites */
60 if (drag_context) {
61 XtAddCallback(drag_context, XmNdropSiteEnterCallback,
62 drop_site_enter, (XtPointer) bitmap);
63 XtAddCallback(drag_context, XmNdropSiteLeaveCallback,
64 drop_site_leave, NULL);
65 /* Extra target XA_PIXMAP */
66 export_targets[0] = XA_STRING;
67 export_targets[1] = XA_PIXMAP;
68 }
69 }
70