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