Boolean XmWidgetGetBaselines( Widget wid, Dimension **baselines, int *line_count) { _XmWidgetToAppContext(wid); _XmAppLock(app); if (XmIsPrimitive(wid)) { XmPrimitiveClassExt *wcePtr; WidgetClass wc = XtClass(wid); wcePtr = _XmGetPrimitiveClassExtPtr(wc, NULLQUARK); if (*wcePtr && (*wcePtr)->widget_baseline) { _XmAppUnlock(app); return( (*((*wcePtr)->widget_baseline)) (wid, baselines, line_count)) ; } } else if (XmIsGadget(wid)) { XmGadgetClassExt *wcePtr; WidgetClass wc = XtClass(wid); wcePtr = _XmGetGadgetClassExtPtr(wc, NULLQUARK); if (*wcePtr && (*wcePtr)->widget_baseline) { _XmAppUnlock(app); return( (*((*wcePtr)->widget_baseline)) (wid, baselines, line_count)) ; } } _XmAppUnlock(app); return (False); }
Boolean XmWidgetGetDisplayRect( Widget wid, XRectangle *displayrect) { _XmWidgetToAppContext(wid); _XmAppLock(app); if (XmIsPrimitive(wid)) { XmPrimitiveClassExt *wcePtr; WidgetClass wc = XtClass(wid); wcePtr = _XmGetPrimitiveClassExtPtr(wc, NULLQUARK); if (*wcePtr && (*wcePtr)->widget_display_rect) (*((*wcePtr)->widget_display_rect)) (wid, displayrect); _XmAppUnlock(app); return (True); } else if (XmIsGadget(wid)) { XmGadgetClassExt *wcePtr; WidgetClass wc = XtClass(wid); wcePtr = _XmGetGadgetClassExtPtr(wc, NULLQUARK); if (*wcePtr && (*wcePtr)->widget_display_rect) (*((*wcePtr)->widget_display_rect)) (wid, displayrect); _XmAppUnlock(app); return (True); } else { _XmAppUnlock(app); return (False); } }
static void class_part_initialize(WidgetClass widget_class) { XmGadgetClass gc, sc; DEBUGOUT(_LtDebug(__FILE__, NULL, "XmGadget class_part_initialize\n")); gc = (XmGadgetClass)widget_class; sc = (XmGadgetClass)((XmGadgetClass)widget_class)->rect_class.superclass; if (gc->gadget_class.border_highlight == XmInheritBorderHighlight) { gc->gadget_class.border_highlight = sc->gadget_class.border_highlight; } if (gc->gadget_class.border_unhighlight == XmInheritBorderUnhighlight) { gc->gadget_class.border_unhighlight = sc->gadget_class.border_unhighlight; } if (gc->gadget_class.visual_change == XmInheritVisualChange) { gc->gadget_class.visual_change = sc->gadget_class.visual_change; } if (gc->gadget_class.input_dispatch == XmInheritInputDispatch) { gc->gadget_class.input_dispatch = sc->gadget_class.input_dispatch; } if (gc->gadget_class.arm_and_activate == XmInheritArmAndActivate) { gc->gadget_class.arm_and_activate = sc->gadget_class.arm_and_activate; } if (widget_class != xmGadgetClass) { XmGadgetClassExt *gce = NULL, *sce = NULL; gce = _XmGetGadgetClassExtPtr(gc, NULLQUARK); sce = _XmGetGadgetClassExtPtr(sc, NULLQUARK); if (gce && sce && *gce && *sce) { if ((*gce)->widget_baseline == XmInheritBaselineProc) { (*gce)->widget_baseline = (*sce)->widget_baseline; } if ((*gce)->widget_display_rect == XmInheritDisplayRectProc) { (*gce)->widget_display_rect = (*sce)->widget_display_rect; } } } _XmBaseClassPartInitialize(widget_class); _XmFastSubclassInit(widget_class, XmGADGET_BIT); /* compile the resources */ if (widget_class == xmGadgetClass) { _XmSortResourceList((XrmResource **)gc->rect_class.resources, gc->rect_class.num_resources); } _XmBuildGadgetResources(widget_class); }
/************************************************************************ * * ClassPartInit * Used by subclasses of gadget to inherit class record procedures. * ************************************************************************/ static void ClassPartInit( WidgetClass g ) { static Boolean first_time = TRUE; XmGadgetClass wc = (XmGadgetClass) g; XmGadgetClass super = (XmGadgetClass) wc->rect_class.superclass; XmGadgetClassExt *wcePtr, *scePtr; wcePtr = _XmGetGadgetClassExtPtr(wc, NULLQUARK); if (((WidgetClass)wc != xmGadgetClass) && (*wcePtr)) { scePtr = _XmGetGadgetClassExtPtr(super, NULLQUARK); if ((*wcePtr)->widget_baseline == XmInheritBaselineProc) (*wcePtr)->widget_baseline = (*scePtr)->widget_baseline; if ((*wcePtr)->widget_display_rect == XmInheritDisplayRectProc) (*wcePtr)->widget_display_rect = (*scePtr)->widget_display_rect; if ((*wcePtr)->widget_margins == XmInheritMarginsProc) (*wcePtr)->widget_margins = (*scePtr)->widget_margins; } if (wc->gadget_class.border_highlight == XmInheritWidgetProc) wc->gadget_class.border_highlight = super->gadget_class.border_highlight; if (wc->gadget_class.border_unhighlight == XmInheritWidgetProc) wc->gadget_class.border_unhighlight = super->gadget_class.border_unhighlight; if (wc->gadget_class.arm_and_activate == XmInheritArmAndActivate) wc->gadget_class.arm_and_activate = super->gadget_class.arm_and_activate; if (wc->gadget_class.input_dispatch == XmInheritInputDispatch) wc->gadget_class.input_dispatch = super->gadget_class.input_dispatch; if (wc->gadget_class.visual_change == XmInheritVisualChange) wc->gadget_class.visual_change = super->gadget_class.visual_change; _XmFastSubclassInit (g, XmGADGET_BIT); if (first_time) { _XmReOrderResourceList(xmGadgetClass, XmNunitType, NULL); first_time = FALSE; } _XmBuildGadgetResources((WidgetClass) wc); /* Install the direction trait for all subclasses as well. */ XmeTraitSet((XtPointer)wc, XmQTspecifyLayoutDirection, (XtPointer)&gadLDT); /* Install the accessColors trait for all subclasses as well. */ XmeTraitSet((XtPointer)wc, XmQTaccessColors, (XtPointer)&gadACT); /* Install the unit type trait for all subclasses as well. */ XmeTraitSet((XtPointer)wc, XmQTspecifyUnitType, (XtPointer)&gadUTT); }