This function determines if two widget geometries are identical.
Boolean _XmGeometryEqual(Widget wid, XtWidgetGeometry *geoA, XtWidgetGeometry *geoB);
The next function checks the desired geometry desired of the widget wid against the parent's proposal in response. It returns True only if the position (x, y), as well as the width and height, and finally the border width are equal in the desired and proposed geometry. If any one of these five geometry characteristics is of no concern (the corresponding bit in response->request_mode is unset) then it will be ignored.
Boolean _XmGeoReplyYes(Widget wid, XtWidgetGeometry *desired, XtWidgetGeometry *response);
XtMakeGeometryRequest_XmMakeGeometryRequestThis function asks the parent of the widget w for a new desired geometry geom of w. If the parent answers XtGeometryAlmost then we ask him a second time with the proposed geometry, so he can accept and set the new geometry. If the parent refuses in any way then we'll inform the user of our parent's impudent habbits (because he doesn't conform to the geometry negotiation protocol, see O'Reilly, Vol. 5, pp. 264 for details about XtMakeGeometryRequest). This function is at least only a convenience function but according to informed sources, M*TIF never issues a bare XtMakeGeometryRequest but uses always _XmMakeGeometryRequest.
XtGeometryResult _XmMakeGeometryRequest(Widget w, XtWidgetGeometry *geom);
_XmGeoClearRectObjAreasThe next function erases the background at both the old and the new position of a rectangle object. Whereas the old position must be explicitely specified in old the new position is determined from w. Redrawing events will be triggered (and queued) for the affected areas.
void _XmGeoClearRectObjAreas(RectObj r, XWindowChanges *old);
_XmGMReplyToQueryGeometryXmeReplyToQueryGeometryThe next one reappears as XmeReplyToQueryGeometry in M*TIF 2.0. This function is a shortcut for simple query_geometry methods which are interested only in their width and height but neither their position nor border width. To use it, first compute your desired width and height in your widget's query_geometry method and then return the result from the call to _XmGMReplyToQueryGeometry.
These next two functions are ``fixup'' functions. They are invoked by _XmGeoMatrixSet(), to override the generic geometry computation with specific behavior. _XmMenuBarFix() forces a menu bar to be the full width of its composite parent. _XmSeparatorFix() does the same for separators.
void _XmMenuBarFix(XmGeoMatrix geoSpec, int action, XmGeoMajorLayout layoutPtr, XmKidGeometry rowPtr); void _XmSeparatorFix(XmGeoMatrix geoSpec, int action, XmGeoMajorLayout layoutPtr, XmKidGeometry rowPtr);