75046.606@CompuServe.COM (Larry W. Virden) (09/15/89)
Could someone give me a good set of definitions concerning the difference between 'intrinsics' and widgets? I am talking about a layman's description, assuming that the layman has a computer background. Is it typical that a company which is doing development in X might need to create new intrinsics?
swick@ATHENA.MIT.EDU (Ralph R. Swick) (09/18/89)
> Could someone give me a good set of definitions concerning the difference > between 'intrinsics' and widgets? Fundamentally, widgets are those things which draw on a screen and accept user input; that is, they have a look and feel, and intrinsics are those things behind the scenes which bind widgets together and provide common mechanisms for them to interact with each other and with applications; that is, they have no direct look and feel. Formally, "the Intrinsics", or "the Xt Intrinsics" are an X Consortium specification for a library of low-level programming interfaces and conventions for building user-interface primitives (i.e. widgets) and also for writing applications which combine and connect to those primitives in a uniform manner. It is usually convenient to talk in terms of layering; at the lowest layer is the X Protocol, specifying inter-connectibility between X servers and X applications of arbitrary ancestry. Above the Protocol is Xlib, specifying a portable programming base to the Protocol for libraries and applications written in C and other languages. At the highest level (for the present discussion) are widget sets, specifying portability of users across applications; i.e. a common appearance and behaviour across the user interfaces of multiple applications. In between Xlib and the widget sets is Xt. Xt is trying to be large enough to accomodate the greatest variety of widget set policies and conventions and yet small enough to minimize the effort required to convert an application to a different widget set that the one with which it was originally built. Like all X Consortium specifications, the intent of the Xt specification is to describe the programming interfaces in sufficient detail that compatible implementations can be constructed without reference to common code. There is certainly no requirement that anyone building a widget library on top of the Xt interfaces use the Xt implementation provided by MIT. In all honesty, though, the specification and sample implementation have pretty much grown up together and though things are improving, there likely exists some unspecified behaviour upon which widgets and/or applications are relying, conciously or otherwise.