In any interesting widget, the set_values() method will probably do something (but it doesn't in Trivial.c). The code below can be considered boilerplate; you should probably base a subclass's set_values() method on this code. Note especially the region reserved for setting class specific instance variables.
static Boolean set_values(Widget old, Widget request, Widget new, ArgList args, Cardinal *num_args) { Boolean refresh_needed = False; ! BB_InSetValues(new) = True;! /* do any class specific stuff HERE */ ! BB_InSetValues(new) = False;! ! if (refresh_needed && (XtClass(new) == xmTrivialWidgetClass)) { _XmBulletinBoardSizeUpdate(new); return False; }! return refresh_needed; }