1 /***********************************************************************/
2 /* Open Visualization Data Explorer                                    */
3 /* (C) Copyright IBM Corp. 1989,1999                                   */
4 /* ALL RIGHTS RESERVED                                                 */
5 /* This code licensed under the                                        */
6 /*    "IBM PUBLIC LICENSE - Open Visualization Data Explorer"          */
7 /***********************************************************************/
8 
9 #include <dxconfig.h>
10 #include "../base/defines.h"
11 
12 
13 
14 #ifdef OS2
15 #include <stdlib.h>
16 #include <types.h>
17 #endif
18 #include <X11/Xlib.h>
19 #include <X11/StringDefs.h>
20 #include <X11/Intrinsic.h>
21 #include <Xm/Xm.h>
22 
23 #include "WorkspaceCallback.h"
24 
25 
AddConstraintCallback(Widget widget,register WsCallbackList * callbacks,XtCallbackProc callback,void * closure)26 void AddConstraintCallback( Widget widget, register WsCallbackList *callbacks,
27 			    XtCallbackProc callback, void * closure )
28 {
29     register WsCallbackRec *new;
30 
31     new = XtNew(WsCallbackRec);
32     new->next = NULL;
33     new->widget = widget;
34     new->closure = closure;
35     new->callback = callback;
36 
37     /*  Put it on the end of the list  */
38     if (*callbacks) {
39 	WsCallbackRec *next = *callbacks;
40 	while (next->next)
41 	    next = next->next;
42 	next->next = new;
43     } else {
44 	*callbacks = new;
45     }
46 }
47 
48 
49 /*  Subroutine:	RemoveConstraintCallbacks
50  *  Purpose:	Clear out child constraint callback list
51  *		(Routine is just like Xt's _XtRemoveAllCallbacks)
52  */
RemoveConstraintCallbacks(WsCallbackList * callbacks)53 void RemoveConstraintCallbacks( WsCallbackList *callbacks )
54 {
55     register WsCallbackRec *cl, *next;
56 
57     cl = *callbacks;
58     while( cl != NULL )
59     {
60 	next = cl->next;
61 	XtFree((char *)cl);
62 	cl = next;
63     }
64     (*callbacks) = NULL;
65 }
66 
67 
68 /*  Subroutine:	CallConstraintCallbacks
69  *  Purpose:	Call callbacks in a child's constraint callback list
70  */
CallConstraintCallbacks(Widget widget,WsCallbackList callbacks,XmAnyCallbackStruct * call_data)71 void CallConstraintCallbacks( Widget widget, WsCallbackList callbacks,
72 			      XmAnyCallbackStruct *call_data )
73 {
74     /*  Put it on the end of the list  */
75     while( callbacks != NULL )
76     {
77 	(*callbacks->callback)(widget, callbacks->closure, call_data);
78 	callbacks = callbacks->next;
79     }
80 }
81