For BulletinBoard, the query_geometry() method is probably the simplest - it does nothing on it's own behalf, but uses either the GeoMatrix (if a geo_matrix_create() method exists), or the generic method. This simplicity is deceiving; the complexity isn't visible in BulletinBoard - it's been shifted elsewhere.
_XmHandleQueryGeometry
static XtGeometryResult
query_geometry(Widget w, XtWidgetGeometry *proposed,
XtWidgetGeometry *answer)
{
XmBulletinBoardWidgetClass bbc = (XmBulletinBoardWidgetClass)XtClass(w);
XtGeometryResult res;
if (bbc->bulletin_board_class.geo_matrix_create) {
return _XmHandleQueryGeometry(w, proposed, answer,
BB_ResizePolicy(w),
bbc->bulletin_board_class.
geo_matrix_create);
}
res = _XmGMHandleQueryGeometry(w, proposed, answer,
BB_MarginWidth(w), BB_MarginHeight(w),
BB_ResizePolicy(w));
return res;
}