summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorThomas E. Dickey <dickey@invisible-island.net>2019-07-14 15:23:19 -0400
committerThomas E. Dickey <dickey@invisible-island.net>2019-07-14 15:23:19 -0400
commit02b712159a2e7152669fd6d2a315e6f7690bb2d7 (patch)
tree19b90c6fde128d92e42ec5c859a28658e20ef12a /src
parent348a30bb5a850a626733a4d255d7ab633d22ebd4 (diff)
downloadxorg-lib-libXt-02b712159a2e7152669fd6d2a315e6f7690bb2d7.tar.gz
indent'd like "x-indent.sh", but with a more complete set of typedefs - see
https://github.com/ThomasDickey/cindent-snapshots/blob/master/scripts/xxx-profile Signed-off-by: Thomas E. Dickey <dickey@invisible-island.net>
Diffstat (limited to 'src')
-rw-r--r--src/SetValues.c557
1 files changed, 287 insertions, 270 deletions
diff --git a/src/SetValues.c b/src/SetValues.c
index cbfd680..87b33e5 100644
--- a/src/SetValues.c
+++ b/src/SetValues.c
@@ -74,45 +74,44 @@ in this Software without prior written authorization from The Open Group.
#include "IntrinsicI.h"
/*
- * XtSetValues(), XtSetSubvalues()
+ * XtSetValues(), XtSetSubvalues()
*/
-
-static void SetValues(
- char* base, /* Base address to write values to */
- XrmResourceList* res, /* The current resource values. */
- register Cardinal num_resources, /* number of items in resources */
- ArgList args, /* The resource values to set */
- Cardinal num_args) /* number of items in arg list */
+static void
+SetValues(char *base, /* Base address to write values to */
+ XrmResourceList * res, /* The current resource values. */
+ register Cardinal num_resources, /* number of items in resources */
+ ArgList args, /* The resource values to set */
+ Cardinal num_args) /* number of items in arg list */
{
- register ArgList arg;
- register Cardinal i;
- register XrmName argName;
- register XrmResourceList* xrmres;
+ register ArgList arg;
+ register Cardinal i;
+ register XrmName argName;
+ register XrmResourceList *xrmres;
/* Resource lists are assumed to be in compiled form already via the
initial XtGetResources, XtGetSubresources calls */
- for (arg = args ; num_args != 0; num_args--, arg++) {
- argName = StringToName(arg->name);
- for (xrmres = res, i = 0; i < num_resources; i++, xrmres++) {
- if (argName == (*xrmres)->xrm_name) {
- _XtCopyFromArg(arg->value,
- base - (*xrmres)->xrm_offset - 1,
- (*xrmres)->xrm_size);
- break;
- }
- }
+ for (arg = args; num_args != 0; num_args--, arg++) {
+ argName = StringToName(arg->name);
+ for (xrmres = res, i = 0; i < num_resources; i++, xrmres++) {
+ if (argName == (*xrmres)->xrm_name) {
+ _XtCopyFromArg(arg->value,
+ base - (*xrmres)->xrm_offset - 1,
+ (*xrmres)->xrm_size);
+ break;
+ }
+ }
}
-} /* SetValues */
-
-static Boolean CallSetValues (
- WidgetClass class,
- Widget current,
- Widget request,
- Widget new,
- ArgList args,
- Cardinal num_args)
+} /* SetValues */
+
+static Boolean
+CallSetValues(WidgetClass class,
+ Widget current,
+ Widget request,
+ Widget new,
+ ArgList args,
+ Cardinal num_args)
{
Boolean redisplay = FALSE;
WidgetClass superclass;
@@ -124,7 +123,7 @@ static Boolean CallSetValues (
UNLOCK_PROCESS;
if (superclass)
redisplay =
- CallSetValues(superclass, current, request, new, args, num_args);
+ CallSetValues(superclass, current, request, new, args, num_args);
LOCK_PROCESS;
set_values = class->core_class.set_values;
@@ -136,38 +135,39 @@ static Boolean CallSetValues (
set_values_hook = class->core_class.set_values_hook;
UNLOCK_PROCESS;
if (set_values_hook)
- redisplay |= (*set_values_hook) (new, args, &num_args);
+ redisplay |= (*set_values_hook) (new, args, &num_args);
return (redisplay);
}
static Boolean
-CallConstraintSetValues (
- ConstraintWidgetClass class,
- Widget current,
- Widget request,
- Widget new,
- ArgList args,
- Cardinal num_args)
+CallConstraintSetValues(ConstraintWidgetClass class,
+ Widget current,
+ Widget request,
+ Widget new,
+ ArgList args,
+ Cardinal num_args)
{
Boolean redisplay = FALSE;
XtSetValuesFunc set_values;
- if ((WidgetClass)class != constraintWidgetClass) {
- ConstraintWidgetClass superclass;
-
- if (class == NULL) {
- XtAppErrorMsg(XtWidgetToApplicationContext(current),
- "invalidClass","constraintSetValue",XtCXtToolkitError,
- "Subclass of Constraint required in CallConstraintSetValues",
- NULL, NULL);
- } else {
- LOCK_PROCESS;
- superclass = (ConstraintWidgetClass) class->core_class.superclass;
- UNLOCK_PROCESS;
- redisplay =
- CallConstraintSetValues(superclass,
- current, request, new, args, num_args);
- }
+ if ((WidgetClass) class != constraintWidgetClass) {
+ ConstraintWidgetClass superclass;
+
+ if (class == NULL) {
+ XtAppErrorMsg(XtWidgetToApplicationContext(current),
+ "invalidClass", "constraintSetValue",
+ XtCXtToolkitError,
+ "Subclass of Constraint required in CallConstraintSetValues",
+ NULL, NULL);
+ }
+ else {
+ LOCK_PROCESS;
+ superclass = (ConstraintWidgetClass) class->core_class.superclass;
+ UNLOCK_PROCESS;
+ redisplay =
+ CallConstraintSetValues(superclass,
+ current, request, new, args, num_args);
+ }
}
LOCK_PROCESS;
set_values = class ? class->constraint_class.set_values : NULL;
@@ -177,36 +177,35 @@ CallConstraintSetValues (
return (redisplay);
}
-void XtSetSubvalues(
- XtPointer base, /* Base address to write values to */
- register XtResourceList resources, /* The current resource values. */
- register Cardinal num_resources, /* number of items in resources */
- ArgList args, /* The resource values to set */
- Cardinal num_args) /* number of items in arg list */
+void
+XtSetSubvalues(XtPointer base, /* Base address to write values to */
+ register XtResourceList resources, /* The current resource values. */
+ register Cardinal num_resources, /* number of items in resources */
+ ArgList args, /* The resource values to set */
+ Cardinal num_args) /* number of items in arg list */
{
- register XrmResourceList* xrmres;
- xrmres = _XtCreateIndirectionTable (resources, num_resources);
- SetValues((char*)base,xrmres,num_resources, args, num_args);
- XtFree((char *)xrmres);
-}
+ register XrmResourceList *xrmres;
+ xrmres = _XtCreateIndirectionTable(resources, num_resources);
+ SetValues((char *) base, xrmres, num_resources, args, num_args);
+ XtFree((char *) xrmres);
+}
-void XtSetValues(
- register Widget w,
- ArgList args,
- Cardinal num_args)
+void
+XtSetValues(register Widget w, ArgList args, Cardinal num_args)
{
register Widget oldw, reqw;
+
/* need to use strictest alignment rules possible in next two decls. */
- double oldwCache[100], reqwCache[100];
- double oldcCache[20], reqcCache[20];
- Cardinal widgetSize, constraintSize;
- Boolean redisplay, cleared_rect_obj = False;
+ double oldwCache[100], reqwCache[100];
+ double oldcCache[20], reqcCache[20];
+ Cardinal widgetSize, constraintSize;
+ Boolean redisplay, cleared_rect_obj = False;
XtGeometryResult result;
XtWidgetGeometry geoReq, geoReply;
- WidgetClass wc;
+ WidgetClass wc;
ConstraintWidgetClass cwc = NULL;
- Boolean hasConstraints;
+ Boolean hasConstraints;
XtAppContext app = XtWidgetToApplicationContext(w);
Widget hookobj = XtHooksOfDisplay(XtDisplayOfObject(w));
@@ -214,9 +213,9 @@ void XtSetValues(
wc = XtClass(w);
if ((args == NULL) && (num_args != 0)) {
XtAppErrorMsg(app,
- "invalidArgCount","xtSetValues",XtCXtToolkitError,
- "Argument count > 0 on NULL argument list in XtSetValues",
- NULL, NULL);
+ "invalidArgCount", "xtSetValues", XtCXtToolkitError,
+ "Argument count > 0 on NULL argument list in XtSetValues",
+ NULL, NULL);
}
/* Allocate and copy current widget into old widget */
@@ -225,230 +224,248 @@ void XtSetValues(
widgetSize = wc->core_class.widget_size;
UNLOCK_PROCESS;
oldw = (Widget) XtStackAlloc(widgetSize, oldwCache);
- reqw = (Widget) XtStackAlloc (widgetSize, reqwCache);
+ reqw = (Widget) XtStackAlloc(widgetSize, reqwCache);
(void) memmove((char *) oldw, (char *) w, (size_t) widgetSize);
/* Set resource values */
LOCK_PROCESS;
- SetValues((char*)w, (XrmResourceList *) wc->core_class.resources,
- wc->core_class.num_resources, args, num_args);
+ SetValues((char *) w, (XrmResourceList *) wc->core_class.resources,
+ wc->core_class.num_resources, args, num_args);
UNLOCK_PROCESS;
- (void) memmove ((char *) reqw, (char *) w, (size_t) widgetSize);
+ (void) memmove((char *) reqw, (char *) w, (size_t) widgetSize);
- hasConstraints = (XtParent(w) != NULL && !XtIsShell(w) && XtIsConstraint(XtParent(w)));
+ hasConstraints = (XtParent(w) != NULL && !XtIsShell(w) &&
+ XtIsConstraint(XtParent(w)));
/* Some widget sets apparently do ugly things by freeing the
* constraints on some children, thus the extra test here */
if (hasConstraints) {
- cwc = (ConstraintWidgetClass) XtClass(w->core.parent);
- if (w->core.constraints) {
- LOCK_PROCESS;
- constraintSize = cwc->constraint_class.constraint_size;
- UNLOCK_PROCESS;
- } else constraintSize = 0;
- } else constraintSize = 0;
+ cwc = (ConstraintWidgetClass) XtClass(w->core.parent);
+ if (w->core.constraints) {
+ LOCK_PROCESS;
+ constraintSize = cwc->constraint_class.constraint_size;
+ UNLOCK_PROCESS;
+ }
+ else
+ constraintSize = 0;
+ }
+ else
+ constraintSize = 0;
if (constraintSize) {
- /* Allocate and copy current constraints into oldw */
- oldw->core.constraints = XtStackAlloc(constraintSize, oldcCache);
- reqw->core.constraints = XtStackAlloc(constraintSize, reqcCache);
- (void) memmove((char *) oldw->core.constraints,
- (char *) w->core.constraints, (size_t) constraintSize);
-
- /* Set constraint values */
- LOCK_PROCESS;
- SetValues((char*)w->core.constraints,
- (XrmResourceList *)(cwc->constraint_class.resources),
- cwc->constraint_class.num_resources, args, num_args);
- UNLOCK_PROCESS;
- (void) memmove((char *) reqw->core.constraints,
- (char *) w->core.constraints, (size_t) constraintSize);
+ /* Allocate and copy current constraints into oldw */
+ oldw->core.constraints = XtStackAlloc(constraintSize, oldcCache);
+ reqw->core.constraints = XtStackAlloc(constraintSize, reqcCache);
+ (void) memmove((char *) oldw->core.constraints,
+ (char *) w->core.constraints, (size_t) constraintSize);
+
+ /* Set constraint values */
+ LOCK_PROCESS;
+ SetValues((char *) w->core.constraints,
+ (XrmResourceList *) (cwc->constraint_class.resources),
+ cwc->constraint_class.num_resources, args, num_args);
+ UNLOCK_PROCESS;
+ (void) memmove((char *) reqw->core.constraints,
+ (char *) w->core.constraints, (size_t) constraintSize);
}
/* Inform widget of changes, then inform parent of changes */
- redisplay = CallSetValues (wc, oldw, reqw, w, args, num_args);
+ redisplay = CallSetValues(wc, oldw, reqw, w, args, num_args);
if (hasConstraints) {
- redisplay |= CallConstraintSetValues(cwc, oldw, reqw, w, args, num_args);
+ redisplay |=
+ CallConstraintSetValues(cwc, oldw, reqw, w, args, num_args);
}
if (XtHasCallbacks(hookobj, XtNchangeHook) == XtCallbackHasSome) {
- XtChangeHookDataRec call_data;
- XtChangeHookSetValuesDataRec set_val;
-
- set_val.old = oldw;
- set_val.req = reqw;
- set_val.args = args;
- set_val.num_args = num_args;
- call_data.type = XtHsetValues;
- call_data.widget = w;
- call_data.event_data = (XtPointer) &set_val;
- XtCallCallbackList(hookobj,
- ((HookObject)hookobj)->hooks.changehook_callbacks,
- (XtPointer)&call_data);
+ XtChangeHookDataRec call_data;
+ XtChangeHookSetValuesDataRec set_val;
+
+ set_val.old = oldw;
+ set_val.req = reqw;
+ set_val.args = args;
+ set_val.num_args = num_args;
+ call_data.type = XtHsetValues;
+ call_data.widget = w;
+ call_data.event_data = (XtPointer) & set_val;
+ XtCallCallbackList(hookobj,
+ ((HookObject) hookobj)->hooks.changehook_callbacks,
+ (XtPointer) & call_data);
}
if (XtIsRectObj(w)) {
- /* Now perform geometry request if needed */
- geoReq.request_mode = 0;
- if (oldw->core.x != w->core.x) {
- geoReq.x = w->core.x;
- w->core.x = oldw->core.x;
- geoReq.request_mode |= CWX;
- }
- if (oldw->core.y != w->core.y) {
- geoReq.y = w->core.y;
- w->core.y = oldw->core.y;
- geoReq.request_mode |= CWY;
- }
- if (oldw->core.width != w->core.width) {
- geoReq.width = w->core.width;
- w->core.width = oldw->core.width;
- geoReq.request_mode |= CWWidth;
- }
- if (oldw->core.height != w->core.height) {
- geoReq.height = w->core.height;
- w->core.height = oldw->core.height;
- geoReq.request_mode |= CWHeight;
- }
- if (oldw->core.border_width != w->core.border_width) {
- geoReq.border_width = w->core.border_width;
- w->core.border_width = oldw->core.border_width;
- geoReq.request_mode |= CWBorderWidth;
- }
-
- if (geoReq.request_mode != 0) {
- /* Pass on any requests for unchanged geometry values */
- if (geoReq.request_mode !=
- (CWX | CWY | CWWidth | CWHeight | CWBorderWidth)) {
- for ( ; num_args != 0; num_args--, args++) {
- if (! (geoReq.request_mode & CWX) &&
- strcmp(XtNx, args->name) == 0) {
- geoReq.x = w->core.x;
- geoReq.request_mode |= CWX;
- } else if (! (geoReq.request_mode & CWY) &&
- strcmp(XtNy, args->name) == 0) {
- geoReq.y = w->core.y;
- geoReq.request_mode |= CWY;
- } else if (! (geoReq.request_mode & CWWidth) &&
- strcmp(XtNwidth, args->name) == 0) {
- geoReq.width = w->core.width;
- geoReq.request_mode |= CWWidth;
- } else if (! (geoReq.request_mode & CWHeight) &&
- strcmp(XtNheight, args->name) == 0) {
- geoReq.height = w->core.height;
- geoReq.request_mode |= CWHeight;
- } else if (! (geoReq.request_mode & CWBorderWidth) &&
- strcmp(XtNborderWidth, args->name) == 0) {
- geoReq.border_width = w->core.border_width;
- geoReq.request_mode |= CWBorderWidth;
- }
- }
- }
- CALLGEOTAT(_XtGeoTrace(w,
- "\nXtSetValues sees some geometry changes for \"%s\".\n",
- XtName(w)));
- CALLGEOTAT(_XtGeoTab(1));
- do {
- XtGeometryHookDataRec call_data;
- XtAlmostProc set_values_almost;
-
- if (XtHasCallbacks(hookobj, XtNgeometryHook) == XtCallbackHasSome) {
- call_data.type = XtHpreGeometry;
- call_data.widget = w;
- call_data.request = &geoReq;
- XtCallCallbackList(hookobj,
- ((HookObject)hookobj)->hooks.geometryhook_callbacks,
- (XtPointer)&call_data);
- call_data.result = result =
- _XtMakeGeometryRequest(w, &geoReq, &geoReply,
- &cleared_rect_obj);
- call_data.type = XtHpostGeometry;
- call_data.reply = &geoReply;
- XtCallCallbackList(hookobj,
- ((HookObject)hookobj)->hooks.geometryhook_callbacks,
- (XtPointer)&call_data);
- } else {
- result = _XtMakeGeometryRequest(w, &geoReq, &geoReply,
- &cleared_rect_obj);
- }
- if (result == XtGeometryYes || result == XtGeometryDone)
- break;
-
- /* An Almost or No reply. Call widget and let it munge
- request, reply */
- LOCK_PROCESS;
- set_values_almost = wc->core_class.set_values_almost;
- UNLOCK_PROCESS;
- if (set_values_almost == NULL) {
- XtAppWarningMsg(app,
- "invalidProcedure","set_values_almost",
- XtCXtToolkitError,
- "set_values_almost procedure shouldn't be NULL",
- NULL, NULL);
- break;
- }
- if (result == XtGeometryNo) geoReply.request_mode = 0;
- CALLGEOTAT(_XtGeoTrace(w,"calling SetValuesAlmost.\n"));
- (*set_values_almost) (oldw, w, &geoReq, &geoReply);
- } while (geoReq.request_mode != 0);
- /* call resize proc if we changed size and parent
- * didn't already invoke resize */
- {
- XtWidgetProc resize;
- LOCK_PROCESS;
- resize = wc->core_class.resize;
- UNLOCK_PROCESS;
- if ((w->core.width != oldw->core.width ||
- w->core.height != oldw->core.height)
- && result != XtGeometryDone
- && resize != (XtWidgetProc) NULL) {
- CALLGEOTAT(_XtGeoTrace(w,
- "XtSetValues calls \"%s\"'s resize proc.\n",
- XtName(w)));
- (*resize)(w);
- }
- }
- CALLGEOTAT(_XtGeoTab(-1));
- }
- /* Redisplay if needed. No point in clearing if the window is
- * about to disappear, as the Expose event will just go straight
- * to the bit bucket. */
+ /* Now perform geometry request if needed */
+ geoReq.request_mode = 0;
+ if (oldw->core.x != w->core.x) {
+ geoReq.x = w->core.x;
+ w->core.x = oldw->core.x;
+ geoReq.request_mode |= CWX;
+ }
+ if (oldw->core.y != w->core.y) {
+ geoReq.y = w->core.y;
+ w->core.y = oldw->core.y;
+ geoReq.request_mode |= CWY;
+ }
+ if (oldw->core.width != w->core.width) {
+ geoReq.width = w->core.width;
+ w->core.width = oldw->core.width;
+ geoReq.request_mode |= CWWidth;
+ }
+ if (oldw->core.height != w->core.height) {
+ geoReq.height = w->core.height;
+ w->core.height = oldw->core.height;
+ geoReq.request_mode |= CWHeight;
+ }
+ if (oldw->core.border_width != w->core.border_width) {
+ geoReq.border_width = w->core.border_width;
+ w->core.border_width = oldw->core.border_width;
+ geoReq.request_mode |= CWBorderWidth;
+ }
+
+ if (geoReq.request_mode != 0) {
+ /* Pass on any requests for unchanged geometry values */
+ if (geoReq.request_mode !=
+ (CWX | CWY | CWWidth | CWHeight | CWBorderWidth)) {
+ for (; num_args != 0; num_args--, args++) {
+ if (!(geoReq.request_mode & CWX) &&
+ strcmp(XtNx, args->name) == 0) {
+ geoReq.x = w->core.x;
+ geoReq.request_mode |= CWX;
+ }
+ else if (!(geoReq.request_mode & CWY) &&
+ strcmp(XtNy, args->name) == 0) {
+ geoReq.y = w->core.y;
+ geoReq.request_mode |= CWY;
+ }
+ else if (!(geoReq.request_mode & CWWidth) &&
+ strcmp(XtNwidth, args->name) == 0) {
+ geoReq.width = w->core.width;
+ geoReq.request_mode |= CWWidth;
+ }
+ else if (!(geoReq.request_mode & CWHeight) &&
+ strcmp(XtNheight, args->name) == 0) {
+ geoReq.height = w->core.height;
+ geoReq.request_mode |= CWHeight;
+ }
+ else if (!(geoReq.request_mode & CWBorderWidth) &&
+ strcmp(XtNborderWidth, args->name) == 0) {
+ geoReq.border_width = w->core.border_width;
+ geoReq.request_mode |= CWBorderWidth;
+ }
+ }
+ }
+ CALLGEOTAT(_XtGeoTrace(w,
+ "\nXtSetValues sees some geometry changes for \"%s\".\n",
+ XtName(w)));
+ CALLGEOTAT(_XtGeoTab(1));
+ do {
+ XtGeometryHookDataRec call_data;
+ XtAlmostProc set_values_almost;
+
+ if (XtHasCallbacks(hookobj, XtNgeometryHook) ==
+ XtCallbackHasSome) {
+ call_data.type = XtHpreGeometry;
+ call_data.widget = w;
+ call_data.request = &geoReq;
+ XtCallCallbackList(hookobj,
+ ((HookObject) hookobj)->hooks.
+ geometryhook_callbacks,
+ (XtPointer) & call_data);
+ call_data.result = result =
+ _XtMakeGeometryRequest(w, &geoReq, &geoReply,
+ &cleared_rect_obj);
+ call_data.type = XtHpostGeometry;
+ call_data.reply = &geoReply;
+ XtCallCallbackList(hookobj,
+ ((HookObject) hookobj)->hooks.
+ geometryhook_callbacks,
+ (XtPointer) & call_data);
+ }
+ else {
+ result = _XtMakeGeometryRequest(w, &geoReq, &geoReply,
+ &cleared_rect_obj);
+ }
+ if (result == XtGeometryYes || result == XtGeometryDone)
+ break;
+
+ /* An Almost or No reply. Call widget and let it munge
+ request, reply */
+ LOCK_PROCESS;
+ set_values_almost = wc->core_class.set_values_almost;
+ UNLOCK_PROCESS;
+ if (set_values_almost == NULL) {
+ XtAppWarningMsg(app,
+ "invalidProcedure", "set_values_almost",
+ XtCXtToolkitError,
+ "set_values_almost procedure shouldn't be NULL",
+ NULL, NULL);
+ break;
+ }
+ if (result == XtGeometryNo)
+ geoReply.request_mode = 0;
+ CALLGEOTAT(_XtGeoTrace(w, "calling SetValuesAlmost.\n"));
+ (*set_values_almost) (oldw, w, &geoReq, &geoReply);
+ } while (geoReq.request_mode != 0);
+ /* call resize proc if we changed size and parent
+ * didn't already invoke resize */
+ {
+ XtWidgetProc resize;
+
+ LOCK_PROCESS;
+ resize = wc->core_class.resize;
+ UNLOCK_PROCESS;
+ if ((w->core.width != oldw->core.width ||
+ w->core.height != oldw->core.height)
+ && result != XtGeometryDone
+ && resize != (XtWidgetProc) NULL) {
+ CALLGEOTAT(_XtGeoTrace(w,
+ "XtSetValues calls \"%s\"'s resize proc.\n",
+ XtName(w)));
+ (*resize) (w);
+ }
+ }
+ CALLGEOTAT(_XtGeoTab(-1));
+ }
+ /* Redisplay if needed. No point in clearing if the window is
+ * about to disappear, as the Expose event will just go straight
+ * to the bit bucket. */
if (XtIsWidget(w)) {
/* widgets can distinguish between redisplay and resize, since
- the server will cause an expose on resize */
+ the server will cause an expose on resize */
if (redisplay && XtIsRealized(w) && !w->core.being_destroyed) {
CALLGEOTAT(_XtGeoTrace(w,
- "XtSetValues calls ClearArea on \"%s\".\n",
- XtName(w)));
- XClearArea (XtDisplay(w), XtWindow(w), 0, 0, 0, 0, TRUE);
- }
- } else { /*non-window object */
- if (redisplay && ! cleared_rect_obj ) {
- Widget pw = _XtWindowedAncestor(w);
- if (XtIsRealized(pw) && !pw->core.being_destroyed) {
- RectObj r = (RectObj)w;
- int bw2 = r->rectangle.border_width << 1;
- CALLGEOTAT(_XtGeoTrace(w,
- "XtSetValues calls ClearArea on \"%s\"'s parent \"%s\".\n",
- XtName(w),XtName(pw)));
- XClearArea (XtDisplay (pw), XtWindow (pw),
- r->rectangle.x, r->rectangle.y,
- (unsigned) (r->rectangle.width + bw2),
- (unsigned) (r->rectangle.height + bw2), TRUE);
- }
- }
+ "XtSetValues calls ClearArea on \"%s\".\n",
+ XtName(w)));
+ XClearArea(XtDisplay(w), XtWindow(w), 0, 0, 0, 0, TRUE);
+ }
+ }
+ else { /*non-window object */
+ if (redisplay && !cleared_rect_obj) {
+ Widget pw = _XtWindowedAncestor(w);
+
+ if (XtIsRealized(pw) && !pw->core.being_destroyed) {
+ RectObj r = (RectObj) w;
+ int bw2 = r->rectangle.border_width << 1;
+
+ CALLGEOTAT(_XtGeoTrace(w,
+ "XtSetValues calls ClearArea on \"%s\"'s parent \"%s\".\n",
+ XtName(w), XtName(pw)));
+ XClearArea(XtDisplay(pw), XtWindow(pw),
+ r->rectangle.x, r->rectangle.y,
+ (unsigned) (r->rectangle.width + bw2),
+ (unsigned) (r->rectangle.height + bw2), TRUE);
+ }
+ }
}
}
-
/* Free dynamic storage */
if (constraintSize) {
XtStackFree(oldw->core.constraints, oldcCache);
XtStackFree(reqw->core.constraints, reqcCache);
}
- XtStackFree((XtPointer)oldw, oldwCache);
- XtStackFree((XtPointer)reqw, reqwCache);
+ XtStackFree((XtPointer) oldw, oldwCache);
+ XtStackFree((XtPointer) reqw, reqwCache);
UNLOCK_APP(app);
-} /* XtSetValues */
+} /* XtSetValues */