/*----------------------------------------------------------------------*/ static XtGeometryResult QueryGeometry(Widget w,XtWidgetGeometry *req,XtWidgetGeometry *reply) { XfeBmCascadePart * bmc = _XfeBmCascadePart(w); XmLabelPart * lp = _XfeXmLabelPart(w); XtGeometryResult result; XmCascadeButtonWidgetClass cbc = (XmCascadeButtonWidgetClass) xmCascadeButtonWidgetClass; result = (*cbc->core_class.query_geometry)(w,req,reply); if (bmc->pixmap_width && bmc->pixmap_height) { Dimension offset; Dimension label_height; reply->width += (bmc->pixmap_width + XfeBmPixmapGetOffset()); offset = lp->margin_top + lp->margin_bottom + _XfePrimitiveOffset(w); label_height = reply->height - offset; reply->height = XfeMax(label_height,bmc->pixmap_height) + offset; } return result; }
/*----------------------------------------------------------------------*/ static void PreferredGeometry(Widget w,Dimension * width,Dimension * height) { XfeComboBoxPart * cp = _XfeComboBoxPart(w); *height = CB_OFFSET_TOP(w,cp) + CB_OFFSET_BOTTOM(w,cp) + XfeMax(_XfeHeight(cp->title),_XfeHeight(cp->arrow)) + 2 * cp->title_shadow_thickness; *width = CB_OFFSET_LEFT(w,cp) + CB_OFFSET_RIGHT(w,cp) + _XfeWidth(cp->title) + cp->spacing + _XfeWidth(cp->arrow) + 2 * cp->title_shadow_thickness; }