DIRECTORY ViewerOps USING [CreateViewer], ViewerClasses USING [Viewer, ViewerRec]; Containers: CEDAR DEFINITIONS IMPORTS ViewerOps = BEGIN OPEN ViewerClasses; Container: TYPE = Viewer; Create: PROC [info: ViewerRec _ [], paint: BOOL _ TRUE] RETURNS [container: Container] = INLINE {RETURN[ViewerOps.CreateViewer[$Container, info, paint]]}; ChildYBound: PROC [container: Container, child: Viewer] = INLINE {container.class.set[self: container, data: child, op: $YBound]} ; ChildXBound: PROC [container: Container, child: Viewer] = INLINE {container.class.set[self: container, data: child, op: $XBound]} ; ScrollOffset: PROC [container: Container] RETURNS [offTop: INTEGER] ; END. >Containers.mesa; Written by S. McGregor Edited by McGregor on July 21, 1983 10:58 am Last Edited by: Maxwell, December 17, 1982 10:07 am Containers are just viewers that are convenient to hold other viewers. Creates a new, empty container. You probably want to pass a name in the info record. Constrain (child.wy + child.wh = container.wh) after next time container is painted. Constrain (child.wx + child.ww = container.ww) after next time container is painted. Returns the amount of the container scrolled off the top. A fast child move proc will go here someday. ΚA– "cedar" style˜JšΟc'™'Jš,™,Jšœ3™3J™šΟk ˜ Jšœ žœ˜Jšœžœ˜(J˜—Jš œ žœžœ žœžœ˜KJ˜Jšœ žœ ˜J˜JšF™FJ˜š Οnœžœžœžœžœ˜XJšžœžœ3˜AJšU™UJ˜—šŸ œžœ)ž˜@J˜BJšT™TJ˜—šŸ œžœ)ž˜@J˜BJšT™TJ˜—šŸ œžœžœ žœ˜EJš9™9J˜J˜—Jš,™,J˜J˜Jšžœ˜J˜J˜—…—Ά5