Esempio n. 1
0
void XtRemoveCallback (
    Widget	    widget,
    _Xconst char*   name,
    XtCallbackProc  callback,
    XtPointer	    closure
    )
{
    InternalCallbackList *callbacks;
    Widget hookobj;
    XtAppContext app = XtWidgetToApplicationContext(widget);

    LOCK_APP(app);
    callbacks = FetchInternalList(widget, name);
    if (!callbacks) {
	XtAppWarningMsg(app,
	       XtNinvalidCallbackList,XtNxtRemoveCallback,XtCXtToolkitError,
              "Cannot find callback list in XtRemoveCallback",
	      (String *)NULL, (Cardinal *)NULL);
	UNLOCK_APP(app);
	return;
    }
    _XtRemoveCallback(callbacks, callback, closure);
    hookobj = XtHooksOfDisplay(XtDisplayOfObject(widget));
    if (XtHasCallbacks(hookobj, XtNchangeHook) == XtCallbackHasSome) {
	XtChangeHookDataRec call_data;

	call_data.type = XtHremoveCallback;
	call_data.widget = widget;
	call_data.event_data = (XtPointer) name;
	XtCallCallbackList(hookobj,
		((HookObject)hookobj)->hooks.changehook_callbacks,
		(XtPointer)&call_data);
    }
    UNLOCK_APP(app);
} /* XtRemoveCallback */
Esempio n. 2
0
void XtRemoveActionHook(
    XtActionHookId id)
{
    ActionHook *p, hook = (ActionHook)id;
    XtAppContext app = hook->app;
    LOCK_APP(app);
    for (p = &app->action_hook_list; p != NULL && *p != hook; p = &(*p)->next);
    if (p) {
	*p = hook->next;
	XtFree( (XtPointer)hook );
	if (app->action_hook_list == NULL)
	    _XtRemoveCallback(&app->destroy_callbacks, FreeActionHookList,
			      (XtPointer) &app->action_hook_list);
    }
#ifdef DEBUG
    else {
	XtAppWarningMsg(app, "badId", "xtRemoveActionHook", XtCXtToolkitError,
			"XtRemoveActionHook called with bad or old hook id",
			(String*)NULL, (Cardinal*)NULL);
    }
#endif /*DEBUG*/
    UNLOCK_APP(app);
}