diff options
author | Thomas E. Dickey <dickey@invisible-island.net> | 2019-07-14 15:23:19 -0400 |
---|---|---|
committer | Thomas E. Dickey <dickey@invisible-island.net> | 2019-07-14 15:23:19 -0400 |
commit | 02b712159a2e7152669fd6d2a315e6f7690bb2d7 (patch) | |
tree | 19b90c6fde128d92e42ec5c859a28658e20ef12a | |
parent | 348a30bb5a850a626733a4d255d7ab633d22ebd4 (diff) |
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>
-rw-r--r-- | src/SetValues.c | 557 |
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 */ |