1 /**
2  *
3  * $Id: DropSMgrP.h,v 1.1 2004/08/28 19:23:25 dannybackx Exp $
4  *
5  * Copyright (C) 1995 Free Software Foundation, Inc.
6  * Copyright (C) 1995-2000 LessTif Development Team
7  *
8  * This file is part of the GNU LessTif Library.
9  *
10  * This library is free software; you can redistribute it and/or
11  * modify it under the terms of the GNU Library General Public
12  * License as published by the Free Software Foundation; either
13  * version 2 of the License, or (at your option) any later version.
14  *
15  * This library is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
18  * Library General Public License for more details.
19  *
20  * You should have received a copy of the GNU Library General Public
21  * License along with this library; if not, write to the Free
22  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
23  *
24  **/
25 
26 #ifndef _XM_DROPSMGRP_H
27 #define _XM_DROPSMGRP_H
28 
29 #include <Xm/XmP.h>
30 #include <Xm/DropSMgr.h>
31 
32 #ifdef __cplusplus
33 extern "C" {
34 #endif
35 
36 typedef void (*XmDSMCreateInfoProc)(XmDropSiteManagerObject,
37 				    Widget,
38 				    ArgList,
39 				    Cardinal);
40 typedef void (*XmDSMDestroyInfoProc)(XmDropSiteManagerObject,
41 				     Widget);
42 typedef void (*XmDSMStartUpdateProc)(XmDropSiteManagerObject,
43 				     Widget);
44 typedef void (*XmDSMRetrieveInfoProc)(XmDropSiteManagerObject,
45 				      Widget,
46 				      ArgList,
47 				      Cardinal);
48 typedef void (*XmDSMUpdateInfoProc)(XmDropSiteManagerObject,
49 				    Widget,
50 				    ArgList,
51 				    Cardinal);
52 typedef void (*XmDSMEndUpdateProc)(XmDropSiteManagerObject,
53 				   Widget);
54 typedef void (*XmDSMUpdateProc)(XmDropSiteManagerObject,
55 				XtPointer,
56 				XtPointer);
57 typedef void (*XmDSMProcessMotionProc)(XmDropSiteManagerObject,
58 				       XtPointer,
59 				       XtPointer);
60 typedef void (*XmDSMProcessDropProc)(XmDropSiteManagerObject,
61 				     XtPointer,
62 				     XtPointer);
63 typedef void (*XmDSMOperationChangedProc)(XmDropSiteManagerObject,
64 					  XtPointer,
65 					  XtPointer);
66 typedef void (*XmDSMChangeRootProc)(XmDropSiteManagerObject,
67 				    XtPointer,
68 				    XtPointer);
69 typedef void (*XmDSMInsertInfoProc)(XmDropSiteManagerObject,
70 				    XtPointer,
71 				    XtPointer);
72 typedef void (*XmDSMRemoveInfoProc)(XmDropSiteManagerObject,
73 				    XtPointer);
74 typedef void (*XmDSMSyncTreeProc)(XmDropSiteManagerObject,
75 				  Widget);
76 typedef int  (*XmDSMGetTreeFromDSMProc)(XmDropSiteManagerObject,
77 					Widget,
78 					XtPointer);
79 typedef void (*XmDSMCreateDSInfoTable)(XmDropSiteManagerObject);
80 typedef void (*XmDSMDestroyDSInfoTable)(XmDropSiteManagerObject);
81 typedef void (*XmDSMRegisterInfoProc)(XmDropSiteManagerObject,
82 				      Widget,
83 				      XtPointer);
84 typedef XtPointer (*XmDSMWidgetToInfoProc)(XmDropSiteManagerObject,
85 					   Widget);
86 typedef void (*XmDSMUnregisterInfoProc)(XmDropSiteManagerObject,
87 					XtPointer);
88 
89 typedef struct {
90     XmDSMCreateInfoProc createInfo;
91     XmDSMDestroyInfoProc destroyInfo;
92     XmDSMStartUpdateProc startUpdate;
93     XmDSMRetrieveInfoProc retrieveInfo;
94     XmDSMUpdateInfoProc updateInfo;
95     XmDSMEndUpdateProc endUpdate;
96 
97     XmDSMUpdateProc updateDSM;
98 
99     XmDSMProcessMotionProc processMotion;
100     XmDSMProcessDropProc processDrop;
101     XmDSMOperationChangedProc operationChanged;
102     XmDSMChangeRootProc changeRoot;
103 
104     XmDSMInsertInfoProc insertInfo;
105     XmDSMRemoveInfoProc removeInfo;
106 
107     XmDSMSyncTreeProc syncTree;
108     XmDSMGetTreeFromDSMProc getTreeFromDSM;
109 
110     XmDSMCreateDSInfoTable createTable;
111     XmDSMDestroyDSInfoTable destroyTable;
112     XmDSMRegisterInfoProc registerInfo;
113     XmDSMWidgetToInfoProc widgetToInfo;
114     XmDSMUnregisterInfoProc unregisterInfo;
115 
116     XtPointer extension;
117 } XmDropSiteManagerClassPart;
118 
119 typedef struct _XmDropSiteManagerClassRec {
120     ObjectClassPart object_class;
121     XmDropSiteManagerClassPart dropManager_class;
122 } XmDropSiteManagerClassRec;
123 
124 XMLIBEXPORT extern XmDropSiteManagerClassRec xmDropSiteManagerClassRec;
125 
126 #define DSMCreateInfo(dsm, widget, args, numArgs) \
127        (((XmDropSiteManagerObjectClass) XtClass(dsm))-> \
128                 dropManager_class.createInfo) \
129                  ((dsm), (widget), (args), (numArgs))
130 
131 #define DSMDestroyInfo(dsm, widget) \
132        (((XmDropSiteManagerObjectClass) XtClass(dsm))-> \
133                 dropManager_class.destroyInfo) \
134                  ((dsm), (widget))
135 
136 #define DSMStartUpdate(dsm, widget) \
137        (((XmDropSiteManagerObjectClass) XtClass(dsm))-> \
138                 dropManager_class.startUpdate) \
139                  ((dsm), (widget))
140 
141 #define DSMRetrieveInfo(dsm, widget, args, numArgs) \
142        (((XmDropSiteManagerObjectClass) XtClass(dsm))-> \
143                 dropManager_class.retrieveInfo) \
144                  ((dsm), (widget), (args), (numArgs))
145 
146 #define DSMUpdateInfo(dsm, widget, args, numArgs) \
147        (((XmDropSiteManagerObjectClass) XtClass(dsm))-> \
148                 dropManager_class.updateInfo) \
149                  ((dsm), (widget), (args), (numArgs))
150 
151 #define DSMEndUpdate(dsm, widget) \
152        (((XmDropSiteManagerObjectClass) XtClass(dsm))-> \
153                 dropManager_class.endUpdate) \
154                  ((dsm), (widget))
155 
156 #define DSMUpdate(dsm, clientData, callData) \
157        (((XmDropSiteManagerObjectClass) XtClass(dsm))-> \
158                 dropManager_class.updateDSM) \
159                  ((dsm), (clientData), (callData))
160 
161 #define DSMProcessMotion(dsm, clientData, callData) \
162        (((XmDropSiteManagerObjectClass) XtClass(dsm))-> \
163                 dropManager_class.processMotion) \
164                  ((dsm), (clientData), (callData))
165 
166 #define DSMProcessDrop(dsm, clientData, callData) \
167        (((XmDropSiteManagerObjectClass) XtClass(dsm))-> \
168                 dropManager_class.processDrop) \
169                  ((dsm),(clientData), (callData))
170 
171 #define DSMOperationChanged(dsm, clientData, callData) \
172        (((XmDropSiteManagerObjectClass) XtClass(dsm))-> \
173                 dropManager_class.operationChanged) \
174                  ((dsm),(clientData), (callData))
175 
176 #define DSMChangeRoot(dsm, clientData, callData) \
177        (((XmDropSiteManagerObjectClass) XtClass(dsm))-> \
178                 dropManager_class.changeRoot) \
179                  ((dsm), (clientData), (callData))
180 
181 #define DSMInsertInfo(dsm, info, call_data) \
182        (((XmDropSiteManagerObjectClass) XtClass(dsm))-> \
183                 dropManager_class.insertInfo) \
184                  ((dsm), (info), (call_data))
185 
186 #define DSMRemoveInfo(dsm, info) \
187        (((XmDropSiteManagerObjectClass) XtClass(dsm))-> \
188                 dropManager_class.removeInfo) \
189                  ((dsm), (info))
190 
191 #define DSMSyncTree(dsm, shell) \
192        (((XmDropSiteManagerObjectClass) XtClass(dsm))-> \
193                 dropManager_class.syncTree) \
194                  ((dsm), (shell))
195 
196 #define DSMGetTreeFromDSM(dsm, shell, dataPtr) \
197        (((XmDropSiteManagerObjectClass) XtClass(dsm))-> \
198                 dropManager_class.getTreeFromDSM) \
199                  ((dsm), (shell), (dataPtr))
200 
201 #define DSMCreateTable(dsm) \
202        (((XmDropSiteManagerObjectClass) XtClass(dsm))-> \
203                 dropManager_class.createTable) \
204                  ((dsm))
205 
206 #define DSMDestroyTable(dsm) \
207        (((XmDropSiteManagerObjectClass) XtClass(dsm))-> \
208                 dropManager_class.destroyTable) \
209                  ((dsm))
210 
211 #define DSMRegisterInfo(dsm, widget, info) \
212        (((XmDropSiteManagerObjectClass) XtClass(dsm))-> \
213                 dropManager_class.registerInfo) \
214                  ((dsm), (widget), (info))
215 
216 #define DSMWidgetToInfo(dsm, widget) \
217        (XtPointer) ((((XmDropSiteManagerObjectClass) XtClass(dsm))-> \
218                              dropManager_class.widgetToInfo) \
219                               ((dsm), (widget)))
220 
221 #define DSMUnregisterInfo(dsm, info) \
222        (((XmDropSiteManagerObjectClass) XtClass(dsm))-> \
223                 dropManager_class.unregisterInfo) \
224                  ((dsm), (info))
225 
226 typedef struct __XmDropSiteUpdateInfoRec {
227   XmDropSiteManagerObject dsm;
228   Widget refWidget;
229   XtPointer *next;
230 } _XmDropSiteUpdateInfoRec, *_XmDropSiteUpdateInfo;
231 
232 typedef struct _XmDropSiteManagerPart {
233     XtCallbackProc notifyProc;
234     XtCallbackProc treeUpdateProc;
235     XtPointer client_data;
236     XtPointer dragUnderData;
237     XtPointer curInfo;
238     Time curTime;
239     Position curX, curY, oldX, oldY;
240     unsigned char curDropSiteStatus;
241     Widget curDragContext;
242     Boolean curAnimate;
243     unsigned char curOperations;
244     unsigned char curOperation;
245     XmRegion curAncestorClipRegion;
246     XmRegion newAncestorClipRegion;
247     XtPointer dsTable;
248     XtPointer dsRoot;
249     Position rootX, rootY;
250     Dimension rootW, rootH;
251     XtPointer clipperList;
252     _XmDropSiteUpdateInfo updateInfo;
253 } XmDropSiteManagerPart, *XmDropSiteManagerPartPtr;
254 
255 typedef struct _XmDropSiteManagerRec {
256     ObjectPart object;
257     XmDropSiteManagerPart dropManager;
258 } XmDropSiteManagerRec;
259 
260 XMLIBEXPORT extern void _XmDSMUpdate(XmDropSiteManagerObject dsm,
261 			 XtPointer clientData,
262 			 XtPointer callData);
263 XMLIBEXPORT extern int _XmDSMGetTreeFromDSM(XmDropSiteManagerObject dsm,
264 				Widget shell,
265 				XtPointer dataPtr);
266 XMLIBEXPORT extern Boolean _XmDropSiteShell(Widget widget);
267 XMLIBEXPORT extern Boolean _XmDropSiteWrapperCandidate(Widget widget);
268 XMLIBEXPORT extern Widget _XmGetActiveDropSite(Widget widget);
269 XMLIBEXPORT extern void _XmSyncDropSiteTree(Widget shell);
270 XMLIBEXPORT extern void _XmIEndUpdate(XtPointer client_data, XtIntervalId *interval_id);
271 
272 #ifdef __cplusplus
273 }
274 #endif
275 
276 #endif /* _XM_DROPSMGRP_H */
277