#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#undef index
#undef rindex
#include "../src/lisp.h"
#include <X11/Xatom.h>
#include <X11/IntrinsicP.h>
#include <X11/ObjectP.h>
#include "lwlib-utils.h"
#include "lwlib.h"
void
XtNoClearRefreshWidget (widget)
Widget widget;
{
XEvent event;
event.type = Expose;
event.xexpose.serial = 0;
event.xexpose.send_event = 0;
event.xexpose.display = XtDisplay (widget);
event.xexpose.window = XtWindow (widget);
event.xexpose.x = 0;
event.xexpose.y = 0;
event.xexpose.width = widget->core.width;
event.xexpose.height = widget->core.height;
event.xexpose.count = 0;
(*widget->core.widget_class->core_class.expose)
(widget, &event, (Region)NULL);
}
void
XtApplyToWidgets (w, proc, arg)
Widget w;
XtApplyToWidgetsProc proc;
XtPointer arg;
{
if (XtIsComposite (w))
{
CompositeWidget cw = (CompositeWidget) w;
int nkids = cw->composite.num_children;
Widget *kids = (Widget *) malloc (sizeof (Widget) * nkids);
int i;
lwlib_bcopy ((char *) cw->composite.children, (char *) kids,
sizeof (Widget) * nkids);
for (i = 0; i < nkids; i++)
{
XtApplyToWidgets (kids [i], proc, arg);
proc (kids [i], arg);
}
free (kids);
}
}
void *
XtApplyUntilToWidgets (w, proc, arg)
Widget w;
XtApplyUntilToWidgetsProc proc;
XtPointer arg;
{
void* result;
if (XtIsComposite (w))
{
CompositeWidget cw = (CompositeWidget)w;
int i;
for (i = 0; i < cw->composite.num_children; i++)
if (XtIsWidget (cw->composite.children [i])){
result = proc (cw->composite.children [i], arg);
if (result)
return result;
result = XtApplyUntilToWidgets (cw->composite.children [i], proc,
arg);
if (result)
return result;
}
}
return NULL;
}
Widget *
XtCompositeChildren (widget, number)
Widget widget;
unsigned int* number;
{
CompositeWidget cw = (CompositeWidget)widget;
Widget* result;
int n;
int i;
if (!XtIsComposite (widget))
{
*number = 0;
return NULL;
}
n = cw->composite.num_children;
result = (Widget*)XtMalloc (n * sizeof (Widget));
*number = n;
for (i = 0; i < n; i++)
result [i] = cw->composite.children [i];
return result;
}
Boolean
XtWidgetBeingDestroyedP (widget)
Widget widget;
{
return widget->core.being_destroyed;
}
void
XtSafelyDestroyWidget (widget)
Widget widget;
{
#if 0
XtAppContext app = XtWidgetToApplicationContext(widget);
if (app->dispatch_level == 0)
{
app->dispatch_level = 1;
XtDestroyWidget (widget);
XChangeProperty (XtDisplay (widget), XtWindow (widget),
XA_STRING, XA_STRING, 32, PropModeAppend, NULL, 0);
app->dispatch_level = 0;
}
else
XtDestroyWidget (widget);
#else
abort ();
#endif
}