$ od -c -N 50000 [eris]<LispManual>WPwindows.im!14
0000000 \r { B e g i n S u b S e c W
0000020 i n d o w s } \r { T i t l e W
0000040 i n d o w s } \r { T e x t \r \r \r
0000060 { n o t e d o w i n d o w s
0000100 h a v e p e r - w i n d o w
0000120 d r i b b l e f i l e s ,
0000140 t e r m t a b l e s , c a r
0000160 e t s ? ( n o t y e t !
0000200 - - B V M ) } \r \r W i n d o w
0000220 s p r o v i d e a m e a n
0000240 s b y w h i c h d i f f e
0000260 r e n t p r o g r a m s c a
0000300 n s h a r e t h e d i s p
0000320 l a y h a r m o n i o u s l y
0000340 . I n t e r l i s p - D p
0000360 r o v i d e s b o t h i n t
0000400 e r a c t i v e a n d p r o
0000420 g r a m m a t i c c o n s t r
0000440 u c t s f o r c r e a t i n
0000460 g , m o v i n g , r e s h a
0000500 p i n g , o v e r l a p p i n
0000520 g , a n d d e s t r o y i n
0000540 g w i n d o w s i n s u c
0000560 h a w a y t h a t a p
0000600 r o g r a m c a n b e e m
0000620 b e d d e d i n a w i n d
0000640 o w i n a r e l a t i v e
0000660 l y t r a n s p a r e n t f
0000700 a s h i o n . T h i s i s
0000720 i m p l e m e n t e d b y
0000740 h a v i n g e a c h w i n d
0000760 o w s a v e t h e b i t s
0001000 t h a t i t o b s c u r e
0001020 s . T h i s a l l o w s
0001040 e x i s t i n g I n t e r l i
0001060 s p p r o g r a m s t o b
0001100 e u s e d w i t h o u t c
0001120 h a n g e , w h i l e p r o
0001140 v i d i n g a b a s e f o
0001160 r e x p e r i m e n t a t i o
0001200 n w i t h m o r e c o m p
0001220 l e x w i n d o w s e m a n
0001240 t i c s i n n e w a p p l
0001260 i c a t i o n s . \r \r B e c a u
0001300 s e t h e w i n d o w s y
0001320 s t e m a s s u m e s t h a
0001340 t a l l p r o g r a m s f
0001360 o l l o w c e r t a i n c o
0001400 n v e n t i o n s c o n c e r
0001420 n i n g c o n t r o l o f
0001440 t h e s c r e e n , o r d i
0001460 n a r y u s e r p r o g r a
0001500 m s s h o u l d n o t p e
0001520 r f o r m d i s p l a y o p
0001540 e r a t i o n s d i r e c t l
0001560 y o n t h e s c r e e n .
0001600 I n p a r t i c u l a r ,
0001620 f u n c t i o n s t h a t
0001640 c a n o p e r a t e d i r e
0001660 c t l y o n b i t m a p s
0001700 ( s u c h a s { f n B I T
0001720 B L T } o r { f n B I T M
0001740 A P B I T } ) s h o u l d n
0001760 o t b e g i v e n { l i s
0002000 p ( S C R E E N B I T M A P )
0002020 } { i n d e x S C R E E N B I
0002040 T M A P F N } a s t h e
0002060 d e s t i n a t i o n a r g u
0002100 m e n t . A l l i n t e r
0002120 a c t i o n s w i t h t h e
0002140 s c r e e n s h o u l d t
0002160 a k e p l a c e t h r o u g
0002200 h w i n d o w s . \r \r \r F o r
0002220 s p e c i a l i z e d a p p
0002240 l i c a t i o n s t h a t r
0002260 e q u i r e t a k i n g c o
0002300 m p l e t e c o n t r o l o
0002320 f t h e d i s p l a y , t
0002340 h e w i n d o w s y s t e m
0002360 c a n b e t u r n e d o
0002400 f f ( a n d b a c k o n
0002420 a g a i n ) w i t h t h e
0002440 f o l l o w i n g f u n c t i
0002460 o n : \r \r { F n D e f { N a m
0002500 e W I N D O W W O R L D } {
0002520 A r g s F L A G } { T y p e
0002540 n o s p r e a d } \r { T e x t
0002560 \r T h e w i n d o w w o r l
0002600 d i s t u r n e d o n i
0002620 f { a r g F L A G } i s
0002640 { l i s p T } a n d \r o f f
0002660 i f { a r g F L A G } i
0002700 s { l i s p N I L } . {
0002720 f n W I N D O W W O R L D }
0002740 r e t u r n s t h e \r p r e v
0002760 i o u s s t a t e o f t h
0003000 e w i n d o w w o r l d (
0003020 { l i s p T } o r { l i s
0003040 p N I L } ) . I f \r { f n
0003060 W I N D O W W O R L D } i s
0003100 g i v e n n o a r g u m e
0003120 n t s , i t s i m p l y r
0003140 e t u r n s t h e \r c u r r e
0003160 n t s t a t e w i t h o u t
0003200 a f f e c t i n g t h e w
0003220 i n d o w w o r l d . \r } } \r
0003240 \r \r { B e g i n S u b S e c
0003260 W h a t a r e W i n d o w s
0003300 ? } \r { T i t l e W h a t a
0003320 r e W i n d o w s ? } \r { T e
0003340 x t \r \r A w i n d o w s p e
0003360 c i f i e s a r e g i o n
0003400 o f t h e s c r e e n , a
0003420 d i s p l a y s t r e a m ,
0003440 a l o c a t i o n i n a
0003460 n o c c l u s i o n s t a c
0003500 k , f u n c t i o n s t h a
0003520 t g e t c a l l e d w h e
0003540 n t h e w i n d o w u n d
0003560 e r g o e s c e r t a i n a
0003600 c t i o n s , a n d v a r i
0003620 o u s o t h e r i t e m s
0003640 o f i n f o r m a t i o n .
0003660 T h e b a s i c m o d e l
0003700 i s t h a t a w i n d o
0003720 w i s a p a s s i v e c
0003740 o l l e c t i o n o f b i t
0003760 s ( o n t h e s c r e e n
0004000 ) . O n t o p o f t h
0004020 i s b a s i c l e v e l ,
0004040 t h e s y s t e m s u p p o
0004060 r t s m a n y d i f f e r e
0004100 n t t y p e s o f w i n d
0004120 o w s t h a t a r e l i n
0004140 k e d t o t h e d a t a
0004160 s t r u c t u r e s d i s p l
0004200 a y e d i n t h e m a n d
0004220 p r o v i d e s e l e c t i
0004240 o n a n d r e d i s p l a y
0004260 i n g r o u t i n e s . I
0004300 n a d d i t i o n , i t i
0004320 s p o s s i b l e f o r t
0004340 h e u s e r t o c r e a t
0004360 e n e w t y p e s o f w
0004400 i n d o w s b y p r o v i d
0004420 i n g s e l e c t i o n a n
0004440 d d i s p l a y i n g f u n
0004460 c t i o n s f o r t h e m .
0004500 \r \r W i n d o w s a r e o r
0004520 d e r e d i n d e p t h f
0004540 r o m u s e r t o b a c k
0004560 g r o u n d . W i n d o w s
0004600 i n f r o n t o f o t h
0004620 e r s o b s c u r e t h e
0004640 l a t t e r . O p e r a t i
0004660 n g o n a w i n d o w g
0004700 e n e r a l l y b r i n g s
0004720 i t t o t h e t o p . \r \r
0004740 W i n d o w s a r e l o c a
0004760 t e d a t a c e r t a i n
0005000 p o s i t i o n o n t h e
0005020 s c r e e n . E a c h w
0005040 i n d o w h a s a c l i p
0005060 p i n g r e g i o n t h a t
0005100 c o n f i n e s a l l b i
0005120 t s s p l a s h e d a t i
0005140 t t o a r e g i o n t h
0005160 a t a l l o w s a b o r d
0005200 e r a r o u n d t h e w i
0005220 n d o w , a n d a t i t l
0005240 e a b o v e i t . \r \r E a c
0005260 h w i n d o w h a s a d
0005300 i s p l a y s t r e a m a s
0005320 s o c i a t e d w i t h i t
0005340 , a n d e i t h e r a w
0005360 i n d o w o r i t s d i s
0005400 p l a y s t r e a m c a n
0005420 b e p a s s e d i n t e r c
0005440 h a n g e a b l y t o a l l
0005460 s y s t e m f u n c t i o n
0005500 s . T h e r e a r e d e
0005520 p e n d e n c i e s b e t w e
0005540 e n t h e w i n d o w a n
0005560 d i t s d i s p l a y s t
0005600 r e a m t h a t t h e u s
0005620 e r s h o u l d n o t d i
0005640 s t u r b . F o r i n s t
0005660 a n c e , t h e d e s t i n
0005700 a t i o n b i t m a p o f
0005720 t h e d i s p l a y s t r e
0005740 a m o f a w i n d o w m
0005760 u s t a l w a y s b e { l
0006000 i s p ( { f n S C R E E N B
0006020 I T M A P } ) } . { i n d e x
0006040 S C R E E N B I T M A P F N }
0006060 T h e X O f f s e t , Y
0006100 O f f s e t , a n d C l i p
0006120 p i n g R e g i o n a t t r i
0006140 b u t e s o f t h e d i s
0006160 p l a y s t r e a m s h o u
0006200 l d n o t b e c h a n g e
0006220 d . A t s o m e f u t u
0006240 r e d a t e , t h e n o t
0006260 i o n s o f w i n d o w a
0006300 n d d i s p l a y s t r e a
0006320 m w i l l b e m e r g e d
0006340 . \r \r W i n d o w s c a n b
0006360 e c r e a t e d b y t h e
0006400 u s e r i n t e r a c t i v
0006420 e l y , u n d e r p r o g r
0006440 a m c o n t r o l , o r m
0006460 a y b e c r e a t e d a u
0006500 t o m a t i c a l l y b y t
0006520 h e s y s t e m . \r \r W i n d
0006540 o w s a r e i n o n e o
0006560 f t w o s t a t e s : " o
0006600 p e n " o r " c l o s e d
0006620 " . I n a n " o p e n "
0006640 s t a t e , a w i n d o w
0006660 i s o n t h e o c c l u
0006700 s i o n s t a c k a n d t
0006720 h e r e f o r e v i s i b l e
0006740 o n t h e s c r e e n (
0006760 u n l e s s i t i s c o v
0007000 e r e d b y o t h e r o p
0007020 e n w i n d o w s ) a n d
0007040 a c c e s s i b l e t o m o
0007060 u s e o p e r a t i o n s .
0007100 I n a " c l o s e d " s
0007120 t a t e , a w i n d o w i
0007140 s n o t o n t h e o c c
0007160 l u s i o n s t a c k a n d
0007200 t h e r e f o r e n o t v
0007220 i s i b l e a n d n o t a
0007240 c c e s s i b l e t o m o u
0007260 s e o p e r a t i o n s .
0007300 A n y a t t e m p t t o p
0007320 r i n t o r d r a w o n
0007340 a c l o s e d w i n d o w
0007360 w i l l o p e n i t . \r
0007400 \r W h e n I n t e r l i s p -
0007420 D s t a r t s u p , t h e
0007440 r e a r e t h r e e w i n
0007460 d o w s o n t h e s c r e
0007500 e n : a t o p l e v e l
0007520 t y p e s c r i p t w i n d o
0007540 w , a w i n d o w c o n t
0007560 a i n i n g t h e I n t e r
0007600 l i s p - D l o g o , a n d
0007620 a p r o m p t w i n d o w
0007640 . T h e t o p l e v e l
0007660 t y p e s c r i p t w i n d
0007700 o w c o r r e s p o n d s t
0007720 o t h e f i l e { l i s p
0007740 T } i n t h e { l i s p
0007760 E X E C } p r o c e s s w
0010000 h e r e t h e r e a d - e v
0010020 a l - p r i n t l o o p i s
0010040 o p e r a t i n g . T h e
0010060 { t e r m l o g o w i n d
0010100 o w } i s b o u n d t o
0010120 t h e v a r i a b l e { v a
0010140 r L O G O W } { i n d e x L
0010160 O G O W V a r } u n t i l
0010200 i t i s c l o s e d . T
0010220 h e { t e r m p r o m p t
0010240 w i n d o w } i s u s e d
0010260 f o r t h e p r i n t i n g
0010300 o f h e l p o r p r o m
0010320 p t i n g m e s s a g e s .
0010340 I t i s a v a i l a b l e
0010360 t o u s e r p r o g r a m
0010400 s t h r o u g h t h e f o
0010420 l l o w i n g f u n c t i o n
0010440 s : \r \r { V a r D e f { N a
0010460 m e P R O M P T W I N D O W }
0010500 \r { T e x t \r G l o b a l v a
0010520 r i a b l e c o n t a i n i n
0010540 g t h e p r o m p t w i n
0010560 d o w . \r } } \r \r { F n D e f
0010600 { N a m e P R O M P T P R I N
0010620 T } { A r g s E X P } \r { T
0010640 y p e N O S P R E A D } \r { T
0010660 e x t \r P r i n t s { a r g
0010700 E X P } i n t h e p r o m
0010720 p t w i n d o w . \r } } \r \r {
0010740 F n D e f { N a m e C L R P
0010760 R O M P T } { A r g s } \r { T
0011000 e x t \r C l e a r s t h e p
0011020 r o m p t w i n d o w . \r } }
0011040 \r \r \r } { E n d S u b S e c
0011060 W h a t a r e W i n d o w s
0011100 ? } \r \r \r \r { B e g i n S u b
0011120 S e c I n t e r a c t i v e
0011140 W i n d o w O p e r a t i o n
0011160 s } \r { T i t l e I n t e r a
0011200 c t i v e W i n d o w O p e
0011220 r a t i o n s } \r { T e x t \r \r
0011240 \r { T a g I n t e r a c t i v
0011260 e W i n d o w O p s } \r \r \r { n
0011300 o t e t h e r e s h o u l d
0011320 b e a s i m p l e v e r
0011340 s i o n o f t h i s i n
0011360 t h e i n t r o d u c t i o n
0011400 c h a p t e r , w i t h p
0011420 o i n t e r s t o t h i s
0011440 f o r p e o p l e w h o w
0011460 a n t m o r e i n f o } \r \r
0011500 T h e I n t e r l i s p - D
0011520 w i n d o w s y s t e m a l
0011540 l o w s t h e u s e r t o
0011560 i n t e r a c t i v e l y m
0011600 a n i p u l a t e t h e w i
0011620 n d o w s o n t h e s c r
0011640 e e n , m o v i n g t h e m
0011660 a r o u n d , c h a n g i n
0011700 g t h e i r s h a p e , e
0011720 t c . b y s e l e c t i n g
0011740 v a r i o u s o p e r a t i
0011760 o n s f r o m a m e n u .
0012000 P r o g r a m m a t i c v
0012020 e r s i o n s o f t h e s e
0012040 o p e r a t i o n s a r e
0012060 d e s c r i b e d o n { P a
0012100 g e R e f T a g P r o g r a
0012120 m m a t i c W i n d o w O p s }
0012140 . \r \r F o r m o s t w i n
0012160 d o w s , d e p r e s s i n g
0012200 t h e { l i s p R I G H T
0012220 } m o u s e k e y w h e n
0012240 t h e c u r s o r i s i
0012260 n s i d e a w i n d o w d
0012300 u r i n g I / O w a i t w
0012320 i l l c a u s e t h e w i
0012340 n d o w t o c o m e t o
0012360 t h e t o p a n d a m e
0012400 n u o f w i n d o w o p e
0012420 r a t i o n s t o a p p e a
0012440 r . I f a c o m m a n d
0012460 i s s e l e c t e d f r o
0012500 m t h i s m e n u ( b y
0012520 r e l e a s i n g t h e r i
0012540 g h t m o u s e k e y w h
0012560 i l e t h e c u r s o r i
0012600 s o v e r a c o m m a n d
0012620 ) , t h e s e l e c t e d
0012640 o p e r a t i o n w i l l b
0012660 e a p p l i e d t o t h e
0012700 w i n d o w i n w h i c h
0012720 t h e m e n u w a s b r
0012740 o u g h t u p . ( I t i
0012760 s p o s s i b l e f o r a
0013000 n a p p l i c a t i o n s p
0013020 r o g r a m t o r e d e f i
0013040 n e t h e a c t i o n o f
0013060 t h e { l i s p R I G H T
0013100 } m o u s e k e y . I n
0013120 t h e s e c a s e s , t h
0013140 e r e i s a c o n v e n t
0013160 i o n t h a t t h e d e f
0013200 a u l t c o m m a n d m e n
0013220 u m a y b e b r o u g h t
0013240 u p b y d e p r e s s i n
0013260 g t h e { l i s p R I G H
0013300 T } k e y w h e n t h e
0013320 c u r s o r i s i n t h e
0013340 h e a d e r o r b o r d e
0013360 r o f a w i n d o w .
0013400 S e e { P a g e R e f ( W i
0013420 n d o w P r o p e r t y ) R
0013440 I G H T B U T T O N F N } )
0013460 T h e o p e r a t i o n s a
0013500 r e : \r \r \r { D e f { T y p e
0013520 ( W i n d o w M e n u C o
0013540 m m a n d ) } \r { N a m e C L
0013560 E A R } \r { T e x t \r C l e a r
0013600 s t h e w i n d o w a n d
0013620 r e p o s i t i o n s i t
0013640 t o t h e l e f t m a r g
0013660 i n o f t h e f i r s t
0013700 l i n e o f t e x t ( b e
0013720 l o w t h e u p p e r l e
0013740 f t c o r n e r o f t h e
0013760 w i n d o w b y t h e a
0014000 m o u n t o f t h e f o n
0014020 t a s c e n t ) . \r } } \r \r \r
0014040 \r { D e f { T y p e ( W i n
0014060 d o w M e n u C o m m a n d
0014100 ) } \r { N a m e C L O S E } \r
0014120 { T e x t \r C l o s e s t h e
0014140 w i n d o w , i . e , r e
0014160 m o v e s i t f r o m t h
0014200 e s c r e e n . ( S e e
0014220 { f n C L O S E W } , { P a
0014240 g e R e f F n C L O S E W }
0014260 . ) \r } } \r \r \r \r { D e f { T
0014300 y p e ( W i n d o w M e n u
0014320 C o m m a n d ) } \r { N a m e
0014340 B U R Y } \r { T e x t \r P u t
0014360 s t h e w i n d o w o n
0014400 t h e b o t t o m o f t h
0014420 e o c c l u s i o n s t a c
0014440 k , t h e r e b y e x p o s
0014460 i n g a n y w i n d o w s
0014500 t h a t i t w a s h i d i
0014520 n g . \r } } \r \r \r \r { D e f {
0014540 T y p e ( W i n d o w M e n
0014560 u C o m m a n d ) } \r { N a m
0014600 e M O V E } \r { T e x t \r M o
0014620 v e s t h e w i n d o w t
0014640 o a l o c a t i o n s p e
0014660 c i f i e d b y d e p r e s
0014700 s i n g a n d t h e n r e
0014720 l e a s i n g t h e { l i s
0014740 p L E F T } k e y . D u
0014760 r i n g t h i s t i m e a
0015000 g h o s t f r a m e w i l
0015020 l i n d i c a t e w h e r e
0015040 t h e w i n d o w w i l l
0015060 r e a p p e a r w h e n t
0015100 h e k e y i s r e l e a s
0015120 e d . ( S e e { f n G E
0015140 T B O X P O S I T I O N } , {
0015160 P a g e R e f F n G E T B O
0015200 X P O S I T I O N } . ) \r } } \r
0015220 \r \r \r { D e f { T y p e ( W
0015240 i n d o w M e n u C o m m a
0015260 n d ) } \r { N a m e S H A P E
0015300 } \r { T e x t \r A l l o w s t
0015320 h e u s e r t o s p e c i
0015340 f y a n e w r e g i o n
0015360 f o r t h e e x i s t i n g
0015400 w i n d o w c o n t e n t s
0015420 . I f t h e { l i s p
0015440 L E F T } k e y i s u s e
0015460 d t o s p e c i f y t h e
0015500 n e w r e g i o n , t h e
0015520 r e s h a p e d w i n d o w
0015540 c a n b e p l a c e d a
0015560 n y w h e r e . I f t h e
0015600 { l i s p M I D D L E } k
0015620 e y i s u s e d , t h e
0015640 c u r s o r w i l l s t a r
0015660 t o u t t u g g i n g a t
0015700 t h e n e a r e s t c o r
0015720 n e r o f t h e e x i s t
0015740 i n g w i n d o w , w h i c
0015760 h i s u s e f u l f o r
0016000 m a k i n g s m a l l a d j
0016020 u s t m e n t s i n a w i
0016040 n d o w t h a t i s a l r
0016060 e a d y p o s i t i o n e d
0016100 c o r r e c t l y . T h i s
0016120 i s d o n e b y c a l l i
0016140 n g t h e f u n c t i o n
0016160 { f n S H A P E W } . \r } } \r
0016200 \r \r \r { D e f { T y p e ( W
0016220 i n d o w M e n u C o m m a
0016240 n d ) } \r { N a m e R E D I S
0016260 P L A Y } \r { T e x t \r R e d i
0016300 s p l a y s t h e w i n d o
0016320 w . ( S e e { f n R E D
0016340 I S P L A Y W } , { P a g e R
0016360 e f F n R E D I S P L A Y W
0016400 } . ) \r } } \r \r \r \r { D e f {
0016420 T y p e ( W i n d o w M e n
0016440 u C o m m a n d ) } \r { N a m
0016460 e P A I N T } \r { T e x t \r S
0016500 w i t c h e s t o a m o d
0016520 e i n w h i c h t h e c
0016540 u r s o r c a n b e u s e
0016560 d l i k e a p a i n t b
0016600 r u s h t o d r a w i n
0016620 a w i n d o w . T h i s
0016640 i s u s e f u l f o r m a
0016660 k i n g n o t e s o n a
0016700 w i n d o w . W h i l e t
0016720 h e { l i s p L E F T } k
0016740 e y i s d o w n , b i t s
0016760 a r e a d d e d . W h i
0017000 l e t h e { l i s p M I D
0017020 D L E } k e y i s d o w n
0017040 , t h e y a r e e r a s e
0017060 d . T h e { l i s p R I
0017100 G H T } b u t t o n p o p s
0017120 u p a c o m m a n d m e
0017140 n u t h a t a l l o w s c
0017160 h a n g i n g o f t h e b
0017200 r u s h s h a p e , s i z e
0017220 a n d s h a d e , c h a n
0017240 g i n g t h e m o d e o f
0017260 c o m b i n i n g t h e b
0017300 r u s h w i t h t h e e x
0017320 i s t i n g b i t s , o r
0017340 s t o p p i n g p a i n t m
0017360 o d e . \r \r P a i n t m o d e
0017400 a l s o c o n t a i n s a
0017420 h a r d c o p y c o m m a n
0017440 d t h a t m a k e s a P
0017460 r e s s f i l e o f t h e
0017500 b i t s i n a w i n d o
0017520 w a n d s e n d s i t t
0017540 o t h e p r i n t e r .
0017560 T h e r e a r e l i m i t a
0017600 t i o n s o n t h e c o m
0017620 p l e x i t y a n d s i z e
0017640 o f t h e b i t m a p s
0017660 t h a t s o m e p r i n t e
0017700 r s w i l l p r i n t .
0017720 I f t h e p r i n t e r d
0017740 o e s n o t p r i n t t h
0017760 e e n t i r e w i n d o w
0020000 c o r r e c t l y , t r y a
0020020 s m a l l e r w i n d o w
0020040 o r o n e w i t h f e w e
0020060 r b l a c k b i t s i n
0020100 i t . T o g e t a h a
0020120 r d c o p y o f a n a r b
0020140 i t r a r y p a r t o f t
0020160 h e s c r e e n t h a t c
0020200 r o s s e s w i n d o w b o
0020220 u n d a r i e s , u s e t h
0020240 e { l i s p H A R D C O P Y
0020260 } c o m m a n d i n t h e
0020300 b a c k g r o u n d m e n u
0020320 ( b e l o w ) . \r } } \r \r \r \r
0020340 { i n d e x * P R I M A R Y *
0020360 S N A P ( W i n d o w M e
0020400 n u C o m m a n d ) } \r \r { D
0020420 e f { T y p e ( W i n d o w
0020440 M e n u C o m m a n d ) } \r
0020460 { N a m e S N A P } \r { T e x
0020500 t \r P r o m p t s f o r a
0020520 r e g i o n o n t h e s c
0020540 r e e n a n d m a k e s a
0020560 n e w w i n d o w w h o s
0020600 e b i t s a r e a s n a
0020620 p s h o t o f t h e b i t
0020640 s c u r r e n t l y i n t
0020660 h a t r e g i o n . U s e
0020700 f u l f o r s a v i n g s
0020720 o m e p a r t i c u l a r l y
0020740 c h o i c e i m a g e b e
0020760 f o r e t h e w i n d o w
0021000 i m a g e c h a n g e s . \r }
0021020 } \r \r \r O c c a s i o n a l l y
0021040 , a u s e r w i l l h a
0021060 v e a n u m b e r o f l
0021100 a r g e w i n d o w s o n
0021120 t h e s c r e e n , m a k i
0021140 n g i t d i f f i c u l t
0021160 t o a c c e s s t h o s e
0021200 w i n d o w s b e i n g u
0021220 s e d . T o h e l p w i
0021240 t h t h e p r o b l e m o
0021260 f s c r e e n s p a c e m
0021300 a n a g e m e n t , t h e I
0021320 n t e r l i s p - D w i n d o
0021340 w s y s t e m a l l o w s
0021360 t h e c r e a t i o n o f
0021400 { i t I c o n s } . A n
0021420 i c o n i s a s m a l l
0021440 r e c t a n g l e ( c o n t a
0021460 i n i n g t e x t o r a
0021500 b i t m a p ) w h i c h i s
0021520 a " s h r u n k e n - d o w
0021540 n " f o r m o f a p a r
0021560 t i c u l a r w i n d o w .
0021600 U s i n g t h e { l i s p
0021620 S H R I N K } a n d { l i
0021640 s p E X P A N D } c o m m a
0021660 n d s , t h e u s e r c a
0021700 n s h r i n k w i n d o w s
0021720 n o t c u r r e n t l y b
0021740 e i n g u s e d i n t o i
0021760 c o n s , a n d q u i c k l
0022000 y r e s t o r e t h e o r
0022020 i g i n a l w i n d o w s a
0022040 t a n y t i m e . \r \r \r \r {
0022060 D e f { T y p e ( W i n d o
0022100 w M e n u C o m m a n d ) }
0022120 \r { N a m e S H R I N K } \r {
0022140 T e x t \r R e m o v e s t h e
0022160 w i n d o w f r o m t h e
0022200 s c r e e n a n d b r i n
0022220 g s u p i t s { t e r m
0022240 i c o n } . ( S e e { f n
0022260 S H R I N K W } , { P a g e
0022300 R e f F n S H R I N K W } .
0022320 ) T h e w i n d o w c a
0022340 n b e r e s t o r e d b y
0022360 s e l e c t i n g { l i s p
0022400 E X P A N D } f r o m t h
0022420 e w i n d o w c o m m a n d
0022440 m e n u o f t h e i c o
0022460 n . \r } } \r \r \r I f t h e {
0022500 l i s p R I G H T } b u t t
0022520 o n i s p r e s s e d w h
0022540 i l e t h e c u r s o r i
0022560 s i n a n { t e r m i c
0022600 o n } , t h e w i n d o w
0022620 c o m m a n d m e n u w i l
0022640 l c o n t a i n a s l i g
0022660 h t l y d i f f e r e n t s
0022700 e t o f c o m m a n d s .
0022720 T h e { l i s p R E D I S
0022740 P L A Y } a n d { l i s p
0022760 C L E A R } c o m m a n d s
0023000 a r e r e m o v e d , a n d
0023020 t h e { l i s p S H R I N
0023040 K } c o m m a n d i s r e
0023060 p l a c e d w i t h t h e
0023100 { l i s p E X P A N D } c o
0023120 m m a n d : \r \r \r { D e f { T
0023140 y p e ( W i n d o w M e n u
0023160 C o m m a n d ) } \r { N a m e
0023200 E X P A N D } \r { T e x t \r R
0023220 e s t o r e s t h e w i n d
0023240 o w a s s o c i a t e d w i
0023260 t h t h i s i c o n a n d
0023300 r e m o v e s t h e i c o
0023320 n . ( S e e { f n E X P
0023340 A N D W } , { P a g e R e f
0023360 F n E X P A N D W } . ) \r } }
0023400 \r \r \r \r I f t h e { l i s p
0023420 R I G H T } b u t t o n i
0023440 s p r e s s e d w h i l e
0023460 t h e c u r s o r i s n o
0023500 t i n a n y w i n d o w ,
0023520 a " b a c k g r o u n d m
0023540 e n u " a p p e a r s w i t
0023560 h t h e f o l l o w i n g
0023600 o p e r a t i o n s : \r \r \r { D
0023620 e f { T y p e ( W i n d o w
0023640 M e n u C o m m a n d ) } \r
0023660 { N a m e S A V E V M } \r { T
0023700 e x t \r C a l l s t h e f u
0023720 n c t i o n { f n S A V E V
0023740 M } ( { P a g e R e f F n
0023760 S A V E V M } ) , w h i c h
0024000 w r i t e s o u t a l l o
0024020 f t h e d i r t y p a g e
0024040 s o f t h e v i r t u a l
0024060 m e m o r y . A f t e r
0024100 a { f n S A V E V M } , a
0024120 n d u n t i l t h e p a g
0024140 e f a u l t h a n d l e r i
0024160 s n e x t f o r c e d t o
0024200 w r i t e o u t a d i r
0024220 t y p a g e , y o u r v i
0024240 r t u a l m e m o r y i m a
0024260 g e w i l l b e c o n t i
0024300 n u a b l e ( a s o f t h
0024320 e { f n S A V E V M } ) s
0024340 h o u l d y o u e x p e r i
0024360 e n c e a s y s t e m c r
0024400 a s h o r o t h e r d i s
0024420 a s t e r . \r } } \r \r \r \r { D e
0024440 f { T y p e ( W i n d o w
0024460 M e n u C o m m a n d ) } \r {
0024500 N a m e S N A P } \r { T e x t
0024520 \r T h e s a m e a s t h e
0024540 { l i s p S N A P } c o m
0024560 m a n d d e s c r i b e d a
0024600 b o v e . \r } } \r \r \r \r { D e f
0024620 { T y p e ( W i n d o w M
0024640 e n u C o m m a n d ) } \r { N
0024660 a m e H A R D C O P Y } \r { T
0024700 e x t \r P r o m p t s f o r
0024720 a r e g i o n o n t h e
0024740 s c r e e n , m a k e s a
0024760 p r e s s f i l e a n d s
0025000 e n d s i t t o t h e p
0025020 r i n t e r . \r \r T h e p r i
0025040 n t i n g i s d o n e w i
0025060 t h { f n H A R D C O P Y W
0025100 } ( { P a g e R e f F n H
0025120 A R D C O P Y W } ) , s o i
0025140 f { v a r F U L L P R E S S
0025160 P R I N T E R } i s n o n -
0025200 { l i s p N I L } , t h e
0025220 i m a g e w i l l b e s e
0025240 n t t h e r e , r a t h e r
0025260 t h a n t o { l i s p (
0025300 P R I N T I N G H O S T ) } . \r
0025320 \r \r { B e g i n N o t e } \r t
0025340 h e f o l l o w i n g c o n
0025360 t r a d i c t s d o c f o r
0025400 H A R D C O P Y W . ? ? ?
0025420 \r \r I f t h e r e g i o n
0025440 i s b i g g e r t h a n w
0025460 h a t a D o v e r c a n
0025500 n o r m a l l y p r i n t ,
0025520 a n d F U L L P R E S S P R I
0025540 N T E R i s n o n - N I L ,
0025560 t h e s y s t e m w i l l
0025600 a t t e m p t t o s e n d
0025620 a r e d u c e d i m a g e
0025640 t o F U L L P R E S S P R I
0025660 N T E R . F U L L P R E S S P
0025700 R I N T E R i s i n i t i a
0025720 l l y N I L ; t h e s i t
0025740 e - d e p e n d e n t I N I T
0025760 f i l e s h o u l d s e t
0026000 i t a p p r o p r i a t e l
0026020 y i f y o u h a v e a
0026040 " f u l l - p r e s s " p r i
0026060 n t e r a v a i l a b l e (
0026100 r u n n i n g t h e " P r e
0026120 s s " s e r v e r r a t h e
0026140 r t h a n " S p r u c e "
0026160 s e r v e r . ) \r { E n d N o
0026200 t e } \r } } \r \r \r S o m e b u
0026220 i l t - i n f a c i l i t i e
0026240 s a n d L i s p u s e r s
0026260 p a c k a g e s a d d c o m
0026300 m a n d s t o t h e b a c
0026320 k g r o u n d m e n u , t o
0026340 p r o v i d e a n e a s y
0026360 w a y o f c a l l i n g
0026400 t h e d i f f e r e n t f a
0026420 c i l i t i e s . T h e u
0026440 s e r c a n d e t e r m i n
0026460 e w h a t t h e s e n e w
0026500 c o m m a n d s d o b y
0026520 h o l d i n g t h e { l i s
0026540 p R I G H T } b u t t o n
0026560 d o w n f o r a f e w s
0026600 e c o n d s o v e r t h e
0026620 i t e m i n q u e s t i o n
0026640 ; a n e x p l a n a t o r
0026660 y m e s s a g e w i l l b
0026700 e p r i n t e d i n t h e
0026720 p r o m p t w i n d o w . \r
0026740 \r \r \r T h e f o l l o w i n g
0026760 f u n c t i o n s p r o v i
0027000 d e a f u n c t i o n a l
0027020 i n t e r f a c e t o t h e
0027040 i n t e r a c t i v e w i n
0027060 d o w o p e r a t i o n s s
0027100 o t h a t u s e r p r o g
0027120 r a m s c a n c a l l t h
0027140 e m d i r e c t l y . \r \r \r {
0027160 F n D e f { N a m e D O W I
0027200 N D O W C O M } { A r g s W
0027220 I N D O W } \r { T e x t \r I f
0027240 { a r g W I N D O W } i s
0027260 { l i s p N I L } , i t c
0027300 a l l s { f n D O B A C K G
0027320 R O U N D C O M } . \r \r I f {
0027340 a r g W I N D O W } i s a
0027360 { l i s p W I N D O W } t
0027400 h a t d o e s n ' t h a v e
0027420 a { l i s p D O W I N D O
0027440 W C O M F N } { i n d e x D O
0027460 W I N D O W C O M F N ( W i n
0027500 d o w P r o p e r t y ) } w
0027520 i n d o w p r o p e r t y ,
0027540 i t b r i n g s u p t h e
0027560 w i n d o w c o m m a n d
0027600 m e n u . T h e i n i t i
0027620 a l i t e m s i n t h e s
0027640 e m e n u s a r e d e s c
0027660 r i b e d a b o v e . I f
0027700 t h e u s e r s e l e c t
0027720 s o n e o f t h e i t e
0027740 m s f r o m t h e p r o v
0027760 i d e d m e n u , t h a t
0030000 i t e m i s { l i s p A P
0030020 P L Y } e d t o { a r g W
0030040 I N D O W } . \r \r I f { a r g
0030060 W I N D O W } i s a { l
0030100 i s p W I N D O W } t h a t
0030120 h a s a { l i s p D O W
0030140 I N D O W C O M F N } w i n d
0030160 o w p r o p e r t y , i t
0030200 { l i s p A P P L Y } s t h
0030220 a t p r o p e r t y t o {
0030240 l i s p W I N D O W } . S
0030260 h r u n k e n w i n d o w s
0030300 h a v e a { l i s p D O W
0030320 I N D O W C O M F N } p r o p
0030340 e r t y t h a t p r e s e n
0030360 t s a w i n d o w c o m m
0030400 a n d m e n u t h a t c o
0030420 n t a i n s " e x p a n d "
0030440 i n s t e a d o f " s h r i
0030460 n k " . \r \r I f { a r g W I
0030500 N D O W } i s n o t a {
0030520 l i s p W I N D O W } o r
0030540 { l i s p N I L } , { f n
0030560 D O W I N D O W C O M } r e t
0030600 u r n s . \r } } \r \r \r { F n D e
0030620 f { N a m e D O B A C K G R
0030640 O U N D C O M } \r { T e x t \r B
0030660 r i n g s u p t h e b a c
0030700 k g r o u n d m e n u . T
0030720 h e i n i t i a l i t e m s
0030740 i n t h i s m e n u a r
0030760 e d e s c r i b e d a b o v
0031000 e . I f t h e u s e r
0031020 s e l e c t s o n e o f t
0031040 h e i t e m s f r o m t h
0031060 e m e n u , t h a t i t e
0031100 m i s { l i s p E V A L }
0031120 e d . \r } } \r \r { T e x t T h
0031140 e v a r i a b l e s { v a r
0031160 B A C K G R O U N D B U T T O
0031200 N E V E N T F N } , { V A R
0031220 B A C K G R O U N D C U R S O R
0031240 I N F N } , { V A R B A C K
0031260 G R O U N D C U R S O R O U T F
0031300 N } a n d { v a r B A C K
0031320 G R O U N D C U R S O R M O V E
0031340 D F N } p r o v i d e a w
0031360 a y o f t a k i n g a c t
0031400 i o n w h e n t h e r e i
0031420 s c u r s o r a c t i o n
0031440 a n d t h e c u r s o r i
0031460 n i n t h e b a c k g r o
0031500 u n d . I f s e t t o
0031520 t h e n a m e o f a f u
0031540 n c t i o n , t h a t f u n
0031560 c t i o n w i l l b e c a
0031600 l l e d , r e s p e c t i v e
0031620 l y , w h e n e v e r t h e
0031640 c u r s o r i s i n t h
0031660 e b a c k g r o u n d a n d
0031700 a b u t t o n c h a n g e
0031720 s , w h e n t h e c u r s
0031740 o r m o v e s i n t o t h
0031760 e b a c k g r o u n d f r o
0032000 m a w i n d o w , w h e n
0032020 t h e c u r s o r m o v e
0032040 d f r o m t h e b a c k g
0032060 r o u n d i n t o a w i n
0032100 d o w a n d w h e n t h e
0032120 c u r s o r m o v e s f r
0032140 o m o n e p l a c e i n
0032160 t h e b a c k g r o u n d t
0032200 o a n o t h e r . } \r \r \r \r \r
0032220 \r \r } { E n d S u b S e c I
0032240 n t e r a c t i v e W i n d o
0032260 w O p e r a t i o n s } \r \r \r
0032300 \r \r \r { B e g i n S u b S e c
0032320 C h a n g i n g E n t r i e
0032340 s o n t h e W i n d o w
0032360 C o m m a n d M e n u s } \r {
0032400 T i t l e C h a n g i n g E
0032420 n t r i e s o n t h e W i
0032440 n d o w C o m m a n d M e n
0032460 u s } \r { T e x t \r \r \r { n o t
0032500 e t h e f o r m a t o f
0032520 t h e s e c o m m a n d l i
0032540 s t s i s t o t a l l y i
0032560 n c o n s i s t a n t ! D o
0032600 e s D O W I N D O W C O M a
0032620 c t u a l l y r e d e f i n e
0032640 t h e W H E N S E L E C T E
0032660 D F N o f t h e m e n u ,
0032700 s o i t w i l l A P P L
0032720 Y C A D R o f t h e l i
0032740 s t r a t h e r t h a n E
0032760 V A L ? ? - - - m j s } \r \r
0033000 \r T h e w i n d o w c o m m
0033020 a n d m e n u s f o r u n
0033040 s h r u n k e n w i n d o w s
0033060 , s h r u n k e n w i n d o
0033100 w s , a n d t h e b a c k
0033120 g r o u n d a r e c a c h e
0033140 d i n t h e v a r i a b l
0033160 e s { v a r W i n d o w M e
0033200 n u } , { v a r I c o n W i
0033220 n d o w M e n u } , a n d {
0033240 v a r B a c k g r o u n d M e
0033260 n u } . T o c h a n g e
0033300 t h e e n t r i e s i n t
0033320 h e s e m e n u s , t h e
0033340 u s e r s h o u l d c h a n
0033360 g e t h e c h a n g e t h
0033400 e m e n u " c o m m a n d
0033420 l i s t s " i n t h e v a
0033440 r i a b l e s { v a r W i n
0033460 d o w M e n u C o m m a n d s }
0033500 , { v a r I c o n W i n d o
0033520 w M e n u C o m m a n d s } ,
0033540 a n d { v a r B a c k g r o
0033560 u n d M e n u C o m m a n d s }
0033600 , a n d s e t t h e a p
0033620 p r o p r i a t e m e n u v
0033640 a r i a b l e t o a n o n
0033660 - { l i s p M E N U } , s o
0033700 t h e m e n u w i l l b
0033720 e r e c r e a t e d . T h
0033740 i s p r o v i d e s a w a
0033760 y o f a d d i n g c o m m
0034000 a n d s t o t h e m e n u
0034020 , o f c h a n g i n g i t
0034040 s f o n t o r o f r e s
0034060 t o r i n g t h e m e n u
0034100 i f i t g e t s c l o b b
0034120 e r e d . T h e " c o m m
0034140 a n d l i s t s " a r e i
0034160 n t h e f o r m a t o f
0034200 t h e { l i s p I T E M S }
0034220 f i e l d o f a m e n u
0034240 ( s e e { P a g e R e f (
0034260 M e n u F i e l d ) I T E M
0034300 S } ) , e x c e p t a s s
0034320 p e c i f i e d b e l o w . \r
0034340 \r N o t e : c o m m a n d
0034360 m e n u s a r e r e c r e a
0034400 t e d u s i n g t h e c u
0034420 r r e n t v a l u e o f {
0034440 v a r M E N U F O N T } . { i
0034460 n d e x M E N U F O N T V a
0034500 r } \r \r \r { V a r D e f { N a
0034520 m e W i n d o w M e n u } }
0034540 \r { V a r D e f { N a m e W
0034560 i n d o w M e n u C o m m a n d
0034600 s } \r { T e x t \r T h e m e n
0034620 u t h a t i s b r o u g h
0034640 t u p i n r e s p o n s e
0034660 t o a r i g h t b u t t
0034700 o n i n a n u n s h r u n
0034720 k e n w i n d o w i s s t
0034740 o r e d o n t h e v a r i
0034760 a b l e { v a r W i n d o w
0035000 M e n u } . I f { v a r
0035020 W i n d o w M e n u } i s s
0035040 e t t o a n o n - { l i s
0035060 p M E N U } , t h e m e n
0035100 u w i l l b e r e c r e a
0035120 t e d f r o m t h e l i s
0035140 t o f c o m m a n d s { v
0035160 a r W i n d o w M e n u C o m
0035200 m a n d s } . T h e { f n
0035220 C A D R } o f e a c h c
0035240 o m m a n d a d d e d t o
0035260 { v a r W i n d o w M e n u C
0035300 o m m a n d s } s h o u l d
0035320 b e a f u n c t i o n n a
0035340 m e t h a t w i l l b e
0035360 { f n A P P L Y } e d t o
0035400 t h e w i n d o w . \r } } \r \r
0035420 \r \r { V a r D e f { N a m e
0035440 I c o n W i n d o w M e n u }
0035460 } \r { V a r D e f { N a m e
0035500 I c o n W i n d o w M e n u C o
0035520 m m a n d s } \r { T e x t \r T h
0035540 e m e n u t h a t i s b
0035560 r o u g h t u p i n r e s
0035600 p o n s e t o a r i g h t
0035620 b u t t o n i n a s h r
0035640 u n k e n w i n d o w i s
0035660 s t o r e d o n t h e v a
0035700 r i a b l e { v a r I c o n
0035720 W i n d o w M e n u } . I f
0035740 i t i s { l i s p N I L
0035760 } , i t i s r e c r e a t
0036000 e d f r o m t h e l i s t
0036020 o f c o m m a n d s { v a
0036040 r I c o n W i n d o w M e n u
0036060 C o m m a n d s } . T h e
0036100 { f n C A D R } o f e a c
0036120 h c o m m a n d a d d e d
0036140 a f u n c t i o n n a m e
0036160 t h a t w i l l b e { f n
0036200 A P P L Y } e d t o t h e
0036220 w i n d o w . \r } } \r \r \r \r {
0036240 V a r D e f { N a m e B a c
0036260 k g r o u n d M e n u } } \r {
0036300 V a r D e f { N a m e B a c
0036320 k g r o u n d M e n u C o m m a
0036340 n d s } \r { T e x t \r T h e m
0036360 e n u t h a t i s b r o u
0036400 g h t u p i n r e s p o n
0036420 s e t o a r i g h t b u
0036440 t t o n i n t h e b a c k
0036460 g r o u n d i s s t o r e d
0036500 o n t h e v a r i a b l e
0036520 { v a r B a c k g r o u n d
0036540 M e n u } . I f i t i s
0036560 { l i s p N I L } , i t
0036600 i s r e c r e a t e d f r o
0036620 m t h e l i s t o f c o
0036640 m m a n d s { v a r B a c k
0036660 g r o u n d M e n u C o m m a n
0036700 d s } . T h e { f n C A
0036720 D R } o f e a c h c o m m
0036740 a n d a d d e d t o { v a
0036760 r B a c k g r o u n d M e n u
0037000 C o m m a n d s } s h o u l d
0037020 b e a f o r m t h a t
0037040 w i l l b e { f n E V A L
0037060 } e d . \r } } \r \r } { E n d S
0037100 u b S e c C h a n g i n g E
0037120 n t r i e s o n t h e W i
0037140 n d o w C o m m a n d M e n
0037160 u s } \r \r \r \r \r \r { B e g i n
0037200 S u b S e c C o o r d i n a t
0037220 e S y s t e m s } \r { T i t l
0037240 e C o o r d i n a t e S y s
0037260 t e m s } \r { T e x t \r \r \r O n
0037300 e w a y o f t h i n k i n
0037320 g o f a w i n d o w i s
0037340 a s a " v i e w " o n t
0037360 o a n o b j e c t ( e . g
0037400 . a g r a p h , a f i l
0037420 e , a p i c t u r e , e t
0037440 c . ) T h e o b j e c t
0037460 h a s i t s o w n n a t u
0037500 r a l c o o r d i n a t e s
0037520 y s t e m i n t e r m s o
0037540 f w h i c h i t s s u b p
0037560 a r t s a r e l a i d o u
0037600 t . W h e n t h e w i n
0037620 d o w i s c r e a t e d ,
0037640 t h e X O f f s e t a n d
0037660 Y O f f s e t o f t h e w
0037700 i n d o w ' s d i s p l a y
0037720 s t r e a m a r e s e t t
0037740 o m a p t h e o r i g i n
0037760 o f t h e o b j e c t ' s
0040000 c o o r d i n a t e s y s t
0040020 e m i n t o t h e l o w e
0040040 r l e f t p o i n t o f
0040060 t h e w i n d o w ' s i n t
0040100 e r i o r r e g i o n . A
0040120 t t h e s a m e t i m e ,
0040140 t h e C l i p p i n g R e g
0040160 i o n o f t h e d i s p l
0040200 a y s t r e a m i s s e t
0040220 t o c o r r e s p o n d t
0040240 o t h e i n t e r i o r o
0040260 f t h e w i n d o w . F
0040300 r o m t h e n o n , t h e
0040320 d i s p l a y s t r e a m '
0040340 s c o o r d i n a t e s y s
0040360 t e m i s t r a n s l a t e
0040400 d a n d i t s c l i p p i
0040420 n g r e g i o n a d j u s t
0040440 e d w h e n e v e r t h e
0040460 w i n d o w i s m o v e d ,
0040500 s c r o l l e d o r r e s
0040520 h a p e d . \r \r T h e r e a r
0040540 e s e v e r a l d i s t i n
0040560 c t r e g i o n s a s s o c
0040600 i a t e d w i t h a w i n
0040620 d o w v i e w i n g a n o
0040640 b j e c t . F i r s t , t
0040660 h e r e i s a r e g i o n
0040700 i n t h e w i n d o w ' s
0040720 c o o r d i n a t e s y s t
0040740 e m t h a t c o n t a i n s
0040760 t h e c o m p l e t e i m
0041000 a g e o f t h e o b j e c
0041020 t . T h i s r e g i o n
0041040 ( w h i c h c a n o n l y
0041060 b e d e t e r m i n e d b y
0041100 a p p l i c a t i o n p r o
0041120 g r a m s w i t h k n o w l
0041140 e d g e o f t h e " s e m
0041160 a n t i c s " o f t h e o
0041200 b j e c t ) i s s t o r e d
0041220 a s t h e { l i s p E X
0041240 T E N T } { i n d e x E X T E
0041260 N T ( W i n d o w P r o p e
0041300 r t y ) } p r o p e r t y o
0041320 f t h e w i n d o w ( { P
0041340 a g e R e f ( W i n d o w P
0041360 r o p e r t y ) E X T E N T }
0041400 ) . S e c o n d , t h e
0041420 c l i p p i n g r e g i o n
0041440 o f t h e w i n d o w ( o
0041460 b t a i n a b l e w i t h t
0041500 h e f u n c t i o n { f n
0041520 D S P C L I P P I N G R E G I O
0041540 N } ) s p e c i f i e s t h
0041560 e p o r t i o n o f t h e
0041600 o b j e c t t h a t i s
0041620 a c t u a l l y v i s i b l e
0041640 i n t h e w i n d o w .
0041660 T h i s i s s e t s o
0041700 t h a t i t c o r r e s p o
0041720 n d s t o t h e i n t e r
0041740 i o r o f t h e w i n d o
0041760 w ( n o t i n c l u d i n g
0042000 t h e b o r d e r o r t
0042020 i t l e ) . F i n a l l y ,
0042040 t h e r e i s t h e r e
0042060 g i o n o n t h e s c r e
0042100 e n t h a t s p e c i f i e
0042120 s t h e t o t a l a r e a
0042140 t h a t t h e w i n d o w
0042160 o c c u p i e s , i n c l u
0042200 d i n g t h e b o r d e r
0042220 a n d t i t l e . T h i s
0042240 r e g i o n ( i n s c r e
0042260 e n c o o r d i n a t e s )
0042300 i s s t o r e d a s t h e
0042320 { l i s p R E G I O N } { i
0042340 n d e x R E G I O N ( W i n
0042360 d o w P r o p e r t y ) } p
0042400 r o p e r t y o f t h e w
0042420 i n d o w ( { P a g e R e f
0042440 ( W i n d o w P r o p e r t y
0042460 ) R E G I O N } ) . \r \r } { E
0042500 n d S u b S e c C o o r d i
0042520 n a t e S y s t e m s } \r \r \r
0042540 \r \r { B e g i n S u b S e c
0042560 S c r o l l i n g } \r { T i t l
0042600 e S c r o l l i n g } \r { T e
0042620 x t \r \r { T a g W i n d o w S
0042640 c r o l l i n g } \r \r \r T h e
0042660 w i n d o w s y s t e m s u
0042700 p p o r t s t h e i d e a
0042720 o f s c r o l l i n g t h e
0042740 c o n t e n t s o f a w
0042760 i n d o w . S c r o l l i n
0043000 g r e g i o n s a r e o n
0043020 t h e l e f t a n d t h
0043040 e b o t t o m e d g e o f
0043060 e a c h w i n d o w . T
0043100 h e s c r o l l i n g r e g
0043120 i o n s w i l l o n l y b
0043140 e a c t i v e i f t h e
0043160 w i n d o w h a s a { l i
0043200 s p S C R O L L F N } { i n d
0043220 e x S C R O L L F N ( W i n
0043240 d o w P r o p e r t y ) } w
0043260 i n d o w p r o p e r t y (
0043300 { P a g e R e f ( W i n d o w
0043320 P r o p e r t y ) S C R O L
0043340 L F N } ) a n d d o e s N
0043360 O T h a v e a { l i s p
0043400 N O S C R O L L B A R S } { i n
0043420 d e x N O S C R O L L B A R S
0043440 ( W i n d o w P r o p e r t
0043460 y ) } w i n d o w p r o p e
0043500 r t y ( { P a g e R e f ( W
0043520 i n d o w P r o p e r t y )
0043540 N O S C R O L L B A R S } ) .
0043560 I f a w i n d o w h a s
0043600 a { l i s p S C R O L L F
0043620 N } , i t s { l i s p N O
0043640 S C R O L L B A R S } p r o p
0043660 e r t y i s n o n - { l i s
0043700 p N I L } , a n d t h e
0043720 c u r s o r m o v e s f r o
0043740 m i n s i d e t h a t w i
0043760 n d o w i n t o i t s s c
0044000 r o l l i n g r e g i o n a
0044020 n d r e m a i n s t h e r e
0044040 f o r { v a r S C R O L L
0044060 W A I T T I M E } { i n d e x
0044100 S C R O L L W A I T T I M E V
0044120 a r } m i l l i s e c o n d s
0044140 ( i n i t i a l l y 1 0 0 0
0044160 ) , a s c r o l l b a r
0044200 a p p e a r s . T h e v a
0044220 l u e o f t h e g l o b a
0044240 l v a r i a b l e { v a r
0044260 S C R O L L B A R W I D T H } {
0044300 i n d e x S C R O L L B A R W
0044320 I D T H V a r } ( i n i t i
0044340 a l l y 2 4 ) d e t e r m i
0044360 n e s t h e s i z e o f
0044400 t h e s c r o l l i n g r e
0044420 g i o n . T h e { l i s p
0044440 L E F T } k e y i s u s
0044460 e d t o i n d i c a t e u
0044500 p w a r d o r l e f t w a r
0044520 d s c r o l l i n g b y t
0044540 h e a m o u n t n e c e s s
0044560 a r y t o m o v e t h e
0044600 s e l e c t e d p o s i t i o
0044620 n t o t h e t o p o r
0044640 t h e l e f t e d g e .
0044660 T h e { l i s p R I G H T }
0044700 k e y i s u s e d t o
0044720 i n d i c a t e d o w n w a r
0044740 d o r r i g h t w a r d s
0044760 c r o l l i n g b y t h e
0045000 a m o u n t n e c e s s a r y
0045020 t o m o v e t h e t o p
0045040 o r l e f t e d g e t o
0045060 t h e s e l e c t e d p o
0045100 s i t i o n . T h e { l i
0045120 s p M I D D L E } k e y i
0045140 s u s e d t o i n d i c a
0045160 t e g l o b a l p l a c e m
0045200 e n t o f t h e o b j e c
0045220 t w i t h i n t h e w i n
0045240 d o w ( s i m i l a r t o
0045260 " t h u m b i n g " a b o o
0045300 k ) . \r \r I n t h e s c r
0045320 o l l r e g i o n , t h e
0045340 p a r t o f t h e o b j e
0045360 c t t h a t i s b e i n g
0045400 v i e w e d b y t h e w
0045420 i n d o w i s m a r k e d
0045440 w i t h a g r a y s h a d
0045460 e . I f t h e w h o l e
0045500 s c r o l l b a r i s t
0045520 h o u g h t o f a s t h e
0045540 e n t i r e o b j e c t ,
0045560 t h e s h a d e d p o r t i
0045600 o n i s t h e p o r t i o
0045620 n c u r r e n t l y b e i n
0045640 g v i e w e d . T h i s
0045660 w i l l o n l y o c c u r
0045700 w h e n t h e w i n d o w
0045720 " k n o w s " h o w b i g
0045740 t h e o b j e c t i s ( s
0045760 e e w i n d o w p r o p e r
0046000 t y { i n d e x E X T E N T
0046020 ( W i n d o w P r o p e r t
0046040 y ) } { l i s p E X T E N T }
0046060 , { P a g e R e f ( W i n d
0046100 o w P r o p e r t y ) E X T
0046120 E N T } ) . \r \r W h e n t h e
0046140 b u t t o n i s r e l e a
0046160 s e d i n a s c r o l l
0046200 r e g i o n , t h e f u n c
0046220 t i o n { l i s p S C R O L
0046240 L W } i s c a l l e d .
0046260 { l i s p S C R O L L W } c
0046300 a l l s t h e s c r o l l i
0046320 n g f u n c t i o n a s s o
0046340 c i a t e d w i t h t h e
0046360 w i n d o w t o d o t h e
0046400 a c t u a l s c r o l l i n
0046420 g a n d p r o v i d e s a
0046440 p r o g r a m m a b l e e n
0046460 t r y t o t h e s c r o l
0046500 l i n g o p e r a t i o n . \r
0046520 \r \r { F n D e f { N a m e S
0046540 C R O L L W } { A r g s W I
0046560 N D O W D E L T A X D E L T
0046600 A Y C O N T I N U O U S F L G
0046620 } \r { T e x t \r C a l l s t h
0046640 e { l i s p S C R O L L F N
0046660 } w i n d o w p r o p e r t
0046700 y o f t h e w i n d o w
0046720 { a r g W I N D O W } w i t
0046740 h a r g u m e n t s { a r g
0046760 W I N D O W } , { a r g D
0047000 E L T A X } , { a r g D E L
0047020 T A Y } a n d { a r g C O
0047040 N T I N U O U S F L G } . S
0047060 e e { l i s p S C R O L L F
0047100 N } w i n d o w p r o p e r
0047120 t y , { P a g e R e f ( W i
0047140 n d o w P r o p e r t y ) S
0047160 C R O L L F N } . \r } } \r \r \r \r
0047200 T h e f u n c t i o n t h a
0047220 t t r a c k s t h e m o u
0047240 s e w h i l e i t i s i
0047260 n t h e s c r o l l r e g
0047300 i o n i s { l i s p S C R
0047320 O L L . H A N D L E R } . \r \r {
0047340 F n D e f { N a m e S C R O
0047360 L L . H A N D L E R } { A r g
0047400 s W I N D O W } \r { T e x t \r
0047420 T h i s i s c a l l e d w
0047440 h e n t h e c u r s o r l
0047460 e a v e s a w i n d o w i
0047500 n e i t h e r t h e l e f
0047520 t o r d o w n w a r d d i
0047540 r e c t i o n . I f { a r
0047560 g W I N D O W } d o e s n
0047600 o t h a v e a s c r o l l
0047620 r e g i o n f o r t h i s
0047640 d i r e c t i o n ( e . g .
0047660 t h e w i n d o w h a s
0047700 m o v e d o r r e s h a p e
0047720 d s i n c e i t w a s l
0047740 a s t s c r o l l e d ) , a
0047760 s c r o l l r e g i o n i
0050000 s c r e a t e d t h a t i
0050020 s { v a r S C R O L L B A R
0050040 W I D T H } { i n d e x S C R
0050060 O L L B A R W I D T H V a r }
0050100 w i d e . I t t h e n
0050120 w a i t s f o r { v a r S
0050140 C R O L L W A I T T I M E } { i
0050160 n d e x S C R O L L W A I T T
0050200 I M E V a r } m i l l i s e
0050220 c o n d s a n d i f t h e
0050240 c u r s o r i s s t i l l
0050260 i n s i d e t h e s c r o
0050300 l l r e g i o n , i t o p
0050320 e n s a w i n d o w t h e
0050340 s i z e o f t h e s c r
0050360 o l l r e g i o n a n d c
0050400 h a n g e s t h e c u r s o
0050420 r t o i n d i c a t e t h
0050440 e s c r o l l i n g i s t
0050460 a k i n g p l a c e . \r \r W h
0050500 e n a b u t t o n i s p
0050520 r e s s e d , t h e c u r s
0050540 o r s h a p e i s c h a n
0050560 g e d t o i n d i c a t e
0050600 t h e t y p e o f s c r o
0050620 l l i n g ( u p , d o w n ,
0050640 l e f t , r i g h t o r
0050660 t h u m b ) . A f t e r t
0050700 h e b u t t o n i s h e l
0050720 d f o r { v a r W A I T B
0050740 E F O R E S C R O L L T I M E }
0050760 { i n d e x W A I T B E F O R
0051000 E S C R O L L T I M E V a r }
0051020 m i l l i s e c o n d s , u
0051040 n t i l t h e b u t t o n
0051060 i s r e l e a s e d { l i s
0051100 p S C R O L L W } i s c a
0051120 l l e d e a c h { v a r W
0051140 A I T B E T W E E N S C R O L L
0051160 T I M E } { i n d e x W A I T
0051200 B E T W E E N S C R O L L T I M
0051220 E V a r } m i l l i s e c o
0051240 n d s . T h e s e c a l l
0051260 s a r e m a d e w i t h
0051300 t h e { a r g C O N T I N U
0051320 O U S F L G } a r g u m e n t
0051340 s e t t o { l i s p T }
0051360 . I f t h e b u t t o n
0051400 i s r e l e a s e d b e f
0051420 o r e { v a r W A I T B E F
0051440 O R E S C R O L L T I M E } m
0051460 i l l i s e c o n d s , { l i
0051500 s p S C R O L L W } i s c
0051520 a l l e d w i t h t h e {
0051540 a r g C O N T I N U O U S F L
0051560 G } a r g u m e n t s e t
0051600 t o { l i s p N I L } . \r \r
0051620 T h e a r g u m e n t s p a
0051640 s s e d t o { l i s p S C
0051660 R O L L W } d e p e n d o n
0051700 t h e m o u s e b u t t o
0051720 n . I f t h e \r { l i s p
0051740 L E F T } b u t t o n i s
0051760 u s e d i n t h e v e r
0052000 t i c a l s c r o l l r e g
0052020 i o n , { a r g D Y } i s
0052040 d i s t a n c e f r o m c
0052060 u r s o r p o s i t i o n a
0052100 t t h e t i m e t h e b
0052120 u t t o n w a s r e l e a s
0052140 e d t o t h e t o p o f
0052160 t h e w i n d o w a n d
0052200 { a r g D X } i s 0 .
0052220 I f t h e { l i s p R I G
0052240 H T } b u t t o n i s u s
0052260 e d , t h e i n v e r s e
0052300 o f t h i s q u a n t i t y
0052320 i s u s e d f o r { a r
0052340 g D Y } a n d 0 f o r
0052360 { a r g D X } . I f t
0052400 h e { l i s p L E F T } b
0052420 u t t o n i s u s e d i n
0052440 t h e h o r i z o n t a l
0052460 s c r o l l r e g i o n , {
0052500 a r g D X } i s d i s t a
0052520 n c e f r o m c u r s o r
0052540 p o s i t i o n t o l e f t
0052560 o f t h e w i n d o w a
0052600 n d { a r g D Y } i s 0
0052620 . I f t h e { l i s p
0052640 R I G H T } b u t t o n i s
0052660 u s e d , t h e i n v e r
0052700 s e o f t h i s q u a n t
0052720 i t y i s u s e d f o r
0052740 { a r g D X } a n d 0 f
0052760 o r { a r g D Y } . \r \r I f
0053000 t h e { l i s p M I D D L
0053020 E } b u t t o n i s p r e
0053040 s s e d , t h e d i s t a n
0053060 c e a r g u m e n t t o {
0053100 f n S C R O L L W } w i l l
0053120 b e a { l i s p F L O A
0053140 T P } b e t w e e n 0 . 0
0053160 a n d 1 . 0 t h a t i n d
0053200 i c a t e s t h e p r o p o
0053220 r t i o n o f t h e d i s
0053240 t a n c e t h e c u r s o r
0053260 w a s f r o m t h e l e
0053300 f t o r t o p e d g e t
0053320 o t h e r i g h t o r b
0053340 o t t o m e d g e . \r } } \r \r
0053360 \r \r \r { f n S C R O L L B Y R
0053400 E P A I N T F N } i s t h e
0053420 s t a n d a r d s c r o l l
0053440 i n g f u n c t i o n w h i
0053460 c h s h o u l d b e u s e
0053500 d a s t h e { l i s p S
0053520 C R O L L F N } { i n d e x S
0053540 C R O L L F N ( W i n d o w
0053560 P r o p e r t y ) } p r o p e
0053600 r t y f o r m o s t s c r
0053620 o l l i n g w i n d o w s . \r
0053640 \r { F n D e f { N a m e S C
0053660 R O L L B Y R E P A I N T F N }
0053700 { A r g s W I N D O W D E
0053720 L T A X D E L T A Y C O N T
0053740 I N U O U S F L G } \r { T e x t
0053760 \r T h i s f u n c t i o n ,
0054000 w h e n u s e d a s a {
0054020 l i s p S C R O L L F N } ,
0054040 { f n B I T B L T } s t h e
0054060 b i t s t h a t w i l l
0054100 r e m a i n v i s i b l e a
0054120 f t e r t h e s c r o l l
0054140 t o t h e i r n e w l o c
0054160 a t i o n , f i l l s t h e
0054200 n e w l y e x p o s e d a
0054220 r e a w i t h t e x t u r e
0054240 , a d j u s t s t h e w i
0054260 n d o w ' s c o o r d i n a t
0054300 e s a n d t h e n c a l l
0054320 s t h e w i n d o w ' s {
0054340 l i s p R E P A I N T F N }
0054360 o n t h e n e w l y e x p
0054400 o s e d r e g i o n . T h
0054420 u s t h i s f u n c t i o n
0054440 w i l l s c r o l l a n y
0054460 w i n d o w t h a t h a s
0054500 a r e p a i n t f u n c t
0054520 i o n . I f { a r g W I
0054540 N D O W } h a s a n { l i
0054560 s p E X T E N T } { i n d e x
0054600 E X T E N T ( W i n d o w
0054620 P r o p e r t y ) } p r o p e
0054640 r t y ( { P a g e R e f ( W
0054660 i n d o w P r o p e r t y )
0054700 E X T E N T } ) , { f n S C
0054720 R O L L B Y R E P A I N T F N }
0054740 w i l l l i m i t s c r o
0054760 l l i n g t o k e e p t h
0055000 e e x t e n t r e g i o n
0055020 v i s i b l e o r n e a r
0055040 v i s i b l e . T h a t i
0055060 s , i t w i l l n o t s
0055100 c r o l l t h e w i n d o w
0055120 s o t h a t t h e t o p
0055140 o f t h e e x t e n t i
0055160 s b e l o w t h e t o p
0055200 o f t h e w i n d o w , t
0055220 h e b o t t o m o f t h e
0055240 e x t e n t i s m o r e
0055260 t h a n o n e p o i n t a
0055300 b o v e t h e t o p o f
0055320 t h e w i n d o w , t h e
0055340 l e f t o f t h e e x t e
0055360 n t i s t o t h e r i g
0055400 h t o f t h e w i n d o w
0055420 a n d t h e r i g h t o
0055440 f t h e e x t e n t i s
0055460 t o t h e l e f t o f t
0055500 h e w i n d o w . T h e
0055520 { l i s p E X T E N T } i s
0055540 s c r o l l e d t o j u s
0055560 t a b o v e t h e w i n d
0055600 o w t o p r o v i d e a
0055620 w a y o f " h i d i n g "
0055640 t h e c o n t e n t s o f
0055660 a w i n d o w . \r \r I f { a
0055700 r g D E L T A X } o r { a
0055720 r g D E L T A Y } i s a
0055740 { l i s p F L O A T P } , {
0055760 f n S C R O L L B Y R E P A I
0056000 N T F N } w i l l p o s i t
0056020 i o n t h e w i n d o w s
0056040 o t h a t i t s t o p o
0056060 r l e f t e d g e w i l l
0056100 b e p o s i t i o n e d a
0056120 t t h a t p r o p o r t i o
0056140 n o f i t s { l i s p E
0056160 X T E N T } . I f t h e
0056200 w i n d o w d o e s n o t
0056220 h a v e a n { l i s p E X
0056240 T E N T } , { f n S C R O L
0056260 L B Y R E P A I N T F N } w i
0056300 l l d o n o t h i n g . \r \r
0056320 I f { a r g C O N T I N U O
0056340 U S F L G } i s n o n - { l
0056360 i s p N I L } , t h i s i
0056400 n d i c a t e s t h a t t h
0056420 e s c r o l l i n g b u t t
0056440 o n i s b e i n g h e l d
0056460 d o w n . I n t h i s
0056500 c a s e , { f n S C R O L L
0056520 B Y R E P A I N T F N } w i l
0056540 l s c r o l l t h e d i s
0056560 t a n c e o f o n e l i n
0056600 e f e e d h e i g h t ( a s
0056620 r e t u r n e d b y { f n
0056640 D S P L I N E F E E D } , {
0056660 P a g e R e f F n D S P L I
0056700 N E F E E D } ) . \r } } \r \r
0056720 \r } { E n d S u b S e c S c
0056740 r o l l i n g } \r \r \r \r \r { B e
0056760 g i n S u b S e c P r o g r
0057000 a m m a t i c W i n d o w O
0057020 p e r a t i o n s } \r { T i t l
0057040 e P r o g r a m m a t i c W
0057060 i n d o w O p e r a t i o n s
0057100 } \r { T e x t \r \r \r { F n D e f
0057120 { N a m e C R E A T E W }
0057140 { A r g s R E G I O N T I T
0057160 L E B O R D E R N O O P E N
0057200 F L G } \r { T e x t \r C r e a t
0057220 e s a n e w w i n d o w .
0057240 { a r g R E G I O N } i
0057260 n d i c a t e s w h e r e a
0057300 n d h o w l a r g e t h e
0057320 w i n d o w s h o u l d b
0057340 e b y s p e c i f y i n g
0057360 t h e e x t e r i o r r e g
0057400 i o n o f t h e w i n d o
0057420 w ( t h e u s a b l e h e
0057440 i g h t a n d w i d t h o
0057460 f t h e r e s u l t i n g
0057500 w i n d o w w i l l b e s
0057520 m a l l e r t h a n t h e
0057540 h e i g h t a n d w i d t h
0057560 o f t h e r e g i o n b
0057600 y t w i c e t h e b o r d
0057620 e r s i z e a n d f u r t
0057640 h e r l e s s t h e h e i
0057660 g h t o f t h e t i t l e
0057700 , i f a n y ) . I f {
0057720 a r g R E G I O N } i s {
0057740 l i s p N I L } , { f n G
0057760 E T R E G I O N } i s c a l
0060000 l e d t o p r o m p t t h
0060020 e u s e r f o r a r e g
0060040 i o n . \r \r I f { a r g T I
0060060 T L E } i s n o n - { l i s
0060100 p N I L } , i t i s p r
0060120 i n t e d i n t h e b o r
0060140 d e r a t t h e t o p o
0060160 f t h e w i n d o w . T
0060200 h e { a r g T I T L E } i
0060220 s p r i n t e d u s i n g
0060240 t h e g l o b a l d i s p l
0060260 a y s t r e a m { v a r W
0060300 i n d o w T i t l e D i s p l a
0060320 y S t r e a m } . { i n d e x
0060340 W i n d o w T i t l e D i s p l
0060360 a y S t r e a m V a r } T
0060400 h u s t h e h e i g h t o
0060420 f t h e t i t l e w i l l
0060440 b e { l i s p ( F O N T P
0060460 R O P W i n d o w T i t l e D
0060500 i s p l a y S t r e a m ' H E
0060520 I G H T ) } . \r \r I f { a r g
0060540 B O R D E R } i s a n u
0060560 m b e r , i t i s u s e d
0060600 a s t h e b o r d e r s
0060620 i z e . I f { a r g B O
0060640 R D E R } i s n o t a n
0060660 u m b e r , t h e w i n d o
0060700 w w i l l h a v e a b o
0060720 r d e r { v a r W B o r d e
0060740 r } { i n d e x W B o r d e r
0060760 V a r } ( i n i t i a l l y
0061000 4 ) b i t s w i d e . \r \r
0061020 I f { a r g N O O P E N F L
0061040 G } i s n o n - { l i s p
0061060 N I L } , t h e w i n d o w
0061100 w i l l n o t b e o p e
0061120 n e d , i . e . d i s p l a
0061140 y e d o n t h e s c r e e
0061160 n . \r \r T h e i n i t i a l
0061200 X a n d Y p o s i t i o n
0061220 s o f t h e w i n d o w
0061240 a r e s e t t o t h e u
0061260 p p e r l e f t c o r n e r
0061300 b y c a l l i n g { f n
0061320 M O V E T O U P P E R L E F T }
0061340 ( { P a g e R e f F n M O
0061360 V E T O U P P E R L E F T } ) .
0061400 \r } } \r \r \r { F n D e f { N a
0061420 m e D E C O D E . W I N D O W
0061440 . A R G } { A r g s W H E R
0061460 E S P E C W I D T H H E I G
0061500 H T T I T L E B O R D E R
0061520 N O O P E N F L G } \r { T e x t
0061540 \r T h i s i s a u s e f u
0061560 l f u n c t i o n f o r p
0061600 r o g r a m s t h a t c r e
0061620 a t e w i n d o w s f r o m
0061640 o n e o f t h e i r a r
0061660 g u m e n t s . { a r g W
0061700 H E R E S P E C } c a n b e
0061720 a { l i s p W I N D O W }
0061740 , a { l i s p R E G I O N
0061760 } , a { l i s p P O S I T
0062000 I O N } o r { l i s p N I
0062020 L } . I f { a r g W H E
0062040 R E S P E C } i s a { l i
0062060 s p W I N D O W } , i t i
0062100 s r e t u r n e d . \r I n
0062120 a l l o t h e r c a s e s
0062140 , { f n C R E A T E W } i
0062160 s c a l l e d w i t h t h
0062200 e a r g u m e n t s { a r g
0062220 T I T L E } { a r g B O R
0062240 D E R } a n d { a r g N O
0062260 O P E N F L G } . T h e {
0062300 l i s p R E G I O N } a r g
0062320 u m e n t t o { F N C R E
0062340 A T E W } i s d e t e r m i
0062360 n e d f r o m { a r g W H
0062400 E R E S P E C } a s f o l l
0062420 o w s . \r \r I f { a r g W H
0062440 E R E S P E C } i s a { l
0062460 i s p R E G I O N } , i t
0062500 i s a d j u s t e d t o b
0062520 e o n t h e s c r e e n ,
0062540 t h e n p a s s e d t o
0062560 { f n C R E A T E W } . \r \r I
0062600 f { a r g W I D T H } a n
0062620 d { a r g H E I G H T } a
0062640 r e n o t n u m b e r s ,
0062660 { f n C R E A T E W } i s
0062700 g i v e n { l i s p N I L }
0062720 a s a { l i s p R E G I
0062740 O N } a r g u m e n t . \r \r I
0062760 f { a r g W I D T H } a n
0063000 d { a r g H E I G H T } a
0063020 r e n u m b e r s a n d {
0063040 a r g W H E R E S P E C } i
0063060 s a { l i s p P O S I T I
0063100 O N } , t h e r e g i o n
0063120 w h o s e l o w e r l e f t
0063140 c o r n e r i s { a r g
0063160 W H E R E S P E C } , w h o s
0063200 e w i d t h i s { a r g
0063220 W I D T H } a n d w h o s e
0063240 h e i g h t i s { a r g
0063260 H E I G H T } i s a d j u s
0063300 t e d t o b e o n t h e
0063320 s c r e e n , t h e n p a
0063340 s s e d t o { f n C R E A
0063360 T E W } . \r \r I f { a r g W
0063400 I D T H } a n d { a r g H
0063420 E I G H T } a r e n u m b e
0063440 r s a n d { a r g W H E R
0063460 E S P E C } i s n o t a
0063500 { l i s p P O S I T I O N } ,
0063520 t h e n { f n G E T B O X
0063540 R E G I O N } i s c a l l e
0063560 d t o p r o m p t t h e
0063600 u s e r f o r t h e p o s
0063620 i t i o n o f a r e g i o
0063640 n t h a t i s { a r g W
0063660 I D T H } b y { a r g H E
0063700 I G H T } . \r \r I f { a r g
0063720 W I D T H } a n d { a r g
0063740 H E I G H T } a r e n o t
0063760 n u m b e r s , { f n C R E
0064000 A T E W } i s g i v e n {
0064020 l i s p N I L } a s a {
0064040 l i s p R E G I O N } a r g
0064060 u m e n t . \r \r \r I f { a r g
0064100 W I D T H } a n d { a r g
0064120 H E I G H T } a r e u s e
0064140 d , t h e y a r e u s e d
0064160 a s i n t e r i o r d i m
0064200 e n s i o n s f o r t h e
0064220 w i n d o w . \r } } \r \r \r \r \r {
0064240 F n D e f { N a m e W I N D
0064260 O W P } { A r g s X } \r { T
0064300 e x t \r R e t u r n s { a r g
0064320 X } i f { a r g X } i
0064340 s a w i n d o w , { l i s
0064360 p N I L } o t h e r w i s e
0064400 . \r } } \r \r \r { F n D e f { N
0064420 a m e O P E N W P } { A r g
0064440 s W I N D O W } \r { T e x t
0064460 \r R e t u r n s { a r g W I
0064500 N D O W } , i f { a r g W
0064520 I N D O W } i s a n o p e
0064540 n w i n d o w ( h a s n o
0064560 t b e e n \r c l o s e d ) ;
0064600 { l i s p N I L } o t h e r
0064620 w i s e . \r } } \r \r \r { F n D e
0064640 f { N a m e O P E N W I N D
0064660 O W S } \r { T e x t \r R e t u r
0064700 n s a l i s t o f a l l
0064720 a c t i v e w i n d o w s .
0064740 \r } } \r \r \r { F n D e f { N a
0064760 m e W H I C H W } { A r g s
0065000 X Y } \r { T e x t \r R e t u
0065020 r n s t h e w i n d o w w
0065040 h i c h c o n t a i n s t h
0065060 e p o s i t i o n i n s c
0065100 r e e n c o o r d i n a t e s
0065120 o f { a r g X } i f {
0065140 a r g X } i s a { l i s
0065160 p P O S I T I O N } , t h e
0065200 p o s i t i o n ( { a r g
0065220 X } , { a r g Y } ) i f {
0065240 a r g X } a n d { a r g
0065260 Y } a r e n u m b e r s ,
0065300 o r t h e p o s i t i o n
0065320 o f t h e c u r s o r i f
0065340 { a r g X } i s { l i s
0065360 p N I L } . R e t u r n s
0065400 { l i s p N I L } i f t
0065420 h e c o o r d i n a t e s a
0065440 r e n o t i n a n y w i
0065460 n d o w . I f t h e y a
0065500 r e i n m o r e t h a n
0065520 o n e w i n d o w , i t r
0065540 e t u r n s t h e u p p e r
0065560 m o s t . \r \r E x a m p l e :
0065600 { l i s p ( W H I C H W ) }
0065620 r e t u r n s t h e w i n
0065640 d o w t h a t t h e c u r
0065660 s o r i s i n . \r } } \r \r \r
0065700 { n o t e L a r r y s a y s
0065720 : " U g h ! B a d f u n
0065740 c t i o n n a m e . H o w
0065760 a b o u t u s i n g ' G E
0066000 T W I N D O W ' ? B i l l
0066020 s e c o n d s t h e m o t i
0066040 o n . } \r \r { F n D e f { N a
0066060 m e D E C O D E / W I N D O W
0066100 / O R / D I S P L A Y S T R E A
0066120 M } \r { A r g s D S O R W W
0066140 I N D O W V A R T I T L E B
0066160 O R D E R } \r { T e x t \r R e t
0066200 u r n s a d i s p l a y s
0066220 t r e a m a s d e t e r m i
0066240 n e d b y t h e { a r g
0066260 D S O R W } a n d { a r g
0066300 W I N D O W V A R } a r g u m
0066320 e n t s . I f { a r g D
0066340 S O R W } i s a d i s p l
0066360 a y s t r e a m , i t i s
0066400 r e t u r n e d . I f {
0066420 a r g D S O R W } i s a
0066440 w i n d o w , i t s d i s p
0066460 l a y s t r e a m i s r e
0066500 t u r n e d . I f { a r g
0066520 D S O R W } i s { l i s p
0066540 N I L } , t h e l i t a t
0066560 o m { a r g W I N D O W V A
0066600 R } i s e v a l u a t e d .
0066620 I f i t s v a l u e i
0066640 s a w i n d o w , i t s
0066660 d i s p l a y s t r e a m i
0066700 s r e t u r n e d . I f
0066720 i t s v a l u e i s n o t
0066740 a w i n d o w , { a r g
0066760 W I N D O W V A R } i s s e
0067000 t t o a n e w l y c r e
0067020 a t e d w i n d o w ( p r o
0067040 m p t i n g u s e r f o r
0067060 r e g i o n ) w h o s e d i
0067100 s p l a y s t r e a m i s
0067120 t h e n r e t u r n e d .
0067140 I f { a r g D S O R W } i
0067160 s { l i s p N E W } , t h
0067200 e d i s p l a y s t r e a m
0067220 o f a n e w l y c r e a
0067240 t e d w i n d o w i s r e
0067260 t u r n e d . I f a w i
0067300 n d o w i s i n v o l v e d
0067320 i n t h e d e c o d i n g
0067340 , i t i s o p e n e d a
0067360 n d i f { a r g T I T L E
0067400 } o r { a r g B O R D E R
0067420 } a r e g i v e n , t h e
0067440 { l i s p T I T L E } o r
0067460 { l i s p B O R D E R } p
0067500 r o p e r t y o f t h e w
0067520 i n d o w a r e r e s e t .
0067540 T h e { a r g D S O R W
0067560 } = { l i s p N I L } c a s
0067600 e i s m o s t u s e f u l
0067620 f o r p r o g r a m s t h
0067640 a t w a n t t o d i s p l
0067660 a y t h e i r o u t p u t
0067700 i n a w i n d o w , b u t
0067720 w a n t t o r e u s e t
0067740 h e s a m e w i n d o w e
0067760 a c h t i m e t h e y a r
0070000 e c a l l e d . T h e n
0070020 o n - { l i s p N I L } c a
0070040 s e s a r e g o o d f o r
0070060 d e c o d i n g a d i s p
0070100 l a y s t r e a m a r g u m
0070120 e n t p a s s e d t o a
0070140 f u n c t i o n . \r } } \r \r \r {
0070160 F n D e f { N a m e W I D T
0070200 H I F W I N D O W } { A r g s
0070220 I N T E R I O R W I D T H B
0070240 O R D E R } \r { T e x t \r R e t
0070260 u r n s t h e w i d t h o
0070300 f t h e w i n d o w n e c
0070320 e s s a r y t o h a v e {
0070340 a r g I N T E R I O R W I D T
0070360 H } p o i n t s i n i t s
0070400 i n t e r i o r i f t h e
0070420 w i d t h o f t h e b o
0070440 r d e r i s { a r g B O R
0070460 D E R } . I f { a r g B
0070500 O R D E R } i s { l i s p
0070520 N I L } , t h e d e f a u l
0070540 t b o r d e r s i z e { v
0070560 a r W B o r d e r } { i n d e
0070600 x W B o r d e r V a r } i
0070620 s u s e d . \r } } \r \r \r { F n
0070640 D e f { N a m e H E I G H T
0070660 I F W I N D O W } { A r g s
0070700 I N T E R I O R H E I G H T T
0070720 I T L E F L G B O R D E R } \r
0070740 { T e x t \r R e t u r n s t h
0070760 e h e i g h t o f t h e
0071000 w i n d o w n e c e s s a r y
0071020 t o h a v e { a r g I N
0071040 T E R I O R H E I G H T } p o
0071060 i n t s i n i t s i n t e
0071100 r i o r w i t h a b o r d
0071120 e r o f { a r g B O R D E
0071140 R } a n d , i f { a r g
0071160 T I T L E F L G } i s n o n
0071200 - { l i s p N I L } , a t
0071220 i t l e . I f { a r g B
0071240 O R D E R } i s { l i s p
0071260 N I L } , t h e d e f a u l
0071300 t b o r d e r s i z e { v
0071320 a r W B o r d e r } { i n d e
0071340 x W B o r d e r V a r } i
0071360 s u s e d . \r } } \r \r \r { f n
0071400 W I D T H I F W I N D O W }
0071420 a n d { f n H E I G H T I F
0071440 W I N D O W } a r e u s e f
0071460 u l f o r c a l c u l a t i
0071500 n g t h e w i d t h a n d
0071520 h e i g h t f o r a c a
0071540 l l t o { f n G E T B O X
0071560 P O S I T I O N } f o r t h
0071600 e p u r p o s e o f p o s
0071620 i t i o n i n g a p r o s p
0071640 e c t i v e w i n d o w . \r \r
0071660 \r { F n D e f { N a m e M I
0071700 N I M U M W I N D O W S I Z E }
0071720 { A r g s W I N D O W } \r {
0071740 T e x t \r R e t u r n s a d
0071760 o t t e d p a i r , t h e
0072000 { l i s p C A R } o f w h
0072020 i c h i s t h e m i n i m
0072040 u m w i d t h { a r g W I
0072060 N D O W } n e e d s a n d
0072100 t h e { l i s p C D R } o
0072120 r w h i c h i s t h e m
0072140 i n i m u m h e i g h t { a
0072160 r g W I N D O W } n e e d s
0072200 . \r \r T h e m i n i m u m s
0072220 i z e i s d e t e r m i n e
0072240 d b y t h e v a l u e o
0072260 f t h e w i n d o w p r o
0072300 p e r t y { l i s p M I N S
0072320 I Z E } { i n d e x M I N S I
0072340 Z E ( W i n d o w P r o p e
0072360 r t y ) } o f { a r g W I
0072400 N D O W } . I f t h e v
0072420 a l u e o f t h e { l i s
0072440 p M I N S I Z E } w i n d o
0072460 w p r o p e r t y i s { l
0072500 i s p N I L } , t h e w i
0072520 d t h i s 2 6 a n d t h
0072540 e h e i g h t i s t h e
0072560 h e i g h t { a r g W I N D
0072600 O W } n e e d s t o h a v
0072620 e i t s t i t l e , b o r
0072640 d e r a n d o n e l i n e
0072660 o f t e x t v i s i b l e
0072700 . I f { l i s p M I N S
0072720 I Z E } i s a d o t t e d
0072740 p a i r , i t i s r e t
0072760 u r n e d . I f i t i s
0073000 a { l i s p L I T A T O M
0073020 } , i t s h o u l d b e
0073040 a f u n c t i o n w h i c h
0073060 i s c a l l e d w i t h
0073100 { l i s p W I N D O W } a s
0073120 i t s f i r s t a r g u m
0073140 e n t , w h i c h s h o u l
0073160 d r e t u r n a d o t t e
0073200 d p a i r . \r } } \r \r \r \r I
0073220 n t e r l i s p - D p r o v i
0073240 d e s a s e t o f o p e
0073260 r a t i o n s w h i c h a p
0073300 p l y t o a n y w i n d o
0073320 w . I n a d d i t i o n
0073340 t o b e i n g a v a i l a b
0073360 l e a s f u n c t i o n s ,
0073400 m o s t o f t h e s e a
0073420 r e a l s o a v a i l a b l
0073440 e v i a t h e s t a n d a
0073460 r d m o u s e i n t e r f a
0073500 c e . S e e { P a g e R e
0073520 f T a g I n t e r a c t i v
0073540 e W i n d o w O p s } \r \r { T a
0073560 g P r o g r a m m a t i c W i
0073600 n d o w O p s } \r \r \r { F n D e
0073620 f { N a m e T O T O P W }
0073640 { A r g s W I N D O W N O C
0073660 A L L T O P W F N } \r { T e x t
0073700 \r B r i n g s { a r g W I N
0073720 D O W } t o t h e t o p
0073740 o f t h e s t a c k o f
0073760 o v e r l a p p i n g w i n d
0074000 o w s , g u a r a n t e e i n
0074020 g t h a t i t i s e n t
0074040 i r e l y v i s i b l e .
0074060 I f { a r g W I N D O W }
0074100 i s c l o s e d , i t i s
0074120 o p e n e d . T h i s i
0074140 s d o n e a u t o m a t i c
0074160 a l l y w h e n e v e r a
0074200 p r i n t i n g o r d r a w
0074220 i n g o p e r a t i o n o c
0074240 c u r s t o t h e w i n d
0074260 o w . \r \r I f { a r g N O C
0074300 A L L T O P W F N } i s { l
0074320 i s p N I L } , t h e { l
0074340 i s p T O T O P F N } o f
0074360 { a r g W I N D O W } i s
0074400 c a l l e d ( { P a g e R e f
0074420 ( W i n d o w P r o p e r t
0074440 y ) T O T O P F N } ) . I
0074460 f { a r g N O C A L L T O P
0074500 W F N } i s { l i s p T }
0074520 , i t i s n o t c a l l
0074540 e d , w h i c h a l l o w s
0074560 a { l i s p T O T O P F N
0074600 } t o c a l l { f n T O
0074620 T O P W } w i t h o u t c a
0074640 u s i n g a n i n f i n i t
0074660 e l o o p . \r } } \r \r \r \r { F
0074700 n D e f { N a m e S H A P E
0074720 W } { A r g s W I N D O W
0074740 N E W R E G I O N } \r { T e x
0074760 t \r R e s h a p e s { a r g
0075000 W I N D O W } . I f t h e
0075020 w i n d o w p r o p e r t y
0075040 { l i s p R E S H A P E F N
0075060 } i s t h e a t o m { l
0075100 i s p D O N ' T } o r a
0075120 l i s t t h a t c o n t a i
0075140 n s t h e a t o m { l i s
0075160 p D O N ' T } , a m e s s
0075200 a g e i s p r i n t e d i
0075220 n t h e p r o m p t w i n
0075240 d o w , { a r g W I N D O W
0075260 } i s n o t c h a n g e d
0075300 , a n d { l i s p N I L }
0075320 i s r e t u r n e d . \r \r I
0075340 f t h e r e g i o n { a r
0075360 g N E W R E G I O N } i s
0075400 { l i s p N I L } , i t p
0075420 r o m p t s f o r a r e g
0075440 i o n w i t h { f n G E T
0075460 R E G I O N } ( { P a g e R e
0075500 f F n G E T R E G I O N } )
0075520 . W h e n c a l l i n g
0075540 { f n G E T R E G I O N } ,
0075560 t h e f u n c t i o n { f n
0075600 M I N I M U M W I N D O W S I
0075620 Z E } i s c a l l e d t o
0075640 d e t e r m i n e t h e m
0075660 i n i m u m h e i g h t a n
0075700 d w i d t h o f t h e w
0075720 i n d o w a n d t h e w i
0075740 n d o w p r o p e r t y { l
0075760 i s p N E W R E G I O N F N }
0076000 ( { P a g e R e f ( W i n d
0076020 o w P r o p e r t y ) N E W
0076040 R E G I O N F N } ) i s u s
0076060 e d a s t h e { l i s p
0076100 N E W R E G I O N F N } a r g
0076120 u m e n t a n d { a r g W
0076140 I N D O W } a s t h e { l
0076160 i s p N E W R E G I O N F N A
0076200 R G } a r g u m e n t . T
0076220 h i s a l l o w s t h e w
0076240 i n d o w t o c o n t r o l
0076260 t h e s h a p e s a n d
0076300 s i z e s f o r i n t e r a
0076320 c t i v e c a l l s . \r \r I f
0076340 t h e r e g i o n { a r g
0076360 N E W R E G I O N } i s a
0076400 { l i s p R E G I O N } a
0076420 n d i t s { l i s p W I D
0076440 T H } o r { l i s p H E I
0076460 G H T } l e s s t h a n t
0076500 h e m i n i m u m s r e t u
0076520 r n e d b y c a l l i n g
0076540 t h e f u n c t i o n { f n
0076560 M I N I M U M W I N D O W S I
0076600 Z E } , t h e y w i l l b
0076620 e i n c r e a s e d t o t
0076640 h e m i n i m u m s . \r \r U n
0076660 l e s s { a r g W I N D O W
0076700 } h a s a { l i s p D O
0076720 S H A P E F N } w i n d o w
0076740 p r o p e r t y , t h e f u
0076760 n c t i o n { f n S H A P E
0077000 W 1 } i s c a l l e d t o
0077020 r e s h a p e t h e w i n
0077040 d o w . \r \r I f { a r g W I
0077060 N D O W } h a s a w i n d
0077100 o w p r o p e r t y { l i s
0077120 p D O S H A P E F N } ( { P
0077140 a g e R e f ( W i n d o w P
0077160 r o p e r t y ) D O S H A P E
0077200 F N } ) , i t i s c a l l
0077220 e d , p a s s i n g i t {
0077240 a r g W I N D O W } a n d
0077260 { a r g N E W R E G I O N } ,
0077300 o r t h e r e g i o n r
0077320 e t u r n e d b y { f n G
0077340 E T R E G I O N } . { l i s
0077360 p D O S H A P E F N } s a r
0077400 e p r o v i d e d t o i m
0077420 p l e m e n t w i n d o w g
0077440 r o u p s a n d f e w u s
0077460 e r s s h o u l d e v e r
0077500 w r i t e t h e m . T h e
0077520 y a r e t r i c k y t o
0077540 w r i t e a n d m u s t c
0077560 a l l { l i s p S H A P E W
0077600 1 } e v e n t u a l l y .
0077620 T h e r e i s a s i m p l
0077640 e r u s e r h o o k i n t
0077660 o r e s h a p e o p e r a t
0077700 i o n s , t h e { l i s p
0077720 R E S H A P E F N } w i n d o
0077740 w p r o p e r t y ( { P a g
0077760 e R e f ( W i n d o w P r o
0100000 p e r t y ) R E S H A P E F N
0100020 } ) . \r } } \r \r \r { F n D e f
0100040 { N a m e S H A P E W 1 } {
0100060 A r g s W I N D O W N E W R
0100100 E G I O N } \r { T e x t \r C h
0100120 a n g e s { a r g W I N D O
0100140 W } ' s s i z e a n d p o
0100160 s i t i o n o n t h e s c
0100200 r e e n t o b e { a r g
0100220 N E W R E G I O N } . A f t
0100240 e r c l e a r i n g t h e
0100260 r e g i o n o n t h e s c
0100300 r e e n , i t c a l l s t
0100320 h e w i n d o w ' s { l i s
0100340 p R E S H A P E F N } , i f
0100360 a n y , p a s s i n g i t
0100400 t h r e e a r g u m e n t s
0100420 : ( 1 ) { a r g W I N D O
0100440 W } , ( 2 ) a b i t m a p
0100460 t h a t c o n t a i n s {
0100500 a r g W I N D O W } ' s p r
0100520 e v i o u s s c r e e n i m
0100540 a g e a n d ( 3 ) t h e
0100560 r e g i o n o f { a r g W
0100600 I N D O W } ' s o l d i m a
0100620 g e w i t h i n t h e b i
0100640 t m a p . \r } } \r \r \r { F n D e
0100660 f { N a m e C L O S E W }
0100700 { A r g s W I N D O W } \r {
0100720 T e x t \r { f n C L O S E W }
0100740 c a l l s t h e f u n c t
0100760 i o n o r f u n c t i o n s
0101000 o n t h e w i n d o w p
0101020 r o p e r t y { l i s p C L
0101040 O S E F N } o f { a r g W
0101060 I N D O W } , i f a n y (
0101100 { P a g e R e f ( W i n d o w
0101120 P r o p e r t y ) C L O S E
0101140 F N } ) . I f o n e o f
0101160 t h e { l i s p C L O S E
0101200 F N } s i s t h e a t o m
0101220 { l i s p D O N ' T } o r
0101240 r e t u r n s t h e a t o
0101260 m { l i s p D O N ' T } a
0101300 s a v a l u e , { f n
0101320 C L O S E W } r e t u r n s
0101340 w i t h o u t d o i n g a n
0101360 y t h i n g f u r t h e r .
0101400 O t h e r w i s e , { f n
0101420 C L O S E W } r e m o v e s
0101440 { a r g W I N D O W } f r o
0101460 m t h e w i n d o w s t a
0101500 c k a n d r e s t o r e s
0101520 t h e b i t s i t i s o
0101540 b s c u r i n g . \r I f { a r
0101560 g W I N D O W } w a s c l
0101600 o s e d , { a r g W I N D O
0101620 W } i s r e t u r n e d a
0101640 s t h e v a l u e . \r I f
0101660 i t w a s n o t c l o s e
0101700 d , ( f o r e x a m p l e
0101720 b e c a u s e i t s { l i s
0101740 p C L O S E F N } r e t u r
0101760 n e d t h e a t o m { l i
0102000 s p D O N ' T } ) , { l i s
0102020 p N I L } i s r e t u r n
0102040 e d a s t h e v a l u e .
0102060 \r \r { a r g W I N D O W } c
0102100 a n b e r e s t o r e d i
0102120 n t h e s a m e p l a c e
0102140 w i t h t h e s a m e c
0102160 o n t e n t s ( r e o p e n e
0102200 d ) b y c a l l i n g { f
0102220 n O P E N W } o r b y u
0102240 s i n g i t a s t h e s
0102260 o u r c e o f a d i s p l
0102300 a y o p e r a t i o n . \r } }
0102320 \r \r \r { F n D e f { N a m e
0102340 O P E N W } { A r g s W I N
0102360 D O W } \r { T e x t \r I f {
0102400 a r g W I N D O W } i s a
0102420 c l o s e d w i n d o w ,
0102440 { f n O P E N W } c a l l s
0102460 t h e f u n c t i o n o r
0102500 f u n c t i o n s o n t h
0102520 e w i n d o w p r o p e r t
0102540 y { l i s p O P E N F N }
0102560 o f { a r g W I N D O W } ,
0102600 i f a n y ( { P a g e R e
0102620 f ( W i n d o w P r o p e r
0102640 t y ) O P E N F N } ) . I
0102660 f o n e o f t h e { l i
0102700 s p O P E N F N } s i s t
0102720 h e a t o m { l i s p D O
0102740 N ' T } , t h e w i n d o w
0102760 w i l l n o t b e o p e
0103000 n e d . O t h e r w i s e
0103020 t h e w i n d o w i s p l
0103040 a c e d o n t h e o c c l
0103060 u s i o n s t a c k o f w
0103100 i n d o w s a n d i t s c
0103120 o n t e n t s d i s p l a y e
0103140 d o n t h e s c r e e n .
0103160 I f { a r g W I N D O W
0103200 } i s a n o p e n w i n
0103220 d o w , i t r e t u r n s
0103240 { L I S P N I L } . \r } } \r
0103260 \r \r { n o t e L a r r y s a
0103300 y s : " u g h ! W h y n
0103320 o t j u s t ( M O V E W P
0103340 O S ) ? " \r b e c a u s e M O
0103360 V E P R O C , f o r e x a m
0103400 p l e , g a r b a g e c o l
0103420 l e c t s t o o m u c h i
0103440 f i t c r e a t e s a P
0103460 O S e v e r y m o v e -
0103500 r r b . } \r \r { F n D e f { N
0103520 a m e M O V E W } { A r g s
0103540 W I N D O W P O S o r X Y
0103560 } \r { T e x t \r M o v e s { a
0103600 r g W I N D O W } t o t h
0103620 e p o s i t i o n s p e c i
0103640 f i e d b y { a r g P O S
0103660 o r X } a n d { a r g Y }
0103700 a c c o r d i n g t o t h
0103720 e f o l l o w i n g r u l e
0103740 s : \r \r I f { a r g P O S o
0103760 r X } i s { l i s p N I L
0104000 } , { f n G E T B O X P O S
0104020 I T I O N } ( { P a g e R e f
0104040 F n G E T B O X P O S I T I
0104060 O N } ) i s c a l l e d t
0104100 o r e a d a p o s i t i o
0104120 n f r o m t h e u s e r .
0104140 I f { a r g W I N D O W
0104160 } h a s a { l i s p C A
0104200 L C U L A T E R E G I O N } { i
0104220 n d e x C A L C U L A T E R E
0104240 G I O N ( W i n d o w P r o
0104260 p e r t y ) } w i n d o w p
0104300 r o p e r t y , i t w i l l
0104320 b e c a l l e d w i t h
0104340 { a r g W I N D O W } a s
0104360 a n a r g u m e n t a n d
0104400 s h o u l d r e t u r n a
0104420 r e g i o n w h i c h w i l
0104440 l b e u s e d t o p r o
0104460 m p t t h e u s e r w i t
0104500 h . I f { a r g W I N D
0104520 O W } d o e s n o t h a v
0104540 e a { l i s p C A L C U L
0104560 A T E R E G I O N } w i n d o
0104600 w p r o p e r t y , t h e
0104620 r e g i o n o f { a r g W
0104640 I N D O W } i s u s e d t
0104660 o p r o m p t w i t h . \r \r
0104700 I f { a r g P O S o r X }
0104720 i s a { l i s p P O S I T
0104740 I O N } , { a r g P O S o r
0104760 X } i s u s e d . \r \r I f
0105000 { a r g P O S o r X } a n d
0105020 { a r g Y } a r e b o t
0105040 h { l i s p N U M B E R P }
0105060 , a p o s i t i o n i s
0105100 c r e a t e d u s i n g { a
0105120 r g P O S o r X } a s t h
0105140 e { l i s p X C O O R D }
0105160 a n d { a r g Y } a s t
0105200 h e { l i s p Y C O O R D }
0105220 . \r \r I f { a r g P O S o r
0105240 X } i s a { l i s p R E
0105260 G I O N } , a p o s i t i o
0105300 n i s c r e a t e d u s i
0105320 n g i t s { l i s p L E F
0105340 T } a s t h e { l i s p
0105360 X C O O R D } a n d { l i s
0105400 p B O T T O M } a s t h e
0105420 { l i s p Y C O O R D } . \r
0105440 \r I f { a r g W I N D O W }
0105460 i s n o t o p e n a n d
0105500 { a r g P O S o r X } i s
0105520 n o n - { l i s p N I L } ,
0105540 t h e w i n d o w w i l l
0105560 b e m o v e d w i t h o u
0105600 t b e i n g o p e n e d .
0105620 O t h e r w i s e , i t w
0105640 i l l b e o p e n e d . \r \r
0105660 I f { a r g W I N D O W }
0105700 h a s t h e a t o m { l i
0105720 s p D O N ' T } a s a {
0105740 l i s p M O V E F N } p r o
0105760 p e r t y ( { P a g e R e f
0106000 ( W i n d o w P r o p e r t y
0106020 ) M O V E F N } ) , t h e
0106040 w i n d o w w i l l n o t
0106060 b e m o v e d . I f { a
0106100 r g W I N D O W } h a s a
0106120 n y o t h e r n o n - { l i
0106140 s p N I L } v a l u e a s
0106160 a { l i s p M O V E F N }
0106200 p r o p e r t y , i t s h
0106220 o u l d b e a f u n c t i
0106240 o n o r l i s t o f f u
0106260 n c t i o n s t h a t w i l
0106300 l b e c a l l e d b e f o
0106320 r e t h e w i n d o w i s
0106340 m o v e d w i t h t h e
0106360 { a r g W I N D O W } a n d
0106400 t h e n e w p o s i t o n
0106420 a s i t s a r g u m e n t
0106440 s . I f i t r e t u r n
0106460 s t h e a t o m { l i s p
0106500 D O N ' T } , t h e w i n
0106520 d o w w i l l n o t b e
0106540 m o v e d . I f i t r e
0106560 t u r n s a p o s i t i o n
0106600 , t h e w i n d o w w i l
0106620 l b e m o v e d t o t h
0106640 a t p o s i t i o n i n s t
0106660 e a d o f t h e n e w o
0106700 n e . I f t h e r e a r
0106720 e m o r e t h a n o n e
0106740 { l i s p M O V E F N } s ,
0106760 t h e l a s t o n e t o
0107000 r e t u r n a v a l u e i
0107020 s t h e o n e t h a t d
0107040 e t e r m i n e s w h e r e
0107060 t h e w i n d o w i s m o
0107100 v e d t o . \r \r I f { a r g
0107120 W I N D O W } i s m o v e
0107140 d a n d { a r g W I N D O
0107160 W } h a s a w i n d o w
0107200 p r o p e r t y o f { l i s
0107220 p A F T E R M O V E F N } (
0107240 { P a g e R e f ( W i n d o w
0107260 P r o p e r t y ) A F T E R
0107300 M O V E F N } ) , i t s h o
0107320 u l d b e a f u n c t i o
0107340 n o r a l i s t o f f
0107360 u n c t i o n s t h a t w i
0107400 l l b e c a l l e d a f t
0107420 e r t h e w i n d o w i s
0107440 m o v e d w i t h { a r g
0107460 W I N D O W } a s a n a
0107500 r g u m e n t . \r \r { f n M O
0107520 V E W } r e t u r n s t h e
0107540 n e w p o s i t i o n , o
0107560 r { l i s p N I L } i f
0107600 t h e w i n d o w c o u l d
0107620 n o t b e m o v e d . \r }
0107640 } \r \r \r { F n D e f { N a m e
0107660 R E L M O V E W } { A r g s
0107700 W I N D O W P O S I T I O N
0107720 } \r { T e x t \r L i k e { f n
0107740 M O V E W } f o r m o v i
0107760 n g w i n d o w s b u t {
0110000 a r g P O S I T I O N } i s
0110020 i n t e r p r e t e d r e l
0110040 a t i v e t o t h e c u r
0110060 r e n t p o s i t i o n o f
0110100 { a r g W I N D O W } .
0110120 E x a m p l e : T h e f o
0110140 l l o w i n g c o d e m o v
0110160 e s { a r g W I N D O W }
0110200 t o t h e r i g h t o n e
0110220 s c r e e n p o i n t . \r \r
0110240 { l i s p c o d e ( R E L M O
0110260 V E W { a r g W I N D O W }
0110300 ( c r e a t e P O S I T I O
0110320 N X C O O R D _ 1 Y C O
0110340 O R D _ 0 ) ) } \r } } \r \r \r
0110360 { F n D e f { N a m e C L E
0110400 A R W } { A r g s W I N D O
0110420 W } \r { T e x t \r F i l l s {
0110440 a r g W I N D O W } w i t h
0110460 i t s b a c k g r o u n d
0110500 t e x t u r e , c h a n g e s
0110520 i t s c o o r d i n a t e
0110540 s y s t e m s o t h a t t
0110560 h e o r i g i n i s t h e
0110600 l o w e r l e f t c o r n
0110620 e r o f t h e w i n d o w
0110640 , s e t s i t s X p o s
0110660 i t i o n t o t h e l e f
0110700 t m a r g i n a n d s e t
0110720 s i t s Y p o s i t i o n
0110740 t o t h e b a s e l i n
0110760 e o f t h e u p p e r m o
0111000 s t l i n e o f t e x t ,
0111020 i e . t h e t o p o f
0111040 t h e w i n d o w l e s s
0111060 t h e f o n t a s c e n t .
0111100 \r } } \r \r \r { F n D e f { N a
0111120 m e B U R Y W } { A r g s
0111140 W I N D O W } \r { T e x t \r P
0111160 u t s { a r g W I N D O W }
0111200 o n t h e b o t t o m o
0111220 f t h e s t a c k b y m
0111240 o v i n g a l l t h e \r w i
0111260 n d o w s t h a t i t c o
0111300 v e r s i n f r o n t o f
0111320 i t . \r } } \r \r \r \r \r { F n D
0111340 e f { N a m e R E D I S P L
0111360 A Y W } { A r g s W I N D O
0111400 W R E G I O N A L W A Y S F
0111420 L G } \r { T e x t \r R e d i s
0111440 p l a y t h e r e g i o n
0111460 { a r g R E G I O N } o f
0111500 t h e w i n d o w { a r g
0111520 W I N D O W } . \r I f { a r g
0111540 R E G I O N } i s { l i s
0111560 p N I L } , t h e e n t i
0111600 r e w i n d o w i s r e d
0111620 i s p l a y e d . I f \r { a
0111640 r g A L W A Y S F L G } i s
0111660 { l i s p N I L } , a n d
0111700 { a r g W I N D O W } d o
0111720 e s n ' t h a v e a { l i
0111740 s p \r R E P A I N T F N } ( {
0111760 P a g e R e f ( W i n d o w
0112000 P r o p e r t y ) R E P A I N
0112020 T F N } ) , { a r g W I N D
0112040 O W } w i l l n o t c h a
0112060 n g e a n d t h e m e s s
0112100 a g e " T h a t w i n d o w
0112120 d o e s n ' t h a v e a
0112140 R E P A I N T F N " w i l l
0112160 b e p r i n t e d i n t h
0112200 e p r o m p t w i n d o w .
0112220 \r \r { n o t e w h a t w i l
0112240 l i t d o i f t h e r e
0112260 i s n o R E P A I N T F N
0112300 a n d A L W A Y S F L G = T
0112320 ? ? } \r } } \r \r \r { F n D e f
0112340 { N a m e S H R I N K W } {
0112360 A r g s W I N D O W T O W H
0112400 A T I C O N P O S I T I O N
0112420 E X P A N D F N } \r { T e x t \r
0112440 { f n S H R I N K W } m a k
0112460 e s a s m a l l i c o n
0112500 w h i c h r e p r e s e n t s
0112520 { a r g W I N D O W } a n
0112540 d r e m o v e s { a r g W
0112560 I N D O W } f r o m t h e
0112600 s c r e e n . I c o n s h
0112620 a v e a d i f f e r e n t
0112640 \r w i n d o w c o m m a n d
0112660 m e n u t h a t c o n t a i
0112700 n s " { l i s p E X P A N D
0112720 } " i n s t e a d o f \r "
0112740 { l i s p S H R I N K } " .
0112760 T h e { l i s p E X P A N D
0113000 } c o m m a n d c a l l s
0113020 { f n E X P A N D W } w h i
0113040 c h \r r e t u r n s t h e
0113060 s h r u n k e n w i n d o w
0113100 t o i t s o r i g i n a l
0113120 s i z e a n d p l a c e .
0113140 T h e i c o n c a n a l
0113160 s o b e e x p a n d e d b
0113200 y p r e s s i n g t h e {
0113220 l i s p M I D D L E } b u t
0113240 t o n i n i t . \r \r T h e
0113260 { l i s p S H R I N K F N }
0113300 p r o p e r t y ( { P a g e
0113320 R e f ( W i n d o w P r o p
0113340 e r t y ) S H R I N K F N } )
0113360 o f t h e w i n d o w {
0113400 a r g W I N D O W } a f f e
0113420 c t s t h e o p e r a t i o
0113440 n o f { f n S H R I N K W
0113460 } . I f t h e { l i s p
0113500 S H R I N K F N } p r o p e
0113520 r t y o f { a r g W I N D
0113540 O W } i s t h e a t o m
0113560 { l i s p D O N ' T } , { f
0113600 n S H R I N K W } r e t u r
0113620 n s . O t h e r w i s e ,
0113640 t h e { l i s p S H R I N K
0113660 F N } p r o p e r t y o f
0113700 t h e w i n d o w i s t r
0113720 e a t e d a s a ( l i s t
0113740 o f ) f u n c t i o n ( s )
0113760 t o a p p l y t o { a r
0114000 g W I N D O W } ; i f a n
0114020 y r e t u r n s t h e a t
0114040 o m { l i s p D O N ' T } ,
0114060 { f n S H R I N K W } r e
0114100 t u r n s . \r \r { a r g T O W
0114120 H A T } , i f g i v e n ,
0114140 i n d i c a t e s t h e i m
0114160 a g e t h e i c o n w i n
0114200 d o w w i l l h a v e .
0114220 I f { a r g T O W H A T }
0114240 i s a s t r i n g , a t o
0114260 m o r l i s t , t h e i
0114300 c o n ' s i m a g e w i l l
0114320 b e t h a t s t r i n g
0114340 ( c u r r e n t l y i m p l e
0114360 m e n t e d a s a t i t l
0114400 e - o n l y w i n d o w w i
0114420 t h { a r g T O W H A T }
0114440 a s t h e t i t l e . )
0114460 I f { a r g T O W H A T }
0114500 i s a { l i s p B I T M A
0114520 P } , t h e i c o n ' s i
0114540 m a g e w i l l b e a c
0114560 o p y o f t h e b i t m a
0114600 p . I f { A R G T O W H
0114620 A T } i s a { l i s p W
0114640 I N D O W } , t h a t w i n
0114660 d o w w i l l b e u s e d
0114700 a s t h e i c o n . \r \r \r
0114720 I f { a r g T O W H A T }
0114740 i s n o t g i v e n ( a s
0114760 i s t h e c a s e w h e
0115000 n i n v o k e d f r o m t
0115020 h e { l i s p S H R I N K }
0115040 w i n d o w c o m m a n d )
0115060 , t h e n t h e f o l l o
0115100 w i n g a p p l y i n t u
0115120 r n : ( 1 ) I f t h e
0115140 w i n d o w h a s a n {
0115160 l i s p I C O N F N } p r o
0115200 p e r t y ( { P a g e R e f
0115220 ( W i n d o w P r o p e r t y
0115240 ) I C O N F N } ) , i t g
0115260 e t s c a l l e d w i t h
0115300 a r g u m e n t s { l i s p
0115320 ( { a r g W I N D O W } { a
0115340 r g O L D I C O N } ) } , w
0115360 h e r e { a r g W I N D O W
0115400 } i s t h e w i n d o w
0115420 b e i n g s h r u n k a n d
0115440 { a r g O L D I C O N } i
0115460 s t h e p r e v i o u s l y
0115500 c r e a t e d i c o n , i
0115520 f a n y . T h e { l i s
0115540 p I C O N F N } s h o u l d
0115560 r e t u r n o n e o f t
0115600 h e { a r g T O W H A T }
0115620 e n t i t i e s d e s c r i b
0115640 e d a b o v e o r r e t u
0115660 r n t h e { a r g O L D I
0115700 C O N } i f i t d o e s
0115720 n o t w a n t t o c h a n
0115740 g e i t . ( 2 ) I f
0115760 t h e w i n d o w h a s a
0116000 n { l i s p I C O N } p r
0116020 o p e r t y ( { P a g e R e f
0116040 ( W i n d o w P r o p e r t
0116060 y ) I C O N } ) , i t i s
0116100 u s e d a s t h e v a l
0116120 u e o f { a r g T O W H A
0116140 T } . ( 3 ) I f t h e
0116160 w i n d o w h a s n e i t
0116200 h e r a n { l i s p I C O
0116220 N F N } o r { l i s p I C
0116240 O N } p r o p e r t y , t h
0116260 e i c o n w i l l b e {
0116300 a r g W I N D O W } ' s t i
0116320 t l e o r , i f { a r g
0116340 W I N D O W } d o e s n ' t
0116360 h a v e a t i t l e , t h
0116400 e d a t e a n d t i m e
0116420 o f t h e i c o n c r e a
0116440 t i o n . \r \r { a r g I C O N
0116460 P O S I T I O N } g i v e s
0116500 t h e p o s i t i o n t h a
0116520 t t h e n e w i c o n w
0116540 i l l b e o n t h e s c
0116560 r e e n . I f i t i s
0116600 { l i s p N I L } , t h e
0116620 i c o n w i l l b e i n
0116640 t h e c o r n e r o f t h
0116660 e w i n d o w f u r t h e s
0116700 t f r o m t h e c e n t e
0116720 r o f t h e s c r e e n .
0116740 \r \r I n a l l b u t t h e
0116760 d e f a u l t c a s e , t
0117000 h e i c o n i s c a c h e
0117020 d o n t h e p r o p e r t
0117040 y { l i s p I C O N W I N D
0117060 O W } ( { P a g e R e f ( W
0117100 i n d o w P r o p e r t y )
0117120 I C O N W I N D O W } ) o f
0117140 { a r g W I N D O W } s o
0117160 r e p e a t i n g { f n S H
0117200 R I N K W } r e u s e s t h
0117220 e s a m e i c o n ( u n l
0117240 e s s o v e r r i d d e n b
0117260 y t h e { l i s p I C O N
0117300 F N } d e s c r i b e d a b
0117320 o v e ) . T h u s t o c
0117340 h a n g e t h e i c o n i
0117360 t i s n e c e s s a r y t
0117400 o r e m o v e t h e { l i
0117420 s p I C O N W I N D O W } p
0117440 r o p e r t y o r c a l l
0117460 { f n S H R I N K W } e x p
0117500 l i c i t l y g i v i n g a
0117520 { a r g T O W H A T } a r
0117540 g u m e n t . \r } } \r \r \r { F n
0117560 d e f { n a m e E X P A N D
0117600 W } { a r g s I C O N } \r {
0117620 t e x t \r R e s t o r e s t h
0117640 e w i n d o w f o r w h i
0117660 c h { a r g I C O N } i s
0117700 a n i c o n , a n d r e
0117720 m o v e s t h e i c o n f
0117740 r o m t h e s c r e e n .
0117760 I f t h e { l i s p E X
0120000 P A N D F N } ( { P a g e R e
0120020 f ( W i n d o w P r o p e r
0120040 t y ) E X P A N D F N } ) w
0120060 i n d o w p r o p e r t y o
0120100 f t h e m a i n w i n d o
0120120 w i s t h e a t o m { l
0120140 i s p D O N ' T } , t h e
0120160 w i n d o w w o n ' t b e
0120200 e x p a n d e d . O t h e r
0120220 w i s e , t h e w i n d o w
0120240 w i l l b e r e s t o r e
0120260 d t o i t s o r i g i n a
0120300 l s i z e a n d l o c a t
0120320 i o n a n d t h e { l i s
0120340 p E X P A N D F N } ( o r
0120360 l i s t o f f u n c t i o n
0120400 s ) w i l l b e a p p l i
0120420 e d t o i t . \r } } \r \r \r {
0120440 F n d e f { n a m e I N V E
0120460 R T W } { a r g s W I N D O
0120500 W S H A D E } \r { t e x t \r F
0120520 i l l s t h e w i n d o w
0120540 { A R G W I N D O W } w i t
0120560 h a s h a d e i n I N V
0120600 E R T m o d e . I f S H
0120620 A D E i s { l i s p N I L
0120640 } , { L I S P B L A C K S H
0120660 A D E } i s u s e d . {
0120700 f n I N V E R T W } r e t u
0120720 r n { a r g W I N D O W }
0120740 s o t h a t i t c a n b
0120760 e u s e d i n s i d e { f
0121000 n R E S E T F O R M } . } \r \r
0121020 \r { F n d e f { n a m e F L
0121040 A S H W I N D O W } { a r g s
0121060 W I N ? N F L A S H I N T
0121100 E R V A L S H A D E } \r { t e
0121120 x t \r F l a s h e s a w i n
0121140 d o w b y f i l l i n g i
0121160 t w i t h a s h a d e .
0121200 { A R G W I N ? } i s t
0121220 h e w i n d o w t o f l a
0121240 s h . { a r g N } i s t
0121260 h e n u m b e r o f t i m
0121300 e s t o f l a s h t h e
0121320 w i n d o w a n d d e f a u
0121340 l t s t o 1 . { a r g
0121360 F L A S H I N T E R V A L } i
0121400 s t h e l e n g h t o f
0121420 t i m e i n m i l l i s e c
0121440 o n d s t o w a i t b e t
0121460 w e e n f l a s h e s a n d
0121500 d e f a u l t s t o 2 0 0
0121520 . { a r g S H A D E } i
0121540 s t h e s h a d e t h a t
0121560 w i l l b e f l a s h e d
0121600 a n d d e f a u l t s t o
0121620 { l i s p B L A C K S H A D
0121640 E } . \r } \r \r \r \r } { E n d S
0121660 u b S e c P r o g r a m m a t
0121700 i c W i n d o w O p e r a t
0121720 i o n s } \r \r \r \r { B e g i n
0121740 S u b S e c W i n d o w P r
0121760 o p e r t i e s } \r { T i t l e
0122000 W i n d o w P r o p e r t i
0122020 e s } \r { T e x t \r \r \r T h e
0122040 b e h a v i o r o f a w i
0122060 n d o w i s c o n t r o l l
0122100 e d b y a s e t o f {
0122120 t e r m w i n d o w p r o p
0122140 e r t i e s } . S o m e o
0122160 f t h e s e a r e u s e d
0122200 b y t h e s y s t e m .
0122220 H o w e v e r , a n y a r
0122240 b i t r a r y p r o p e r t y
0122260 n a m e m a y b e u s e
0122300 d b y a u s e r p r o g
0122320 r a m t o a s s o c i a t e
0122340 i n f o r m a t i o n w i t
0122360 h a w i n d o w . F o r
0122400 m a n y a p p l i c a t i o
0122420 n s t h e u s e r w i l l
0122440 a s s o c i a t e t h e s
0122460 t r u c t u r e b e i n g d
0122500 i s p l a y e d w i t h i t
0122520 s w i n d o w u s i n g a
0122540 p r o p e r t y . T h e
0122560 f o l l o w i n g f u n c t i
0122600 o n s p r o v i d e f o r
0122620 r e a d i n g a n d s e t t
0122640 i n g w i n d o w p r o p e
0122660 r t i e s : \r \r \r { F n D e f
0122700 { N a m e W I N D O W P R O P
0122720 } { A r g s W I N D O W P
0122740 R O P N E W V A L U E } \r { T
0122760 y p e n o s p r e a d } \r { T
0123000 e x t \r R e t u r n s t h e
0123020 p r e v i o u s v a l u e o
0123040 f { a r g W I N D O W } ' s
0123060 { a r g P R O P } a s p e
0123100 c t . I f { a r g N E W
0123120 V A L U E } i s g i v e n ,
0123140 ( e v e n i f g i v e n
0123160 a s { l i s p N I L } ) ,
0123200 i t i s s t o r e d a s
0123220 t h e n e w { a r g P R O
0123240 P } a s p e c t . S o m e
0123260 a s p e c t s c a n n o t
0123300 b e s e t b y t h e u s
0123320 e r a n d w i l l g e n e
0123340 r a t e e r r o r s . A n
0123360 y { a r g P R O P } n a m
0123400 e t h a t i s n o t r e
0123420 c o g n i z e d i s s t o r
0123440 e d o n a p r o p e r t y
0123460 l i s t a s s o c i a t e d
0123500 w i t h t h e w i n d o w
0123520 . \r } } \r \r \r { F n D e f { N
0123540 a m e W I N D O W A D D P R O
0123560 P } { a r g s W I N D O W
0123600 P R O P I T E M T O A D D F
0123620 I R S T F L G } \r { T e x t \r {
0123640 f n W I N D O W A D D P R O P
0123660 } a d d s a n e w i t e
0123700 m t o a w i n d o w p r
0123720 o p e r t y . I f { a r g
0123740 I T E M T O A D D } i s {
0123760 l i s p E Q } t o a n e
0124000 l e m e n t o f t h e { a
0124020 r g P R O P } p r o p e r t
0124040 y o f t h e w i n d o w
0124060 { a r g W I N D O W } , n o
0124100 t h i n g i s a d d e d .
0124120 I f t h e c u r r e n t
0124140 p r o p e r t y i s n o t
0124160 a l i s t , i t i s m a
0124200 d e a l i s t b e f o r e
0124220 { a r g I T E M T O A D D }
0124240 a d d e d . { f n W I N
0124260 D O W A D D P R O P } r e t u
0124300 r n s t h e p r e v i o u s
0124320 p r o p e r t y . I f {
0124340 a r g F I R S T F L G } i s
0124360 n o n - { l i s p N I L } ,
0124400 t h e n e w i t e m g o
0124420 e s o n t h e f r o n t
0124440 o f t h e l i s t ; o t h
0124460 e r w i s e , i t g o e s
0124500 o n t h e e n d o f t h
0124520 e l i s t . I f { a r g
0124540 F I R S T F L G } i s n o
0124560 n - { l i s p N I L } a n d
0124600 { a r g I T E M T O A D D }
0124620 i s a l r e a d y o n t
0124640 h e l i s t , i t i s m
0124660 o v e d t o t h e f r o n
0124700 t . ( N o t e : I f t h
0124720 e o r d e r o f i t e m s
0124740 i n t h e l i s t i s
0124760 i m p o r t a n t , t h e l
0125000 i s t c a n b e m o d i f
0125020 i e d u s i n g { f n W I
0125040 N D O W P R O P } . ) { f n
0125060 W I N D O W A D D P R O P }
0125100 i s u s e f u l f o r a d
0125120 d i n g { l i s p O P E N F
0125140 N } o r { l i s p C L O S
0125160 E F N } f u n c t i o n s t
0125200 o a w i n d o w w i t h o
0125220 u t a f f e c t i n g i t s
0125240 e x i s t i n g f u n c t i
0125260 o n s . \r } } \r \r \r { F n D e f
0125300 { N a m e W I N D O W D E L
0125320 P R O P } { a r g s W I N D
0125340 O W P R O P I T E M T O D E
0125360 L E T E } \r { T e x t \r { f n
0125400 W I N D O W D E L P R O P } d
0125420 e l e t e s { a r g I T E M
0125440 T O D E L E T E } f r o m t
0125460 h e w i n d o w p r o p e r
0125500 t y { a r g P R O P } o f
0125520 { a r g W I N D O W } a n
0125540 d r e t u r n s t h e p r
0125560 e v i o u s l i s t i f {
0125600 a r g I T E M T O D E L E T E
0125620 } w a s a n e l e m e n t
0125640 . I f { a r g I T E M T
0125660 O D E L E T E } w a s n o t
0125700 a m e m b e r o f w i n
0125720 d o w p r o p e r t y { a r
0125740 g P R O P } , { l i s p N
0125760 I L } i s r e t u r n e d .
0126000 \r } } \r \r \r { n o t e s h o u
0126020 l d h a v e v a r i a b l e
0126040 S Y S W I N D O W P R O P S
0126060 t h a t i s a l i s t o
0126100 f a l l w i n d o w p r o
0126120 p e r t i e s u s e d b y
0126140 t h e s y s t e m } \r \r \r \r {
0126160 B e g i n S u b S e c M o u
0126200 s e F u n c t i o n W i n d
0126220 o w P r o p e r t i e s } \r {
0126240 T i t l e M o u s e F u n c
0126260 t i o n W i n d o w P r o p
0126300 e r t i e s } \r { T e x t \r \r \r
0126320 T h e s e p r o p e r t i e s
0126340 a l l o w t h e u s e r
0126360 t o c o n t r o l t h e r
0126400 e s p o n s e t o m o u s e
0126420 a c t i v i t y i n a w
0126440 i n d o w . T h e v a l u
0126460 e o f t h e s e p r o p e
0126500 r t i e s , i f n o n - { l
0126520 i s p N I L } , s h o u l d
0126540 b e a f u n c t i o n \r t
0126560 h a t w i l l b e c a l l
0126600 e d ( w i t h t h e w i n
0126620 d o w a s a r g u m e n t )
0126640 w h e n t h e s p e c i f
0126660 i e d e v e n t \r o c c u r s
0126700 . \r \r N o t e : t h e s e f
0126720 u n c t i o n s s h o u l d
0126740 b e " s e l f - c o n t a i n
0126760 e d " , c o m m u n i c a t i
0127000 n g w i t h t h e o u t s
0127020 i d e w o r l d s o l e l y
0127040 v i a t h e i r w i n d o
0127060 w a r g u m e n t , e . g .
0127100 , b y s e t t i n g w i n
0127120 d o w p r o p e r t i e s .
0127140 I n p a r t i c u l a r ,
0127160 t h e s e f u n c t i o n s
0127200 s h o u l d n o t e x p e c
0127220 t t o a c c e s s v a r i
0127240 a b l e s b o u n d o n t
0127260 h e s t a c k , a s t h e
0127300 s t a c k c o n t e x t i
0127320 s f o r m a l l y u n d e f
0127340 i n e d a t t h e t i m e
0127360 t h e s e f u n c t i o n s
0127400 a r e c a l l e d . S i
0127420 n c e t h e f u n c t i o n
0127440 s a r e i n v o k e d a s
0127460 y n c h r o n o u s l y , t h
0127500 e y p e r f o r m a n y {
0127520 l i s p T T Y } i n p u t
0127540 o p e r a t i o n s f r o m
0127560 t h e i r o w n w i n d o w
0127600 . \r \r \r \r { D e f { T y p e
0127620 ( W i n d o w P r o p e r t y
0127640 ) } { N a m e W I N D O W E
0127660 N T R Y F N } \r { T e x t \r W h
0127700 e n e v e r a b u t t o n
0127720 g o e s d o w n i n t h e
0127740 w i n d o w a n d t h e
0127760 p r o c e s s a s s o c i a t
0130000 e d w i t h t h e w i n d
0130020 o w ( s t o r e d u n d e r
0130040 t h e { l i s p P R O C E
0130060 S S } p r o p e r t y ) i s
0130100 n o t t h e t t y p r o
0130120 c e s s , t h e { l i s p
0130140 W I N D O W E N T R Y F N } i
0130160 s c a l l e d . T h e d
0130200 e f a u l t i s { l i s p
0130220 G I V E . T T Y . P R O C E S S
0130240 } ( { P a g e R e f F n G
0130260 I V E . T T Y . P R O C E S S }
0130300 ) w h i c h g i v e s t h
0130320 e p r o c e s s a s s o c i
0130340 a t e d w i t h t h e w i
0130360 n d o w t h e t t y a n d
0130400 c a l l s t h e { l i s p
0130420 B U T T O N E V E N T F N } .
0130440 { l i s p W I N D O W E N
0130460 T R Y F N } c a n b e a
0130500 l i s t o f f u n c t i o n
0130520 s a n d a l l w i l l b
0130540 e c a l l e d . \r } } \r \r \r
0130560 { D e f { T y p e ( W i n d
0130600 o w P r o p e r t y ) } { N
0130620 a m e C U R S O R I N F N } \r
0130640 { T e x t \r W h e n e v e r t
0130660 h e m o u s e m o v e s i
0130700 n t o t h e w i n d o w ,
0130720 t h e { l i s p C U R S O R
0130740 I N F N } i s c a l l e d .
0130760 { l i s p C U R S O R I N
0131000 F N } c a n b e a l i s
0131020 t o f f u n c t i o n s a
0131040 n d a l l w i l l b e c
0131060 a l l e d . \r } } \r \r \r { D e f
0131100 { T y p e ( W i n d o w P
0131120 r o p e r t y ) } { N a m e
0131140 C U R S O R O U T F N } \r { T e
0131160 x t \r T h e { l i s p C U R
0131200 S O R O U T F N } i s c a l
0131220 l e d w h e n t h e c u r
0131240 s o r l e a v e s t h e w
0131260 i n d o w . { l i s p C U
0131300 R S O R O U T F N } c a n b
0131320 e a l i s t o f f u n c
0131340 t i o n s a n d a l l w i
0131360 l l b e c a l l e d . \r } }
0131400 \r \r \r { D e f { T y p e ( W
0131420 i n d o w P r o p e r t y ) }
0131440 { N a m e C U R S O R M O V
0131460 E D F N } \r { T e x t \r T h e
0131500 { l i s p C U R S O R M O V E
0131520 D F N } i s c a l l e d w
0131540 h e n e v e r t h e c u r s
0131560 o r h a s m o v e d a n d
0131600 i s i n s i d e t h e w
0131620 i n d o w . { l i s p C U
0131640 R S O R M O V E D F N } c a n
0131660 b e a l i s t o f f u
0131700 n c t i o n s a n d a l l
0131720 w i l l b e c a l l e d .
0131740 T h i s a l l o w s a w
0131760 i n d o w f u n c t i o n t
0132000 o i m p l e m e n t " a c t
0132020 i v e " r e g i o n s w i t
0132040 h i n i t s e l f b y h a
0132060 v i n g i t s { l i s p C
0132100 U R S O R M O V E D F N } d e
0132120 t e r m i n e i f t h e c
0132140 u r s o r i s i n a r e
0132160 g i o n o f i n t e r e s t
0132200 , a n d i f s o , p e r
0132220 f o r m s o m e a c t i o n
0132240 . \r } } \r \r \r { D e f { T y p
0132260 e ( W i n d o w P r o p e r
0132300 t y ) } { N a m e B U T T O
0132320 N E V E N T F N } \r { T e x t \r
0132340 T h e { l i s p B U T T O N
0132360 E V E N T F N } i s c a l l
0132400 e d w h e n e v e r t h e r
0132420 e i s a c h a n g e i n
0132440 t h e s t a t e ( u p o
0132460 r d o w n ) o f t h e m
0132500 o u s e b u t t o n s i n s
0132520 i d e t h e w i n d o w .
0132540 C h a n g e s t o t h e
0132560 m o u s e s t a t e w h i l
0132600 e t h e { l i s p B U T T
0132620 O N E V E N T F N } i s r u
0132640 n n i n g w i l l n o t b
0132660 e i n t e r p r e t e d a s
0132700 n e w b u t t o n e v e n
0132720 t s , a n d t h e { l i s
0132740 p B U T T O N E V E N T F N }
0132760 w i l l n o t b e r e -
0133000 i n v o k e d . \r } } \r \r \r { D
0133020 e f { T y p e ( W i n d o w
0133040 P r o p e r t y ) } { N a m
0133060 e R I G H T B U T T O N F N }
0133100 \r { T e x t \r T h e { l i s p
0133120 R I G H T B U T T O N F N }
0133140 i s c a l l e d i n l i e
0133160 u o f t h e s t a n d a r
0133200 d w i n d o w m e n u o p
0133220 e r a t i o n { l i s p ( D
0133240 O W I N D O W C O M ) } w h e
0133260 n t h e { l i s p R I G H
0133300 T } k e y i s d e p r e s
0133320 s e d i n a w i n d o w .
0133340 M o r e s p e c i f i c a
0133360 l l y , t h e { l i s p R
0133400 I G H T B U T T O N F N } i s
0133420 c a l l e d i n s t e a d
0133440 o f t h e { l i s p B U T
0133460 T O N E V E N T F N } w h e n
0133500 { l i s p ( M O U S E S T A
0133520 T E ( O N L Y R I G H T ) )
0133540 } . I f t h e { l i s p
0133560 R I G H T } k e y i s t
0133600 o b e t r e a t e d l i k
0133620 e a n y o t h e r k e y
0133640 i n a w i n d o w , s u p
0133660 p l y { l i s p R I G H T B
0133700 U T T O N F N } a n d { l i
0133720 s p B U T T O N E V E N T F N
0133740 } w i t h t h e s a m e
0133760 f u n c t i o n . \r \r N o t e :
0134000 W h e n a n a p p l i c
0134020 a t i o n p r o g r a m d e
0134040 f i n e s i t s o w n { l
0134060 i s p R I G H T B U T T O N F
0134100 N } , t h e r e i s a c
0134120 o n v e n t i o n t h a t t
0134140 h e d e f a u l t { l i s p
0134160 R I G H T B U T T O N F N } ,
0134200 { f n D O W I N D O W C O M
0134220 } ( { P a g e R e f F n D
0134240 O W I N D O W C O M } ) , m a
0134260 y b e e x e c u t e d b y
0134300 d e p r e s s i n g t h e
0134320 { l i s p R I G H T } k e y
0134340 w h e n t h e c u r s o r
0134360 i s i n t h e h e a d e
0134400 r o r b o r d e r o f a
0134420 w i n d o w . U s e r p
0134440 r o g r a m s a r e e n c o
0134460 u r a g e d t o f o l l o w
0134500 t h i s c o n v e n t i o n
0134520 . \r } } \r \r \r } { E n d S u b
0134540 S e c M o u s e F u n c t i
0134560 o n W i n d o w P r o p e r
0134600 t i e s } \r \r \r \r \r { B e g i n
0134620 S u b S e c E v e n t W
0134640 i n d o w P r o p e r t i e s
0134660 } \r { T i t l e E v e n t W
0134700 i n d o w P r o p e r t i e s
0134720 } \r { T e x t \r \r \r { D e f {
0134740 T y p e ( W i n d o w P r o
0134760 p e r t y ) } { N a m e C L
0135000 O S E F N } \r { T e x t \r T h e
0135020 { l i s p C L O S E F N }
0135040 w i n d o w p r o p e r t y
0135060 c a n b e a s i n g l e
0135100 f u n c t i o n o r a l i
0135120 s t o f f u n c t i o n s
0135140 t h a t a r e c a l l e d
0135160 j u s t b e f o r e a w i
0135200 n d o w i s c l o s e d b
0135220 y { f n C L O S E W } ( {
0135240 P a g e R e f F n C L O S E
0135260 W } ) . ( N o t e : I f
0135300 t h e { l i s p C A R } o
0135320 f t h e l i s t i s a
0135340 { l i s p L A M B D A } w o
0135360 r d , i t i s t r e a t e
0135400 d a s a s i n g l e f u
0135420 n c t i o n . ) T h e f u
0135440 n c t i o n ( s ) w i l l b
0135460 e c a l l e d w i t h t h
0135500 e w i n d o w a s a s i
0135520 n g l e a r g u m e n t .
0135540 I f a n y o f t h e { l
0135560 i s p C L O S E F N } s a r
0135600 e t h e a t o m { l i s p
0135620 D O N ' T } , o r i f t
0135640 h e v a l u e r e t u r n e
0135660 d b y a n y o f t h e
0135700 { l i s p C L O S E F N } s
0135720 i s t h e a t o m { l i s
0135740 p D O N ' T } , t h e w i
0135760 n d o w w i l l n o t b e
0136000 c l o s e d . \r \r N o t e :
0136020 A { l i s p C L O S E F N
0136040 } s h o u l d n o t c a l
0136060 l { f n C L O S E W } o n
0136100 i t s a r g u m e n t . \r }
0136120 } \r \r \r { D e f { T y p e (
0136140 W i n d o w P r o p e r t y )
0136160 } { N a m e O P E N F N } \r
0136200 { T e x t \r T h e { l i s p
0136220 O P E N F N } w i n d o w p
0136240 r o p e r t y c a n b e a
0136260 s i n g l e f u n c t i o n
0136300 o r a l i s t o f f u
0136320 n c t i o n s . I f o n e
0136340 o f t h e { l i s p O P
0136360 E N F N } s i s t h e a t
0136400 o m { l i s p D O N ' T } ,
0136420 t h e w i n d o w w i l l
0136440 n o t b e o p e n e d .
0136460 O t h e r w i s e , t h e
0136500 { l i s p O P E N F N } s a
0136520 r e c a l l e d a f t e r
0136540 a w i n d o w h a s b e e
0136560 n o p e n e d b y { f n
0136600 O P E N W } ( { P a g e R e f
0136620 F n O P E N W } ) , w i t
0136640 h t h e w i n d o w a s
0136660 a s i n g l e a r g u m e n
0136700 t . \r } } \r \r \r { n o t e O P
0136720 E N F N a n d C L O S E F N
0136740 s e e m g r a t u i t o u s
0136760 l y a s y m m e t r i c : t
0137000 h e V A L U E S o f C L O
0137020 S E F N s a r e s c a n n e
0137040 d f o r t h e v a l u e
0137060 D O N ' T , b u t y o u h
0137100 a v e t o h a v e t h e
0137120 a t o m D O N ' T a s a n
0137140 O P E N F N ( y o u c a n
0137160 ' t c o m p u t e i t )
0137200 T h e p r o b l e m i s t
0137220 h a t s o m e O P E N F N s
0137240 m i g h t w a n t t o h
0137260 a c k t h e o p e n w i n
0137300 d o w . H m m m . . . } \r \r
0137320 \r { D e f { T y p e ( W i n
0137340 d o w P r o p e r t y ) } {
0137360 N a m e T O T O P F N } \r { T
0137400 e x t \r I f n o n - { l i s p
0137420 N I L } , w h e n e v e r
0137440 t h e w i n d o w i s b r
0137460 o u g h t t o t h e t o p
0137500 , t h e { l i s p T O T O
0137520 P F N } i s c a l l e d (
0137540 w i t h t h e w i n d o w
0137560 a s a s i n g l e a r g u
0137600 m e n t ) . T h i s f u n
0137620 c t i o n m a y b e u s e
0137640 d t o b r i n g a c o l
0137660 l e c t i o n o f w i n d o
0137700 w s t o t h e t o p t o
0137720 g e t h e r . \r \r I f t h e
0137740 { a r g N O C A L L T O P W F
0137760 N } a r g u m e n t o f {
0140000 f n T O T O P W } ( { P a g
0140020 e R e f F n T O T O P W } )
0140040 i s n o n - { l i s p N I
0140060 L } , t h e { l i s p T O
0140100 T O P F N } o f t h e w i
0140120 n d o w i s n o t c a l l
0140140 e d , w h i c h p r o v i d
0140160 e s a w a y o f a v o i
0140200 d i n g i n f i n i t e l o
0140220 o p s w h e n u s i n g {
0140240 f n T O T O P W } f r o m
0140260 w i t h i n a { l i s p T
0140300 O T O P F N } . \r } } \r \r \r { D
0140320 e f { T y p e ( W i n d o w
0140340 P r o p e r t y ) } { N a m
0140360 e S H R I N K F N } \r { T e x
0140400 t \r T h e { l i s p S H R I
0140420 N K F N } w i n d o w p r o
0140440 p e r t y c a n b e a s
0140460 i n g l e f u n c t i o n o
0140500 r a l i s t o f f u n c
0140520 t i o n s t h a t a r e c
0140540 a l l e d j u s t b e f o r
0140560 e a w i n d o w i s s h
0140600 r u n k e n b y { f n S H
0140620 R I N K W } ( { P a g e R e f
0140640 F n S H R I N K W } ) , w
0140660 i t h t h e w i n d o w a
0140700 s a s i n g l e a r g u m
0140720 e n t . I f a n y o f
0140740 t h e { l i s p S H R I N K
0140760 F N } s a r e t h e a t o
0141000 m { l i s p D O N ' T } ,
0141020 o r i f t h e v a l u e
0141040 r e t u r n e d b y a n y
0141060 o f t h e { l i s p S H R
0141100 I N K F N } s i s t h e a
0141120 t o m { l i s p D O N ' T }
0141140 , t h e w i n d o w w i l
0141160 l n o t b e s h r u n k .
0141200 \r } } \r \r \r { D e f { T y p e
0141220 ( W i n d o w P r o p e r t
0141240 y ) } { N a m e I C O N F N
0141260 } \r { T e x t \r I f { f n S
0141300 H R I N K W } ( { P a g e R e
0141320 f F n S H R I N K W } ) i
0141340 s c a l l e d w i t h o u t
0141360 b e g i n g i v e n a {
0141400 a r g T O W H A T } a r g u
0141420 m e n t ( a s i s t h e
0141440 c a s e w h e n i n v o k e
0141460 d f r o m t h e { l i s p
0141500 S H R I N K } w i n d o w
0141520