<<>> <> <> <> <> <> <> <> <<>> DIRECTORY ViewerClasses USING [NotifyProc, TIPTable, Viewer]; InputFocus: CEDAR DEFINITIONS = BEGIN Focus: TYPE = REF FocusRec; FocusRec: TYPE = RECORD [ owner: Viewer ¬ NIL, -- Viewer associated with this focus. info: REF ¬ NIL, -- focus data private to the owner. link: PRIVATE Focus ¬ NIL -- focus stack overhead. ]; NotifyProc: TYPE = ViewerClasses.NotifyProc; TIPTable: TYPE = ViewerClasses.TIPTable; Viewer: TYPE = ViewerClasses.Viewer; GetInputFocus: PROC RETURNS [Focus]; <> SetInputFocus: PROC [self: Viewer ¬ NIL, info: REF ¬ NIL]; <> PushInputFocus: PROC [self: Viewer ¬ NIL, info: REF ¬ NIL]; <> PopInputFocus: PROC; <> CaptureButtons: PROC [proc: NotifyProc, tip: TIPTable, viewer: Viewer ¬ NIL, captureKeyboard: BOOL ¬ FALSE]; <> ReleaseButtons: PROC = INLINE { CaptureButtons[NIL, NIL, NIL, TRUE] }; <> END.