$ 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