DIRECTORY ScreenCoordsTypes USING [TIPScreenCoords, TIPScreenCoordsRec], TIPTypes USING [TIPTable], Xl USING [EventProcType, TQ, Point], XTk USING [Widget], Rope USING [ROPE]; XTkTIP: CEDAR DEFINITIONS ~ BEGIN TIPTable: TYPE ~ TIPTypes.TIPTable; TIPScreenCoords: TYPE ~ ScreenCoordsTypes.TIPScreenCoords; TIPScreenCoordsRec: TYPE ~ ScreenCoordsTypes.TIPScreenCoordsRec; InstantiateNewTIPTable: PROC [file: Rope.ROPE] RETURNS [table: TIPTable]; InvalidTable: READONLY SIGNAL [errorMsg: Rope.ROPE]; TIPPredicate: TYPE ~ PROC RETURNS [BOOL]; RegisterTIPPredicate: PROC [key: ATOM, p: TIPPredicate]; Bind: PROC [widget: XTk.Widget, tipTable: TIPTable ¬ NIL, eventProc: Xl.EventProcType ¬ NIL, eventData: REF ¬ NIL, inputTQ: Xl.TQ ¬ NIL, tipTQ: Xl.TQ ¬ NIL, dispatch: BOOL ¬ FALSE, yup: BOOL ¬ FALSE, pseudoHeight: INT ¬ -1, scrollPos: Xl.Point ¬ [0, 0]]; AdditionalKeySource: PROC [widget: XTk.Widget, from: XTk.Widget]; ChangeTipTable: PROC [widget: XTk.Widget, tipTable: TIPTable]; ChangePseudoHeight: PROC [widget: XTk.Widget, pseudoHeight: INT ¬ -1]; ChangeScrollPos: PROC [widget: XTk.Widget, scrollPos: Xl.Point ¬ [0, 0]]; END.  XTkTIP.mesa Copyright Σ 1988, 1989, 1990, 1991, 1992 by Xerox Corporation. All rights reserved. Christian Jacobi, November 29, 1988 2:51:48 pm PST Christian Jacobi, February 24, 1992 12:27 pm PST Encapsulated tip stuff Encapsulation of portable tip table implementation so it can exports standard functionality hidden with a different name. This enables hiding the conflicting names in a private config... (necessary for DCedar development). TIP tables are user-editable and normally live in the FS file system. Clients may instantiate new tables with this routine. An error in reading in a new table can produce the continuable InvalidTable signal. A user-defined predicate may be included in the enables list of a TIPTable via this association mechanism. Binding TIP and X11 Setup widget to respond to tip table actions. Must not be called more then once per widget. inputTQ: ThreadQueue used for getting X server events; NIL means make a new thread. eventProc: proc to be called with tip events; none if NIL. eventData: data handed to eventProc. tipTQ: NIL means call eventProc on internal process; a ThreadQueue means enqueue eventProc. dispatch: tip events should be dispatched to all match'es of widget. (Otherwise eventProc is the only procedure called to report tip events). yup: Direction of y axis. There is somedispute whether this is an acronym or not. scrollPos: Poisition in window for origin of mouse positions. pseudoHeight: If the y coordinates grow upwards we need to know the height of the real thing instead of the widget height. Adds events handler onto from to make keyboard events appear on widget. This is specially useful because some window manager confuse input focus conventions and leaves the focus on the root. called anytime called anytime called anytime Κ–(cedarcode) style•NewlineDelimiter ™codešΟc ™ Kšœ ΟeœI™TK™2K™0—K˜šΟk ˜ KšœŸœ'˜>Kšœ Ÿœ ˜KšœŸœŸœ ˜$KšœŸœ ˜KšœŸœŸœ˜K˜—šΡblnœŸœŸ œŸ˜!K˜—K˜KšΠbl™K˜K™αK˜Kšœ Ÿœ˜#KšœŸœ%˜:KšœŸœ(˜@K˜šΟnœŸœ ŸœŸœ˜IKšŸœ3Ÿœ™™ΡK˜—Kš’ œŸœŸœ˜4K˜š œŸœŸœŸœŸœ˜)K˜—š’œŸœŸœ˜8K™jK˜—K˜Kš‘Ρbkl‘£™K™š’œŸœ+Ÿœ Ÿœ ŸœŸœŸœŸœ ŸœŸœ ŸœŸœŸœŸœŸœ%˜ώKš-™-Kš-™-K™TKš:™:Kšœ œ ™$Kšœ œ1 œ™\Kš=œQ™ŽK™QK™=Kšœ n™zK˜—š’œŸœ(˜AKšœI™IKšœ]™vK˜—š’œŸœ*˜>Kš™K™—š’œŸœ$Ÿœ˜FKš™K˜—š’œŸœ4˜IKš™K˜—KšŸœ˜—…—z