예제 #1
0
/*----------------------------------------------------------------------*/
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;
}
예제 #2
0
/*----------------------------------------------------------------------*/
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;
}