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