ATTACHEDWINDOWAnInterlisp-DpackageformanipulatingwindowsingroupsWrittenby:RichardR.BurtonLastmodified:April12,1984,vanMelleLocatedon:Library>ATTACHEDWINDOW.DCOMIntroductionATTACHEDWINDOWisapackagedesignedtomakeiteasytomanipulateagroupofwindowasaunit.StandardoperationslikeMOVE,RESHAPE,OPENandCLOSEcanbedonesothatitappearstotheuserasifthewindowsareasingleentity.Eachcollectionofattachedwindowshasonemainwindowandanynumberofotherwindowsthatare"attached"toit.Movingorreshapingthemainwindowcausesalloftheattachedwindowstobemovedorreshapedaswell.Movingorreshapinganattachedwindowdoesnotaffectthemainwindow.Theinitialmotivationforattachedwindowswastoallowmultiplemenustobeassociatedwiththesamewindowbutthereisnorestrictiononwhatwindowscanbeattached.(ATTACHWINDOWWINDOWTOATTACHMAINWINDOWEDGEPOSITIONONEDGEWINDOWCOMACTION)AssociatesWINDOWTOATTACHwithMAINWINDOWsothatshape,move,close,shrinkandexpandoperationsdonetoMAINWINDOWarealsodonetoWINDOWTOATTACH.ATTACHWINDOWmovesWINDOWTOATTACHtoitspositionrelativetoMAINWINDOWbutdoesnotopenit.EDGEandPOSITIONONEDGEindicatewhereWINDOWTOATTACHistobepositioned.TheargumentEDGEdetermineswhichedge:TOP,BOTTOM,LEFT,orRIGHT.Thedefault,usedifEDGEisNIL,isTOP.TheargumentPOSITIONONEDGEdetermineswherealongedgethewindowispositioned:JUSTIFYmeansthattheattachedwindowistofilltheentireedge.ATTACHWINDOWreshapesthewindowifnecessary;LEFTorRIGHTfortheleftorright(foraTOPorBOTTOMedge);BOTTOMorTOPforthebottomortop(ofaLEFTorRIGHTedge);CENTERforthecenteroftheedge.ThedefaultforPOSITIONONEDGEisJUSTIFY.ThesizethatisfilledbythejustificationincludestheextentofanyotherwindowsthathavealreadybeenattachedtoMAINWINDOW.Thus(ATTACHWINDOWAMW'RIGHT'JUSTIFY)followedby(ATTACHWINDOWBMW'TOP'JUSTIFY)willputBacrossthetopofbothMWandA.WINDOWCOMACTIONprovidesaconvenientwayofsettingthewaytheattachedwindowrespondstorightbuttoning.IfWINDOWCOMACTIONisMAIN,theDOWINDOWCOMFNofWINDOWTOATTACHissettoDOMAINWINDOWCOMFN.IfWINDOWCOMACTIONisHERE,theDOWINDOWCOMFNofWINDOWTOATTACHisnotchanged.IfWINDOWCOMACTIONisLOCALCLOSE,theDOWINDOWCOMFNofWINDOWTOATTACHissettoDOATTACHEDWINDOWCOM2.Otherwise,theDOWINDOWCOMFNofWINDOWTOATTACHissettoDOATTACHEDWINDOWCOM.Thesefunctionsaredescribedbelowinthesectionon"attachedwindowmenucommands."(DETACHWINDOWWINDOWTODETACH)DetachesWINDOWTODETACHfromitsmainwindow.ReturnsadottedpairwhoseCARisEDGEandwhoseCDRisPOSITIONONEDGEifWINDOWTODETACHwasanattachedwindow.ReturnsNILotherwise.ThisdoesnotcloseWINDOWTODETACH.BehavioronstandardwindowoperationsWhenawindowoperation,suchasmovingorclearing,isperformedonawindow,thereisaquestionaboutp c/!bq 3_brb3eb_s, " ')* 1Q68OBEtJJDC@ ~C@uC@ #C@sC@$z&),..C@uC@ :$C@sC@:;t;tC@rC@ EC@sC@FJJC@Au sAsAK$(*2*2AuA 2AsA25P8Q:=?A>u >s>f>u> >s> %))>u> 5Y>s>568{:B AArDJJ>=+u =+s=+o P:!!=+r=+$\=+s=+%%=+r=+*#=+s=+**=+r=+.<=+s=+.00=+r=+4=+s=+558=@AA=+r=+E5=+s=+EFF=+r=+Ii=+s=+JJ=+;|;|r;|;|s;|RSLL;|u;| ';|s;|(0 /26|9;@A H;|[8r<8s8Q!&+-.026~9:K:K8r8 D_8s8DJJ8[7 7[4Dr4Ds4D4Dr4D4Ds4D0? p"$L'n)**4Dr4D-x4Ds4D-/f/f4Dr4D4p4Ds4D484D[1{re1{s1{SS1{r1{1{s1{0? p%&(*++1{r1{/@1{s1{/1.1.1{r1{5a1{s1{59k1{r1{9q1{[.e.s.!|#&.++u+ #+s+#%1%1+r+++s++o+)  "I )/L167:>PDGJJ) 'zF'zu'z 'T'zs'z((++'zr'z 79<7B1I'zs'zJJ'z%a@@%r% #$'f+39%s%36-89=@ BdCG JJ%$i$!\uX!\s!\"7#I *%,.257:?vDJJ!\&  #8#8u/s1Z33r7Fs9H;!r=J H5sHJJu ssC a"Y"Yr0s124e4eu@sACcCcrFsGJJXr XsX9XuX *lXsX+.-1839< < XuXHXsXHJJXr Fs,,r &s&q''u 3s35+788rIjsJJqJq r $ys%<'2'2u 2s35179u9urIjsJJqJqK}!%w&)(-/k5d:^> ExK r u "[r#8su !ks!%E'*/0|56;=AArDsEFdFdrIsJJGGrGBGsG//GrG &GsG'u((GuG 4GsG579?DEJJGres  cMN!$$u 0zr1W Dq$ . Dr D. D Ps JY$&X+-356;?S@AGJJP q?[Xwhetherornotthatoperationalsobeperformedonthewindowsattachedtoitorperformedonthewindowitisattachedto.Thefollowingarethedefaultbehaviorsofmainandattachedwindowsunderthewindowoperationswheninvokedprogrammatically,e.g.,fromthefunctionsMOVEW,SHAPEW,etc.ThebehaviorwhenanoperationisinvokedfromthewindowmenudependsontheWINDOWCOMACTIONargumenttoATTACHWINDOW,orultimatelythewindow'sDOWINDOWCOMFNproperty.Mentionof"menu"belowassumesthatthewindowwasattachedusingthedefault(NIL)WINDOWCOMACTION.Thebehaviorforanyparticularoperationcan,ofcourse,bechangedforparticularwindowsbysettingthestandardwindowproperties(e.g.,MOVEFNorCLOSEFN)oftheparticularattachedwindow.Move:Ifthemainwindowmoves,allattachedwindowsmovewithit,andtherelativepositioningbetweenthemainwindowandtheattachedwindowsismaintained.Iftheregionisdeterminedinteractively,thepromptregionforthemoveistheunionoftheextentofthemainwindowandallattachedwindows.MOVEWmovesanattachedwindowwithoutaffectingthemainwindow.TheMovecommandinthewindowmenuisbydefaultpassedontothemainwindow,sothatallwindowsinthegroupmove.Reshape:Ifthemainwindowisreshaped,theminimumsizeofitandallofitsattachedwindowsisusedastheminimumofthespacefortheresult.Anyspacegreaterthantheminimumisdistributedamongthemainwindowanditsattachedwindows.SHAPEWreshapesanattachedwindowindependently.TheShapecommandinthewindowmenuisbydefaultpassedontothemainwindow.Close:Ifthemainwindowisclosed,alloftheattachedwindowsareclosedalsoandthelinksfromtheattachedwindowstothemainwindowarebroken.Thisisnecessaryforthewindowstobegarbagecollected.CLOSEWclosesanattachedwindowwithoutaffectingthemainwindow.Closeinthewindowmenuisbydefaultpassedontothemainwindow.IfWINDOWCOMACTIONofLOCALCLOSEwasspecifiedinthecalltoATTACHWINDOW,themenuCloseoperatesindependently.Notethatclosinganattachedwindowdoesnotdetachit.Open:Ifthemainwindowisopened,itopensallattachedwindowsandreestablisheslinksfromthemtothemainwindow.Attachedwindowscanbeopenedindependentlyandthisdoesnotaffectthemainwindow.Shrink:Thecollectionofwindowsshrinksasagroup.TheSHRINKFNsoftheattachedwindowsareevaluatedbuttheonlyicondisplayedistheoneforthemainwindow.{Howdoesthesystemknowthattheattachedwindowsareshrunkenratherthanclosed?Itdoesn't.Doesthismakeanydifference?}Redisplay:Themainorattachedwindowscanberedisplayedindependently.Totop:Ifanymainorattachedwindowisbroughttothetop,alloftheotherwindowsarebroughttothetopalso.Expand:Expandinganyofthewindowsexpandsthewholecollection.Scrolling:Allofthewindowsinvolvedinthegroupscrollindependently.Clear:Allwindowsclearindependentlyofeachother.AttachedwindowmenucommandsThequestionofhowtohandlethewindowcommandmenuofanyparticularwindow(eitherbyright c8 asQ!')+1_68<9n;ACEJJa `9 ' z1 "d&-.2 4:?CEJJ`9 ^ d%'*-22^r^7^s^77^r^<^s^=?^ [ Y f%(+J0h4>9;==[u[Ji[s[JJ[ Z$rrZ$rZ$ Z$sZ$= %&'^-<-N>DEJJZ$ Xu +%t(+/0XurXu2XusXu3e3eXuuXu?XusXu@:Xu U It  $2'(-</4u6 <BWDAHJJU TTN TrT#TsT$ %%TrT+TsT,h-0$ 6&;o@nT Q=vCQ=sQ=w ]]!&,i/24v79<= DJJQ=Ovo!'-/X 7+8 9<A<C JJOvM "$'*+.+1359;C=y@EHWJJML*)L*IjrIjsIj ,%N*O/2D5;4;>BiHJJIjG4R({#'p)k+-d06K8:<BNCFFJJGFuF CUvCUsCUQ#&8,g.014K679d>DAEHJJCUAR # %{)*G-\1#59;zAC\ JJA?6g!8"(--?=(r=(s=(Q!& 0)03J7M=?A]FfJJ=(;ycq!"$p)o;y 8v+8s8# yw!#%'-Y25L9q<6>A@DGJJ86+-a!&(-. 0268:-<`ACbE'JJ65L m5L2r2s2xx &6+L03l6<=@BEJJ20s!#H%(._.0;0;0u0<0s0=">>0r0 G+0s0GJJ0/./.r/. (/.s/.),60<4*9 C3CGzJJ/.-J V P#Q#Q-w-%.-s-%)*- *v*s*x6"2#u'X)5.446 >AE>HJJ*(_^(&% f)# ,/-146:<@E&% #ev#es#ez^ _!%'(-:-00#er#e7j#es#e8:H<B9GJJ#e!5k[ 4&&'i),".70m39<@B8FJJ!E #)2-Z05q67<=xACGJJR R vsdeI$&m(0 /E 8 vzs_5'#5$)+6-|0.2359l>A9FSGJJ& *vT*s*%}:8i"(*@. 4r45"5(* Iv9IsI bA"&#%)-! 5I hvhsh  "x$'*yh q5Qx( r ( s Qm4!I&-025 ;AEGJJ P q?[buttoningorbyacalltothefunctionDOWINDOWCOM)ishandledbythewindow'sDOWINDOWCOMFNproperty.TheWINDOWCOMACTIONargumenttoATTACHWINDOWselectsoneofthefollowingthreefunctionstobetheattachedwindow'sDOWINDOWCOMFNproperty,orleavesthepropertyNILifWINDOWCOMACTIONisHERE,meaningtousethestandardwindowcommandmenu,ignorantofthewindow'sattachments.TheprogrammercaninsteadsupplyherownDOWINDOWCOMFNpropertyifsomeotherbehaviorisdesired.(DOATTACHEDWINDOWCOMATTACHEDWLOCALCLOSEFLG)Thedefault(whenWINDOWCOMACTIONisNIL).Bringsupthewindowcommandmenuandthen,dependinguponthecommandselected,eitherpassesthecommandtothemainwindowofATTACHEDWorperformsitonATTACHEDW.IfLOCALCLOSEFLGisnon-NIL,theCLOSEcommandisappliedtoATTACHEDW.Otherwise,theCLOSEcommandispassedtothemainwindow.ThecommandsMOVE,RESHAPE,SHRINKandBURYarepassedtothemainwindow.TheothercommandsareperformedonATTACHEDW.(DOATTACHEDWINDOWCOM2ATTACHEDW)UsedwhenWINDOWCOMACTIONisLOCALCLOSE.Performs(DOATTACHEDWINDOWCOMATTACHEDWT)sothatthecommandCLOSEisperformedonATTACHEDW.(DOMAINWINDOWCOMFNATTACHEDW)UsedwhenWINDOWCOMACTIONisMAIN.PerformsDOWINDOWCOMonthewindowthatistheMAINWINDOWpropertyofATTACHEDW.Inotherwords,assumingtheDOWINDOWCOMFNofthemainwindowhasn'tbeenchanged,thispassesallwindowcommandsontothemainwindow.AttachingmenustowindowsATTACHEDWINDOWsupersedestheMENUEDWINDOWpackageandusersofitareencouragedtoconverttheircode.Thefollowingfunctionsareprovidedtoassociatemenustowindows.(ATTACHMENUMENUMAINWINDOWEDGEPOSITIONONEDGE)CreatesawindowthatcontainsthemenuMENU(bycallingMENUWINDOW,seebelow)andattachesittothewindowMAINWINDOWonedgeEDGEatpositionPOSITIONONEDGE.(MENUWINDOWMENUVERTFLG)ReturnsaclosedwindowthathasthemenuMENUinit.IfMENUisalist,amenuiscreatedwithMENUasitsitems.Otherwise,MENUshouldbeamenu.ThereturnedwindowhastheappropriateRESHAPEFN,MINSIZEandMAXSIZEwindowpropertiestoallowitsuseinawindowgroup.VERTFLGisprovidedtoallowconvenientsettingofthedefaultmenushapeandwillonlybeconsideredifboththeMENUROWSandMENUCOLUMNSfieldsofMENUareNIL.IfVERTFLGisnon-NIL,theMENUROWSfieldofMENUwillbesetto1;otherwisetheMENUCOLUMNSfieldofMENUwillbesetto1.(CREATEMENUEDWINDOWMENUWINDOWTITLELOCATIONWINDOWSPEC)Createsawindowwithanattachedmenuandreturnsthemainwindow.MENUistheonlyrequiredargument,andmaybeamenuoralistofmenuitems.WINDOWTITLEisastringspecifyingthetitleofthemainwindow.LOCATIONspecifiestheedgeonwhichtoplacethemenu,aswithATTACHWINDOW'sEDGEargument;thedefaultisTOP.WINDOWSPECisaREGION,specifyingaregionfortheaggregatewindow;ifNIL,theuserispromptedforaregion.ThisfunctionissimilartoMENUEDWINDOW'sfunctionMAKEMENUEDWINDOW.However,notethatitisnotanexactreplacement.Inparticular,theMENUWINDOWpropertyisnotused.Examples: c8 asU>_]0#O#Oara ,asa-/A469U?~?~ara JiasaJJa `0`0u`0![`0s`0"({*c*c`0r`0 4w`0s`0579<>A#GhJJ`0 ^Ro$$^r^ /^s^0729e=@FF^r^I7^s^IJJ^ \ub\s\\r\\s\#%(d*06<AFHJJ\ [# N! #&++/255[#r[# ?[#s[#@oFG]JJ[# YtY\bYt VrVuV$G .QVrV/.VTsTuT'~TsT'))TrT+TsT,-"1B3)5\:X@D>FJJTRpF#)-2!4;V=@?CHJJRpPuTPsP-D p"$r$rPuP+PsP--//PuP 9PsP:BDOFJJOMl[MlrMl"MlsMl##MlrMl)MlsMl*~*~MlrMl/MlsMl0 22MlrMl6MlsMl68=K>APDJJqJqMlK%c';';KuK.KsK/KrK/ K HddHuH$HrH%HsH%HF+66F+uF+$F+sF+%''F+rF+ 0F+sF+1{288F+rF+JJF+D|uTD|rD|+D|sD|1f &&D|rD|*D|sD|+Q,3!44D|uD|v-->u>#>s>$/%%>r>(>s>)*d0K0K>r> 9>s>:<>}CFxGJJ>=;r F=;s=;S  =;u=;'x=;s=;(M(*.)28v::=;r=; E=;s=;F6GJJ=;;.()$'1+%,18:k;>AjFc;r;Fi; 88q#88r88#88 5D 5Ds5D 5Dr5D *5Ds5D*_/u25X68:A AgBGJJ5D 3XY7($&G+/1p63 1 r 1 u1  !$ /1 r1 0a1 .@sI"$(p(p.@u.@+.@s.@,X.22.@r.@ ;D.@s.@;>'BEJJ.@,,u, "',s,"$W'o'o,u,*,s,*,\1j1j,u, ;,s,k@B JJ%#ro#s#^^#r#?#s#!!#r#'#s#(-P 359I;5=?z@EJJpJp#"Au*"As"AdU'" * .0o27;?BEkHUJJ"A 5y r $ s %*'' r 1( s 15t7777 u : s ;Q== r @4 s AAC8C8 u H s HJJ r$s wwr/s"$$u(Hs(+-/1k3%9U;;r DsEHJJ=uj=s==o|= ru (~. 7r7sD$(A*/O14:":{:{u>s>^?ADJJB2WU"#$&(8+/00BuB 8BsB9!:`;^? EJG|JJBG u$s%+|.!138J:>>@E9G.JJr sNNuxs%',--r0js1>11u 9s:q;<<rBsB IJJG3!#$$GrG'LGsG'*-,.64Z6i7f;~G~"iOO~r~ )c~s~*//~r~=`~s~>>yDGyJJ~ FO !!# ),, r 4z s 4:;;y=@   R q?[(SETQMENUW(MENUWINDOW(createMENUITEMS_'(smallerLARGER)MENUFONT_'(GACHA12)TITLE_"zoomcontrols"CENTERFLG_TWHENSELECTEDFN_(FUNCTIONZOOMMAINWINDOW))))createsamenuwindowthatcontainsthetwoitems"smaller"and"LARGER"withthetitle"zoomcontrols"andthatcallsthefunctionZOOMMAINWINDOWwhenanitemisselected.(ATTACHWINDOWMENUW(CREATEW'(5050150150))'TOP'JUSTIFY)createsawindowonthescreenandattachestheabovecreatedmenuwindowtoitstop.(CREATEMENUEDWINDOW(CREATEMENUITEMS_'(smallerLARGER)MENUFONT_'(GACHA12)TITLE_"zoomcontrols"CENTERFLG_TWHENSELECTEDFN_(FUNCTIONZOOMMAINWINDOW))))createsthesamesortofwindowinonestep,promptingtheuserforaregion.AttachedPromptWindowsManypackageshaveaneedtodisplaystatusinformationorpromptforsmallamountsofuserinputinaplaceoutsidetheirstandardwindow.Aconvenientwaytodothisistoattachasmallwindowtothetopoftheprogram'smainwindow.Thefollowingfunctionsdosoinauniformwaythatcanbedependedonamongdiverseapplications.(GETPROMPTWINDOWMAINWINDOW#LINESFONT)ReturnstheattachedpromptwindowassociatedwithMAINWINDOW,creatingitifnecessary.ThewindowisalwaysattachedtothetopofMAINWINDOW,hasDSPSCROLLsettoT,andhasaPAGEFULLFNofNILLtoinhibitpageholding.Thewindowisatleast#LINESlineshigh(default1);ifapre-existingwindowisshorterthanthat,itisreshapedtomakeitlargeenough.FONTisthefonttogivethepromptwindow(defaultstothefontofMAINWINDOW),andappliesonlywhenthewindowisfirstcreated.(REMOVEPROMPTWINDOWMAINWINDOW)Detachestheattachedpromptwindow,ifany,associatedwithMAINWINDOW,andclosesit.WindowpropertiesofattachedwindowsWindowsthatareinvolvedinacollectioneitherasamainwindoworasanattachedwindowhavepropertiesstoredonthem.TheonlypropertiesthatareintendedtobesetbesetbytheuseraretheMINSIZEandMAXSIZEproperties.Theotherpropertiesshouldbeconsideredreadonly;theyaremaintainedbytheATTACHEDWINDOWpackage.MINSIZE,MAXSIZE:Eachshouldbeadottedpair(width.height)orafunctiontoapplytothewindowthatreturnsadottedpair.Thenumbersareusedwhenthemainwindowisreshaped.TheMINSIZEisusedtodeterminethesizeofthesmallestregionacceptableduringreshaping.AnyamountgreaterthanthecollectiveminimumisspreadevenlyamongthewindowsuntileachreachesMAXSIZE.Anyexcessisgiventothemainwindow.Thisalgorithmmaychangeasexperienceisgained.Lobbyforyourfavorite.Note:Thisdoesn'taddressthehardproblemofoverlappingattachedwindowssidetoside,forexampleifwindowAwasattachedas[TOP,LEFT]andBas[TOP,RIGHT].Initiallythereshapegetregionwon'tworryabouttheoverlap. c8ar#a_ "Z%_^&e<oFyP"Z$,n2U^&\e<oFyP$&-E/\[0e<oFyP"Z$)0[0Ye<oFyP%'d(AYX:e<oFyP )+3C!X: Uqskj"%(j,E25=@CFJJUq S'  SrS +SsS,7/14v5:SQYr  (;,n.2O7Y;C!QY NsA>8AK$' */w3)8#9;O=NL'r 'd*L'Je<oFyP"Z$,n2UJI1e<oFyP$&-E/I1Ge<oFyP"Z$)0GF;e<oFyP%'d(AF;De<oFyP )+3C!D AsArIN!$+i-0e2t3q7A >q5!>r>!> ;s h"& ./46:@ADHEIJJ; :c9!!" ),.+02359v:> CDFI7JJ: 8l RI` A&V,X.h0513!8~;_>6@BHJJ8l 6@ '6 4:r114:u4: !&)4:r4:*4:1qsD!s& ,//1qu1q 8G1qs1q9 >*?h@ GGoJJ1q/.I "%?'))/u/ 2,/s/3055/r/=Z/s/>@IBB/r/B/s/CFIJJ/.r F.s.??.r..s.#&,/,/F4K57 : : .u.>.s.?B)E)JJ.,m b b!&#) ,-K.4559F:t=BC&C&,mu,mFF,ms,mFGJJ,m*5:#(* ,H/00*u* 9*s*:O<AcDXGJJ*)!_)! &r&u& $*&r&%&#s!'(O+ 1S4>4>#u# <#s#=b?CD# q; %-n r -t ss  #'T()-.2-35M7@FGoJJkrksk<r"%:')+15< ;@? FGCJJk  %,)-2?6;`=CGJJrse#%[)/*-167e:@DHJJ g ] "%* g tGa9 !%'- -1i589T;=ABFH JJ  Nd #''(,-16O90<4?)@D  R q?[hDefaultMAXSIZEisNIL,whichwilllettheregiongrowindefinitely.MAINWINDOW:pointerfromattachedwindowstothemainwindowofthegroup.Thislinkisnotavailableifthemainwindowisclosed.ATTACHEDWINDOWS:pointerfromawindowtoitsattachedwindows.Forfunctionalaccesstothisinformation,thefunctionATTACHEDWINDOWSisdocumentedbelow.WHEREATTACHED:forattachedwindows,alistwhosefirstelementistheEDGEandwhosesecondelementisthePOSITIONONEDGEthatdeterminetheplacementconditionforthiswindow.TheTOTOPFNpropertyonattachedwindowsandthepropertiesTOTOPFN,DOSHAPEFN,MOVEFN,CLOSEFN,OPENFN,SHRINKFN,EXPANDFNandCALCULATEREGIONFNcontainelementsthatimplementthewindowmanipulationfacilities.Careshouldbeusedinmodifyingorreplacingtheseproperties.NotesAwindowscanbeattachedtoonlyoneotherwindow.Attachingawindowtoasecondwindowwilldetachitfromthefirst.Attachmentscannotformloops.Thatis,awindowcannotbeattachedtoitselfortoawindowthatisattachedtoit.ATTACHWINDOWwillgenerateanerrorifthisisattempted.Attachedwindowscanhaveotherwindowsattachedtothem.Thus,itispossibletoattachwindowAtowindowBwhenBisalreadyattachedtowindowC.Similarly,ifAhasotherwindowsattachedtoititcanstillbeattachedtoB.Movingthemainwindowwillmaintaintherelationshipsbetweenwindows.ReshapingthemainwindowwillrestoretheconditionsestablishedbythecalltoATTACHWINDOW,movingthemainwindowdoesnot.Thus,ifAisattachedtothetopofBandthenmovedbytheuser,itsnewpositionrelativetoBwillbemaintainedifBismoved.IfBisreshaped,AwillbereshapedtothetopofB.Additionally,if,whileAismovedawayfromthetopofB,CisattachedtothetopofB,CwillpositionitselfabovewhereAusedtobe.Theattachedwindowscanbeclosedbythemselves.Theywillbereopenedwheneverthemainwindowisreshaped.TheclosefnforthemainwindowbreaksthelinksfromtheattachedwindowstoittoallowthemtobeGC'ed.Thereopenfnforthemainwindowreestablishestheselinks.Thusitispossibletoreopenaclosed,attachedwindowandnothaveitlinkedtoitsmainwindow.Exampleofuse(ATTACHWINDOWATWINMAINWIN'TOP'CENTER)willmoveATWINtoimmediatelyaboveMAINWINandmaintainitsattachmentthere.(ATTACHWINDOWNOTHERWINMAINWIN'TOP'CENTER)willmoveNOTHERWINtoimmediatelyaboveATWINandmaintainitsattachmentthere.Miscellaneousfunctions(WINDOWREGIONWINDOW)ReturnsthescreenregionoccupiedbyWINDOWanditsattachedwindows,ifithasany.(WINDOWSIZEWINDOW)ReturnsthesizeofWINDOWanditsattachedwindows,ifithasany.(MINATTACHEDWINDOWEXTENTWINDOW) c8`s`r``s`&&`r``s`[#8%')-1 8` ]r P]s]* !]&(m*-346;;b>U@BADJJ]\MD \M YrYsY!("|')+1G7s8": AEGJJYW WrW+WsW+-4 48W Ur UsU_$8%7'G+G-24;6n6nUrU9UsU:%<@EJJUSfOOSfrSf SfsSfi"(X*068;Z@YSf PPrPPsP"(+.{ 5<5 DM? IqIrII Gs VKr"%+[+1279:>DFJJG EZ J{{EZ B } #q%C&}+0;2;79}<>@tAFIJJB @32@r@ @s@ q%'*+.p/ 5@ >+yS%+ ,01A56t7=&>BGIBJJ>+ <RFW!#P(b*&* 013p59V>DMEG%HeJJ< : Zf{: 8 XR"V$ ,U17h778 5_:J#E% , 247 9;%;%5_r5_ E95_s5_EJJ5_ 3 M- _!#V$*A+.W02369>j@jBF#HJJ3 2 T, #$E%&+,-j.067}:;ACE[GI,JKK2 0d t"a%'*+-B./5)68;*<>R>@BGJJ0d .Y. + (P9!]#Q *+ .1+39?<A IJJ+ *X[ [%f)+/2[49?ABNCGgJJ*X ( i\%R $ )% 04u8 8;=2>CEYIJJ( ' ? Q!i"&() 2 2c22' #q#r##!  'd+2U! 8s e8r8(8s8 "u"u8r8(V8s8(+702l 9L<8r $*.5 s ers\ !%%r*s*\,2n4 :>Y q r  urs"5$&&u+s,=.0r5;<=@3B qr  qu qA qr q q s u  b s #C$*801A2i47( ru%,r&   q?[Returnstheminimumextent(adottedpairofwidthandheight)ofWINDOWanditsattachedwindows(ifany)willaccept.ThisisdeterminedbyusingthewindowpropertyMINEXTENTwhichiseitheradottedpairorafunctionwhichwhenAPPLYedtothewindowreturnsadottedpair.(ATTACHEDWINDOWSMAINWINDOW)Returnsthelistofwindowsattachedtothiswindow.(ALLATTACHEDWINDOWSMAINWINDOW)ReturnsalistofallofthewindowsattachedtoMAINWINDOWorattachedtoawindowattachedtoit. c8`s'"/#(D+-,038t:?:?`u`?`s`@BDJJ`__ u !0$%[ ,r.A138>S>S_r_E_s_F;JJ_]p52$y(V++]pr]p0]ps]p13R5:}??DF]p Zr11ZuZ !ZrZ"ZXs& /%x&)j.iX UrUuU $*UrU%URs"b$*G++RuR 4JRsR46U;=<>HCPHJJRQ_eQ q?[ TIMESROMAN  TIMESROMAN  TIMESROMAN TIMESROMAN TIMESROMAN ~GACHA  HELVETICA ~GACHA ' 3 >@j/CA'{DSK}ATTACHEDWINDOW.TED;7VANMELLE13-Apr-84 15:38:41