;skip 1 ;vsp 5 ;squish ;lftmar 0 ;topmar 0 ;botmar 0 ;rgtmar 0 ;dfont TIMESROMAN10,TIMESROMAN10,TIMESROMAN10I,HELVETICA10,TIMESROMAN18B,TIMESROMAN12B,LPT10,GACHA10B,HELVETICA18 ""I New Window System |1 ^Basic Window Features "d 1. Basic Window Features "( DThischapterdescribesthefeaturesprovidedbythewindowavor,whichthereforeapplyto mostwindows.Laterchaptersdescribehairierfeatureswhichareincorporatedintosomewindows. Mostofthefeaturesareexplainedwithabriefdescriptionfollowedbyanenumerationofthe messagesthatyoucansendtoinvokethem,theinstance-variablesassociatedwiththefeature,and the related window creation options (if any). " DMostofthemessagesdescribedinthischapterareessentialtotheworkingsofthesystem, andshouldnothavetheirprimarymethodsredenedbytheuser.Whenthisisnotthecase,the text will say so explicitly.In any case,it is all right to put daemons on any message. "@ 1.1 Flavor Naming Conventions " DThefollowingconventionsarefollowedfornamingavorsofwindows.Inthissectionthe wordfrobbozisusedtostandforanyfeature,attribute,orclassofwindowsthatwouldappearin aavorname(e.g.peek,lisp-listener,ordelayed-redisplay-label).Namingconventionsare dierentforinstantiatableavors(whicharecompleteandcansupportinstancesofthemselves) and mixin avors (which are incomplete and only supply one particular aspect of behavior). " frobboz ZAninstantiatableavorwhosemostdistinguishingcharacteristicisthatitisa Z"frobboz".frobbozispreferredtofrobboz-windowexceptwhenitisnecessary Zto make a distinction. " frobboz-mixin ZAavorwhichprovidesthe"frobboz"featurewhenmixedintootheravors. ZThis"generally"has"no"explicit"components,'only"included-avors.,Not Zinstantiatable by itself. " basic-frobboz ZThesameasfrobboz-mixinexceptthatitaltersthe"essentialcharacter"ofthe Zwindow.Itdoesnotworktomixtwo"basic"avorstogetherunlesstheyknow Zabouteachother.Incertaincasesabasic-frobbozmaybeinstantiatablewithout Zother avors,while in other cases it is more like a mixin and not instantiatable. " essential-frobboz essential-frobboz-mixin ZSomethingwhichisneededinordertowork.Theseareoftenbutnotalways Zcomponentsofminimum-window.Theyarealsousuallyinternalthingstheuser Zdoes not see. " minimum-frobboz ZAsimplertypeof"frobboz"thanfrobbozorbasic-frobboz,forthecasewhere Zthose latter avors want to be built out of components. " window ZThesimplesttypeofwindow.Almostalluser-denedwindowsshouldbebuiltby Zaddingmixinstothewindowavor,althoughoccasionallytheneedwillariseto Zdeal with the components out of which window is composed. " sheet ZThe real base avor on which everything else is built. "" DSK:LMWIND;BASWIN 7 f14-MAR-81 ""I New Window System |2 Creating a Window "d DThewindowavoriscomposedoutofsomemixinsforvariousfeaturesandtheminimum- windowavor,whichinturnconsistsofsomefeaturemixinsforessentialfeatures,essential- window,andsheet.Anywindowyoumakeshouldbebuiltonatleastminimum-window; except for special purposes,you usually want to start with window. "@ 1.2 Creating a Window " DInordertocreateawindow,youmustrstdecidewhatavoritis.Insomecasesyoucan useapre-existingavor.Inothercases,youcandenetheavoryouneedbycombiningseveral pre-existingavorstogetthefeaturesyouneed.Sometimes,youwillactuallyhavetowritea program.Havingdenedtheavor,tv:window-createisthefunctiontocalltoinstantiateany kind of window avor. " tv:window-createavor-name&restoptions vCreatesawindowofthespeciedavor,initializesit,andreturnsit. Optionsare valternatingoptionkeywordsandargumentstothosekeywords.!Theallowedoptions vdependontheavor,andaredocumentedwiththefeaturestheycontrol.Theoptions vareformedintoapropertylistandpassedtothenewly-bornwindowviathe:initmessage. vNotethatinadditiontotheoptionspassedintowindow-createbytheuser,many vavorsusethe:default-init-plistoptiontodefflavortodefaultcertainoptionsinorderto vget the features they want from other avors. " zExample: Z(tv:window-create 'tv:lisp-listener Z c k s':borders 4 Z c k s':font-map (list fonts:bigfnt) Z c k s':vsp 6 Z c k s':edges-from ':mouse Z c k s':expose-p t) Zcreates a Lisp listener that is real easy on the eyes. " DThese are the general options,which don't apply to any particular feature or avor. " :expose-pt-or-nil vIf t,the window is exposed after being created and initialized.The default is nil. " :superiorwindow vTells what window to put it under.Defaults to the value of tv:mouse-sheet. " :edges-fromsource vSpeciesthatthewindowistotakeitsedges(positionandsize)fromsource,whichcan vbe one of: v" va string >Theinside-sizeofthewindowismadelargeenoughtodisplaythestring, >in font 0. v" va list (left top right bottom) >Those edges,relative to the superior,are used. "\ DSK:LMWIND;BASWIN 7 f14-MAR-81 ""I New Window System |3 Creating a Window "d v:mouse >Theuserisaskedtopointthemousetowherethetop-leftandbottom- >right corners of the window should go. v" va window >That window's edges are copied. " :minimum-widthn-pixels :minimum-heightn-pixels vIncombinationwiththe:edges-from':mouseinitoption,theseoptionsspecifythe vminimum size of the rectangle accepted from the user. " :leftx-position :xx-position :topy-position :yy-position :rightright-edge-x-position :bottombottom-edge-y-position :edges(left top right bottom) :widthoutside-width-in-pixels :heightoutside-height-in-pixels vThesesetthepositionandsizeofthewindowrelativetoitssuperior.Thedefaultifthe vpositionisunspeciedis(0,0).Thedefaultifthesizeisunspeciedistheinside-sizeof vthe superior.The right thing happens if you specify only some parts of this information. " :inside-widthwidth :inside-heightheight :inside-size(width height) vThesesetthesizeoftheinsideportionofthewindow.Therealsizewillbethissizeplus vwhatever the sizes of the margins turn out to be. " :character-widthspec vThisisanotherwayofspecifyingthewidth.speciseitheranumberofcharactersora vcharacterstring.Theinside-widthofthewindowismadetobewideenoughtodisplay vthose characters in font 0. " :character-heightspec vThisisanotherwayofspecifyingtheheight.speciseitheracountoflinesoracharacter vstringcontainingacertainnumberoflinesseparatedbycarriagereturns.Theinside- vheight of the window is made to be that many lines. " :integral-pt-or-nil vThedefaultisnil.Ifthisisspeciedast,theinsidedimensionsofthewindowaremade vto be an integral number of characters wide and lines high. " :save-bitst-or-nil vControls whether or not the window saves its bits when it is de-exposed. v[What is the default?] v[What does this interact with???] "" DSK:LMWIND;BASWIN 7 f14-MAR-81 ""I New Window System |4 "Relations Between Windows "d :bit-array2d-array vLetsyouspecifythebit-save-arrayforthewindowdirectly.Youprobablydon'twantto vuse this. " :processprocess?spec? vThisgoessomewhere.[Thisgetsdocumentedundertheprocess-mixin,whichiselsewhere. vWe also need the :process message which is in both process-mixin and select-mixin.] "@ 1.3 Relations Between Windows " DThissectiondescribesthemessagesusedtocontrolrelationsbetweenwindows,andhowitis decidedwhatbitswillappearonthephysicalscreen.Thesemessagesactuallypertaintoseveral independent modules of the system,but [at least currently] they are not separated out here. " D[Herewemightbrieyexplainthenotionsofexposedwindows,selection,priority,screen management,etc.] " :expose&optionalturn-on-blinkersbits-actionxy vCausesthewindowtobecomeexposedwithrespecttoitssuperior.Thus,ifthesuperior visfullyvisibleonthescreen,thiswindowwillbetoo.Ifxandyarespecied,the vwindowisrstmovedtothatpositionrelativetoitssuperior.Aspartofexposing,other vwindows that become overlapped by this one will be de-exposed. " vIfthiswindowdoesnothaveabit-savearray,itsinferiorswhichwereexposedthelast vtimeitwaswillbeexposedagain.Also,ifthisisatemporarywindow,thebitsunderit varesavedinthiswindow'stemporarybit-array,allowingthemtoberestoredwhenthis vwindowisdeexposed,andthewindowsowningthosebitsare"temporary-locked"sothey vcannot try to change the bits while they aren't in their normal place. " vIfturn-on-blinkersist,theblinkersshouldbeallowedtoblink.Normallythisisdone vonlywhenthewindowisabouttobeselected.Ifturn-on-blinkersisnil,thedefault,the vblinkers are set to their deselected-blinker-visibility,which is usually solid-on. " vbits-actioncontrolswhathappenstothebitswhichcomposethiswindow'sdisplay.The vallowed values are: v" v:restore >Thebitsarerestoredtowhattheyusedtobe.Thatis,thewindow'sbits >aremovedfromwheretheywereautomaticallysaved,intothescreen's >physical bits. v" v:clean >The window is refreshed,that is,made blank for the most part. v" v:noop >Nothingisdonewiththebits.Thewindow'sbitsbecomesettowhatever >was on that part of the screen previously. vbits-actiondefaultsto:restoreifthatispossible(thewindowhasabit-save-array), votherwise to :clean. ""; DSK:LMWIND;BASWIN 7 f14-MAR-81 ""I New Window System |5 "Relations Between Windows "d :deexpose&optionalsave-bits-pscreen-bits-actionremove-from-superior vThisistheoppositeof:expose.Thismessageissentbythesystemwhenawindow vneedstoberemovedfromthescreen.Itisusuallyamistaketosendityourself;unless vscreen-managementisdelayed,thescreenmanagerwillimmediatelyre-exposethewindow, vsince it is not covered by anything.See the :bury message. " vIfthewindowiscurrentlyselected,itisrstdeselected,sincetheselectedwindowmust valways be exposed. " vThe allowed values for save-bits-p are: v" v:default >Thebitsaresavedifabit-savearrayexists,otherwisetheyarenot.This >is,of course,the default. v" v:force >If a bit-save array does not exist,one is created,and the bits are saved. v" vnil >The bits are not saved. " vscreen-bits-actioncontrolswhatisdonetothebitsleftbehindonthescreen.Ifthisisa vtemporarywindow,thesuppliedvalueisignoredandthebitsbelongingtothewindows vunderneatharerestoredfromwheretheyweretemporarilysaved.Otherwisetheallowed vvalues are: v" v:noop >Leavethemthere(however,thescreenmanagerwillcomealongand >replacethemwiththebitsofwhateverwindowshowsthrough).Thisis >the default. v" v:clean >Clear them out. " vremove-from-superior is for internal use,and should not be supplied. " :bury vPutsthewindowatthe"bottomoftheheap".Anyotherwindowsitoverlappedwillnow voverlap it. " :refresh&optionaltype vCleans up the bit image of the window.Type is one of the following: v" v:complete-redisplay >Thisisthedefault.#Thewindow'spresentbitimageiscompletely >discardedandregeneratedfromscratch.Ifthewindowcanredrawthebit >image,thenitshoulddoso(theeditor,forexample,willredisplay). >Otherwisetheinsidepartofthewindowwillbeclearedandthemargins >will be redrawn. v" v:use-old-bits >Ifthewindowcanrestoreitsbitsfromitsbit-savearray,itwilldoso. >Otherwiseitwilldothesameasiftypehadbeen:complete-redisplay. >This is sent by the system when a window is exposed. v" v:size-changed >Thewindowshouldtakenoteofthefactthatitsinsidesizehaschanged, >andshouldredisplayitsmargins.Itisnotnecessarytodoanythingtothe >insidedisplay,butsometypesofwindows(editorwindowsforinstance) >willwanttoredrawtheirdisplaytoconformtothenewwindow " DSK:LMWIND;BASWIN 7 f14-MAR-81 ""I New Window System |6 "Relations Between Windows "d >dimensions.Thisissentbythesystemwhenthesizeofawindoworof >its margins is changed. v" v:margins-only >Theinsideportionofthewindowiscompletelyundisturbed,andonlythe >marginsneedtoberefreshed.Thisissentbythesystemwhenthe >marginshavebeenredenedandsoneedtoberedisplayed,buttheirsize >hasn't changed so the inside of the window is not aected. " vTheprimary:refreshmethodshouldnotbereplacedbytheuser.:after :refreshmethods vshouldbeaddedifneededtoredrawtheinsideportionofthewindow;thesemethods vlookatthetv:restored-bits-pinstancevariable,whichisnilifthedisplayhasbeen verased,ortifitisunchanged.Thesemethodscanalsolookattheargument,butthey vshouldusetv:restored-bits-ptodecidewhat(ifanything)todisplay. Thesystem- vprovidedprimary:refreshmethodsendsa:refresh-marginsmessageifthemargins vrequire redisplay. " :refresh-margins vThismessageissentwhenthemarginsneedtobedrawnorredrawn;theyhavealready vbeenerased.Eachavorthatdenessomethinginthemarginneedsa:after :refresh- vmargins method to draw its thing. v[This perhaps belongs in the how to hack margins section,not yet written?] " :activate vCausesthewindowtobeonitssuperior'slistofinferiors.Activewindowsarevisibleto vtherestofthesystemforautomaticexposureandscreenmanagement.Whenawindowis vexposed,it will be automatically activated if it is not already. " :deactivate vCausesthewindowtobedeexposedandremovedfromitssuperior'slistofinferiors.The vwindow system will not remember this window anywhere,so it can be garbage collected. " :kill vCausesthewindowtobecomedeactivated,withtheintentthatitwillneverbeused vagain.Distinctfrom:deactivatesothatdaemonscanbeplacedonittocleanupthings vlike processes. " :select&optional(save-selected t) v[The save-selected argument is obsolete and doesn't do anything now.] " vCausesthewindowtobecometheselectedwindow,whichistheonethatisallowedto v:tyifromthekeyboard.Itandallitssuperiorsareautomaticallyactivatedandexposedif vtheywerenotalready.Thecurrentlyselectedwindowissenta:deselectmessagewith vargumentnil,causingittoberememberedasthepreviously-selectedwindow. The vwindow's blinkers are made to blink if that is appropriate (see ). ""v DSK:LMWIND;BASWIN 7 f14-MAR-81 ""I New Window System |7 "Relations Between Windows "d tv:selected-window Variable vThis is nil or the currently-selected window. " :deselect&optional(restore-selected t) vCausesthewindowtonolongerbetheselectedwindow.Ifrestore-selectedist,thenthe vwindowthatwasselectedbeforethisoneisselectedagain,andthiswindowisputonthe vendoftheringbuerofpreviously-selectedwindows.Otherwisethiswindowisputon vthefrontoftheringbuerandnowindowisselected.Thiswindow'sblinkersaresetto vtheir deselected-blinker-visibility;typically they stop blinking. " vYoudon'tnormallywanttosendthismessageyourselfwithanargumentofnil,sincethe vscreenmanager,ifnotdelayed,willautomaticallyselectawindow,whichmaybethis vone. " :mouse-select&optional(save-selected t) vThisisusedwhenyouselectawindowbypointingtoitwiththemouseorbyusingthe vselectoperationinthesystemmenu.Itrepresentsa"stronger"formofselection.The vargumentsarethesameasfor:select.Deexposesanytemporarywindowsthatlockthe vwindow,copiesanykeyboardtypeaheadintothecurrentlyselectedwindow'sio-buer, vand then sends a :select message to the window. " :name-for-selection vReturnsastringindicatingthenameofthewindow,ornilifthewindowdoesnotwant vtobeselected.Thisisusedincomposingthemenudisplayedbytheselectoperationof vthesystemmenu.Iftheresultof:name-for-selectionisnil,manysystemfunctions vassumethiswindowis"internal"andwillnot"automatically"selectit,althoughitcan vstill be selected explicitly by a program for its own purposes. " vYouaresupposedtoreplacethemethodforthismessagetotellthesystemwhetheror vnotyourwindowshouldbeselectablebytheuser.Thedefaultmethodforwindowavor vreturnsthewindow'slabelifithasone,otherwiseitsname.Thedefaultmethodfor vessential-windowreturnsnil.!Youcanincludethedont-select-with-mouse-mixin vavortoredene:name-for-selectiontoreturnnil,oryoucanwriteamethodthat vreturns a more descriptive string for the menu than the window's label. " :status :set-statusnew-status vGetorsetthestatusofawindowwithrespecttoactivation,exposure,andselection.The vpossible values for the status of a window are: v" v:selected >This is the selected window. v" v:exposed >Thiswindowisexposedandsoareallitssuperiors,hencethiswindowis >actually visible on the screen. v" v:exposed-in-superior >Thiswindowwouldbe:exposedifitssuperiorwas.Inthisstatethe >windowmayormaynotbecapableoftypingout,dependingonwhether >its superior has a bit-save array. "c DSK:LMWIND;BASWIN 7 f14-MAR-81 ""I New Window System |8 "Relations Between Windows "d v:deexposed >Active but not exposed. v" v:deactivated >Notactiveatall.Adeactivatedwindowcannotbemadevisiblebyscreen >management and cannot be selected from the system menu. vSettingthestatusworksbysendingtheappropriatemessageamongthosedocumented vabove. " :deexposed-typeout-action :set-deexposed-typeout-actionnew-value vGetorsetthedeexposed-typeout-actioninstance-variable.Thisspecieswhattodo vwhenoutputisattemptedonadeexposedwindowwithoutput-holdset,whenitisnot vlocked by a temporary window exposed over it.Legal values are: v" v:normal >Wait until the output-hold condition clears.This is the default. v" v:expose >Forcibly expose the window. v" v:error >Give an error. v" v:permit >Allowoutputtohappenonthebit-array(ratherthanthescreen.)This >outputwillbesavedandwillbecomevisiblewhenthewindowisnext >exposed.Inaddition,thebackgroundscreenupdaterwillperiodically >copy any visible portions of the saved output onto the physical screen. v" vany list >Sendthemessagespeciedbythecarofthelist,withargumentsthecdr >of the list,to the window. " :priority :set-prioritynew-priority vGetorsetthepriorityofthewindow,whichmustbeapositivenumberornil.nilisthe vdefaultandislessthananynumericalpriority.Windowsofhigherpriorityaremore vlikelyto"showthrough"whentheyaredeexposed.Settingtheprioritycausesareorder- vinferiors of the window's superior,and causes screen-management. " :save-bits :set-save-bitst-or-nil vGet or set whether the window saves its bits when it is deexposed. " :set-superiornew-superior vCausesthesuperiorofthewindowtobenew-superior.Usethiswithcaution!Itdoesn't vcompletely work for all cases. " :lisp-listener-p vReturnsnilifthewindowisnotalisplistener,:idleifalisplistenerandnotcurrently veval'ing a form,or :busy if a lisp listener but currently eval'ing a form. " DThefollowinginstancevariablesarerelevanttotheseissuesandmaybeofinteresttothe user.Thereareofcoursequiteafewrelatedinstancevariableswhichareinternalandnot documented here [but perhaps they should be?] """ DSK:LMWIND;BASWIN 7 f14-MAR-81 ""I New Window System |9 KDimensions and Margins "d tv:screen-array Variable vThetwo-dimensionalarrayofbitsonwhichawindow'soutputisdrawn.nilifthe vwindow is deexposed and has no bit array. " tv:bit-array Variable vThearrayinwhichthewindowsavesitsbitswhennotexposed,ornilifitdoesnotdo vso.Several aspects of a window's behavior depend on whether or not this is null. " tv:superior Variable vThe window within which this one appears.nil if this is top-level (typically a screen). " tv:restored-bits-p Variable vThisisusedforcommunicationtothe:after :refreshmethods;ifitistthebitsofthe vwindowhavebeenrestoredfromthesavedcopy,butifitisniltheyneedtobe vregenerated. " tv:name Variable vThenameofthewindow.Thisstringisthedefaultthingdisplayedinthelabeland vappears in the printed-representation of the window. " tv:process Variable vForawindowthatincorporatestheprocess-mixinavor,thisistheprocessassociated vwith the window,or nil. " D[Should the locking and temporary stu be documented here,or assumed to be internal?] " DHere are some relevant window-creation options. " :deexposed-typeout-actionaction vSee above.The default is nil. " :prioritynumber-or-nil " :namestring vLetsyouspecifythenameofthewindow.%Thenameappearsintheprinted vrepresentation,isusedbydefaultasthelabel,andisusedbythedefault:name-for- vselectionmethod.Thedefaultnameisconstructedfromtheavornameandanumber vto make it unique,e.g.lisp-listener-1. "@ 1.4 Dimensions and Margins " DAwindow'sdisplayedpictureconsistsofaninsiderectanglesurroundedbymargins.The marginsareusedtodisplayallsortsofauxiliaryinformation,suchasalabel,aboxaroundthe window,orjustplainwhitemargins.Theinsideareaiswhatisnormallyofconcerntothe programusingthewindow,andcontainsthetext,graphics,orwhateverthatisthewindow's contents. "" DSK:LMWIND;BASWIN 7 f14-MAR-81 ""I New Window System v10 KDimensions and Margins "d DEverywindowhasasuperioronwhichitisdisplayed.Often,butnotalways,thissuperioris thephysicaldisplayscreen.Awindowhasaposition,whichiswhereitsupper-left-handcorner falls within the superior. " :size vReturns two values:the width and height of the window,respectively. " :inside-size vLike :size,but returns the width and height excluding the margins. " :size-in-characters vReturnstwovalues:theinsidewidthofthewindowincharacters,andtheinsideheight vin lines. " :position vReturns two values:the x and y osets of the window on its superior,respectively. " :margins vReturns four values:the size of the left,top,right,and bottom margins,respectively. " :edges vReturnsfourvalues:theleft,top,right,andbottomofthewindow,respectively.These vare,as always,relative to the superior. " :inside-edges vLike :edges,but returns the edges excluding the margins. " :set-edgesnew-leftnew-topnew-rightnew-bottom&optionaloption vChangesthesizeandpositionofawindowasspeciedbytherstfourarguments.option vmaybe:verify,inwhichcasetisreturnediftheedgesareacceptable,orniliftheyare vnot,andnothingisactuallychanged.Sendsthe:verify-new-edgesmessageinorderto vcheckthenewedges.Ifnotmerelyverifying,andnotchangingthesizeofthewindow, vthenthewindowismovedwithoutanyfurthurmessagetransmission.Ontheotherhand, vifthesizeischanging,thena:change-of-size-or-marginsmessageissenttothe vwindow. " :full-screen&optionaloption vSendsa:set-edgesmessagetothewindowmakingitthefullinsidesizeofitssuperior. voption is passed directly to the :set-edges message. " :set-sizenew-widthnew-height&optionaloption vSendsa:set-edgesmessagetothewindowsettingittothespeciedsizewithoutmoving vits upper-left corner.option is passed directly to the :set-edges message. " :set-inside-sizenew-widthnew-height&optionaloption vSendsa:set-edgesmessagetothewindowsettingittothespeciedsizenotincluding vthemargins.Theupper-leftcornerdoesnotmove.optionispasseddirectlytothe:set- vedges message. "a DSK:LMWIND;BASWIN 7 f14-MAR-81 ""I New Window System v11 KDimensions and Margins "d :set-positionnew-xnew-y&optionaloption vSendsa:set-edgesmessagetothewindowsettingitspositiontothespeciedplace. voption is passed directly to the :set-edges message. " :center-aroundxy vPositionsthecenterofthewindowasclosetoxandyasispossiblewithouthangingo vthe edge of the superior. " :change-of-size-or-margins&restoptions vThismessageissentbythesystemwheneverthesizeoftheinsidepartofawindow,or vanythingaboutitsmargins,ischanged.Theprimarymethodactuallydoesthechanges, vmovestheinsidebitsaroundasnecessary,andblanksoutthemargins.Youcandene v:afterdaemonsforthismessagetodosuchthingsasmodicationofinternaldata vstructuresthatdependonthenumberoflinesthattinthewindow.Normalcode vshouldneverredenetheprimarymethodnorsendthemessagedirectly.optionsisalist vofalternatingkeywordsandvaluesspecifyingwhatischanging,similartotheoptionsused vwhen creating a window. " :verify-new-edgesnlntnwnh vReturnsniliftheargumentsarelegaledges,elseastringexplainingwhattheproblemis. vEachavorthatcaresaboutlegalityofedgesshoulddeneamethodforthismessage; vthemethodswillbecombinedwithor.Thesystemsendsthismessagebeforecompleting va :set-edges. " vNotethattheargumentsto:verify-new-edgesarenotedges,butratherapositionanda vsize. " :redefine-marginsplist vModiesthesizeofthemarginsaccordingtothechangesinplist,whichisadisembodied vpropertylistwhichdaemonsformarginhackersmaymodify.Seethesectiononhacking vthe margins. " DThe following instance variables are relevant to these issues. " tv:x-offset Variable tv:y-offset Variable vThe coordinates of the upper-left-hand corner of this window relative to its superior. " tv:width Variable tv:height Variable vThe size of the window. " tv:left-margin-size Variable tv:top-margin-size Variable tv:right-margin-size Variable tv:bottom-margin-size Variable vThe widths of the margins. "| DSK:LMWIND;BASWIN 7 f14-MAR-81 ""I New Window System v12 VDisplaying in a Window "d tv:border-margin-width Variable vFor a window with borders,this is the width of the white space inside the black borders. "@ 1.5 Displaying in a Window " DNotethattheseoperationsareasupersetofthestandardstreamprotocol.Thusawindow may be used directly as a stream. " :tyoch vOutputschatthecurrentcursorposition,andadvancesthecursoraccordingly.The vformat eectors carriage-return,tab,and backspace are understood. " :string-outstring&optional(start 0)(end nil) vOutputsstring.startandendspecifyasubstringofthestring.Moreecientthan vcharacter by character output. " :line-outstring&optional(start 0)(end nil) vOutputsstringfollowedbyanewline.startandendspecifyasubstringofthestring. vMore ecient than outputting the string character by character. " :clear-screen&optionalmargins vErasesthewindowandhomesitscursor.Ifmarginsisnil(thedefault),theinsideofthe vwindowiserasedandthemarginsareleftalone.Ifmarginsist,themarginsarealso verased. " :clear-eof vErases from the current position of the cursor to the end of the window. " :clear-eol vErases from the current cursor position to the end of the line. " :clear-char vErasesthecharacterpositionunderthecursor.Incaseofmultipleorvariablewidthfonts, vthis may not be the actual width of the character there. " :home-cursor vPositionsthecursortotheupper-leftmostcharacterpositioninthewindow,insidethe vmargins. " :read-cursorpos&optional(units ':pixel) vReturnsthecurrentcursorpositionastwovalues,xandy.Thecursorpositionisrelative vtotheupper-left-handcornerofthewindowinsidethemargins.%Theunitsof vmeasurement may be specied as :pixel or :character. ""y DSK:LMWIND;BASWIN 7 f14-MAR-81 ""I New Window System v13 VDisplaying in a Window "d :set-cursorposxy&optional(units ':pixel) vPuts the cursor at the specied position.units the same as for :read-cursorpos. " :fresh-line vIfthecursorisnotatthebeginningoftheline,advancestothenextline.Ineithercase vdoes a :clear-eol. " :draw-rectanglewidthheightxyalu vMakesarectangleof1-bitsofthespecieddimensions,andmergesitintothewindowat vthespeciedx,ypositionusingthealufunctionsupplied.Thepositionisrelativetothe voutsideofthewindow,unlikethepositionreturnedby:read-cursorpos.Thisisuseful vforerasing,darkening,andcomplementingrectangularareasofawindow.Therectangle vis clipped if it would lie outside of the window. " :beep&optionaltype vGettheattentionoftheuser,bymakinganaudiblebeepand/orashingthescreen.The vdefaultforawindowistohandthisotoitssuperior,andthedefaultforascreenisto vbeep on the console.The meaning of beep-type is not yet specied. " D[Somewhere document the global function and variable BEEP.] " :reverse-video-p :set-reverse-video-pt-or-nil vGetorsetwhetherthewindowisinreversevideomode.Thismeansthatinsteadofthe vstandardioralufunctiontowritebits,andandcatoclearbits,andcaisusedtowrite, vandiortoclear.Whetherthisiswhite-on-blackorblack-on-whitedependsonthereverse- vvideo mode of the TV itself,which is changeable by typing escape-C. " :set-font-mapnew-font-map vChangesthefont-maptonew-font-map.Afontmapisanarrayoffonts,typicallywith v26. elements. " D[There is no message to set the current font,only functions,at present.] " :more-p :set-more-pt-or-nil vGet or set whether more processing is enabled for this window. " :vsp vReturnstheverticalspacingoflinesinthewindow.Thisistheamountofblankspace vbetweenthebottomofcharactersononelineandthetopofcharactersonthenextline. vIt is typically 2 raster lines. " :handle-exceptions vIfthereareanyexceptionagssetforthewindow,callstheappropriateexception vhandlers. ""' DSK:LMWIND;BASWIN 7 f14-MAR-81 ""I New Window System v14 VDisplaying in a Window "d :end-of-line-exception vCalledwhenthecursorreachestheendofaline.Movesthecursortothenextline,and vclears the line,preparing it for subsequent typeout.Clears the end of line exception ag. " :end-of-page-exception vCalledwhenthecursorreachesthebottomofthewindow.Movesthecursortothetop vofthewindow,andclearstheline,preparingitforoutput.Clearstheendofpage vexception ag. " :more-exception vCalledwhenmore-vposisreached.Promptswith**more**andwaitsfortheuserto vtype a character before continuing.Resets more-vpos. " :note-input-wait vCalled when :tyi hangs waiting for input.Sets more-vpos appropriately. " :output-hold-exception vCalledwhenoutputisattemptedonthewindowbuteithertheoutputholdagissetor vthewindowislockedbyatemporarywindow.Ifthelatteristrue,thenwaitsuntilthe vwindowisnolongerlocked.!Iftheformer,andthewindowisdeexposed,then vdeexposed-typeout-actionisinspected(see).Alwaysreturnswiththe vwindow no longer output held. " :delete-line&optional(n 1) vDeleteslinesatandbelowthecurrentcursorposition.nspeciesthenumberoflinesto vdelete.Linesbelowthedeletedlinesareshiftedup,andblanklinesarebroughtinatthe vbottom of the window. " :insert-line&optional(n 1) vMakesnblanklinesatthecursorbyshiftingthelinesatandbelowthecursordown.n vlines at the bottom of the window are lost. " DThe following instance variables are relevant. " tv:cursor-x Variable tv:cursor-y Variable vThepositionatwhichtoputthenextcharacter.Thesearerelativetotheupper-left-hand vcornerofthewindowoutsidethemargins,unlikethevaluesreturnedbythe:read- vcursorpos message. " tv:more-vpos Variable vTheYpositionatwhicha**more**willhappen,or100000plustheYpositionifitis vtobedeferreduntilafterthebottomofthewindowhasbeenreached,ornilifthereis vno more-processing on this window. ""k DSK:LMWIND;BASWIN 7 f14-MAR-81 ""I New Window System v15 VDisplaying in a Window "d tv:current-font Variable vThe currently selected font for character display. " tv:font-map Variable vAn array of fonts.The 0'th entry is the "standard" font. " tv:baseline Variable vThe number of raster lines from the cursor y to the base line of a character. " tv:baseline-adj Variable vThey-osettothetv:baselineforthecurrentfont.Comesintoplaywhentherearefonts vofvaryingheights(alllinesarenormallythesameheightregardlessofthefontsofthe vcharacters on them). " tv:line-height Variable vThe total number of raster lines per character line. " tv:char-width Variable vThecharacterwidthforthecursorblinkerandcursorpositioningin:characterunits. vWith a xed width font this is,of course,the same as the width of all the characters. " tv:char-aluf Variable vThe ALU function for drawing things;normally tv:alu-ior. " tv:erase-aluf Variable vThe ALU function for erasing the window;normally tv:alu-andca. " DThe following window-creation options apply to these features. " :blinker-pt-or-nil vSayswhetherthereshouldbeablinkerthatfollowsthetypeoutcursor.Thedefaultist v(however many avors redene the default to be nil). " :blinker-functionfunction vDenesthefunctionthatimplementstheblinkerthatfollowsthetypeoutcursor.The vdefault is tv:rectangular-blinker. v[Thisseemsisscrewedup,inthatthevalueisnotafunctionatall,butaavorof vblinker.] " :blinker-deselected-visibilityvisibility vThe default is :on.See . " :reverse-video-pt-or-nil vThe default is nil;t selects the opposite of the normal mode. ""y DSK:LMWIND;BASWIN 7 f14-MAR-81 ""I New Window System v16 Lower-level Display Primitives "d :font-mapspec vSpeciesthefontstobeusedfordisplayonthiswindow.Thesearen'ttheonlyfontsthat vcanbeused,buttheyarethe"normal"fontsandcontrolthesettingupofthe vdimensions,linespacing,andsoforth.Specmaybeoneofnil(thedefault),meaning vusethescreen'sdefaultfont(s),anarrayoffonts(usuallycontaining26.elements),ora vlist of fonts (actual fonts,not symbols which name fonts). " :vspvsp vSelectsthenumberofblankrasterlinesbetweencharacterlines.Thedefaultis2.The vline-heightofawindowisinitializedfromthisandtheheightofthetallestfontinitially vspecied. " :more-pt-or-nil vEnablesordisablesmore-processing.Thedefaultist,butmanyavorschangethedefault vto nil for their own purposes. " D[Exactly what forms of typeout are controlled by these next two?] " :right-margin-character-flagt-or-nil vThedefaultisnil.Ift,ifalineislongerthanthewidthofthewindow,whenitwraps varound to the next line an "!" is put in the right margin. " :truncate-line-out-flagt-or-nil vThedefaultisnil,butiftwhenalineislongerthanthewidthofthewindowitis vtruncated. "@ 1.6 Lower-level Display Primitives " D[Herewillbeexplainedprepare-sheet,themicrocodeprimitives,andmaybesomeorallof thesheet-mumblefunctions.Somewherewearegoingtoneedsectionsonblinkersandfonts, also.Maybehereisagoodplace.Ormaybeallthedisplaying-in-a-windowstushouldbe moved out into its own chapter?] "@ 1.7 Character Input " DNotethattheseoperationsareasupersetofthestandardstreamprotocol.Thusawindow may be used directly as a stream. " :tyi&optionaleof vReturnsthenextinputcharacter.Hangsuntilacharacterisavailable.Theeofargument vis ignored since keyboards do not have end-of-le. " :tyi-no-hang vReturns the next input character if one is immediately available,else nil.Never hangs. ""4 DSK:LMWIND;BASWIN 7 f14-MAR-81 ""I New Window System v17 nThe Mouse "d :untyich vReturnschtotheheadoftheinputstream.Itwillbethenextcharacterread.Onlyone vcharacter may be untyi'ed at a time. " :listen vReturns t if any input characters are available,else nil. " :clear-input vClearsthewindow'sinputbuer,andrubouthandlerbuer.Ifthewindowisselected, valso clears the system input buer. " :force-kbd-inputch vPutschintothewindow'sinputbuer.chneednotbeaxnumiftheprogramwhich vwill :tyi it understands non-numeric "characters". " :io-buffer :set-io-buffernew-buer vGet or set the window's keyboard input buer. " tv:io-buffer Variable vForawindowthatsupportsstreamoperations,thisinstance-variableistheio-buffer vthrough which keyboard input is read. " :rubout-handlerrubout-handler-optionsfunction&restargs vPerforms interactive editing of input.This message is documented in detail elsewhere. " DThe following window-creation options are relevant. " :io-bufferio-buer vExplicitlyspecifyingtheio-buerisuseful,sinceiftwowindowsreadfromthesameio- vbuer,if one is selected they both can read from the keyboard. " :rubout-handler-bufferarray v[I don't know of any use for this.] "@ 1.8 The Mouse " D[This section needs a great deal of work.] " DThemouseisrunbyaprocess(theMouseProcess)whichtracksitsmotionandlooksfor button-pushes.Thewindowthemouseispointingat,ifitisexposed,hascontroloverthemouse andcanprogramthemouseprocessbydeningmethodsforthefollowingmessages.Thedefault methods,providedbytheessential-mouseavor,dosomethingreasonablebutnotexciting. [This could be documented in more detail some day.] ""Y DSK:LMWIND;BASWIN 7 f14-MAR-81 ""I New Window System v18 nThe Mouse "d :mouse-buttonsbuttons-downxy vIfabuttonispushedwiththemouseoveranexposedwindowthathasa:mouse- vbuttonsmethod,thatwindowreceivesthismessage.Buttons-downisabit-maskofthe vbuttonspushed.Xandyarethecoordinatesofthemouserelativetotheoutsidetop-left vcornerofthiswindow.Themessageissentatthetimethemousebuttonisrst vdepressed.Encodingofdouble-clicksordeferringofcommandexecutionuntilthemouse vbuttonisreleased,ifdesired,mustbedonebythishandler.Itisasystemconvention vthatclickingtheright-handmousebuttontwicenearlyalwaysgetsyouthesystemmenu. vItisalsoasystemconventionthatclickingtheleft-handbuttononanunexposedmouse- vselectable window exposes and selects it. " D[Documentshouldstatethatusuallyyouwanttoleavetheabovealoneanddeneahandler for the below] " :mouse-clickbuttonxy vbuttonisanencodedmouse-button(e.g.#\mouse-1-1meanstheuserclickedLeft vonce);xandyarethecoordinatesofthemouserelativetotheoutsidetop-leftcornerof vthiswindow.Ifamethodfor:mouse-clickhandlesthisbutton,itshouldreturnt; votherwiseitshouldreturnnilandothermethodsfromothercomponentavorswillbe vtried. " vThe:mouse-clickmessageisonlyusedifyoudon'treplacethedefault:mouse-buttons vmethod. " :mouse-movesxy vWhenthemousemoveswhileoveranexposedwindowthathandles:mouse-moves,it vreceivessuchamessagewiththewindow-relativecoordinatesofthemouseasarguments. vThe mouse-blinker must be moved by this method. " :handle-mouse vSentinthemouseprocesstothewindowwhenthemousemovesintothewindow'sarea vofinuence,shouldtrackthemouseandsend:mouse-movesand:mouse-buttonsas vappropriate.Usually calls tv:mouse-default-handler. " :set-mouse-positionxy vSets the mouse position to x,y.Coordinates are relative to the window. " :set-mouse-cursorposxy vLike :set-mouse-position but uses inside coordinates. " tv:mouse-selectwindow vIfa:mouse-buttonsor:mouse-clickmethodwantstoselectthewindowinresponseto vthe user clicking on it,it should call this function,which will do all the right things. """ DSK:LMWIND;BASWIN 7 f14-MAR-81 ""I New Window System v19 gNotication "d 1.9 Notification " DNoticationmeanstellingtheuseraboutanunexpectedoccurrence,suchasanerrorina backgroundprocess,byprintingamessageinsomesuitableplace.Thesystemprovidesforsuch messagestocomeouteitherontheselectedwindow,ifitagreestoacceptthem(Lisplisteners do),or on a special window popped-up for that purpose. " :notify-stream&optionalwindow-of-interest vSent to the selected window in order to get a stream via which to notify the user. " vWindowslikeLispListenerssimplyhandbackthemselvesandignorewindow-of-interest. vWindowswhichdon'twanttobecorruptedbyextraneousoutput,though,usuallyinclude vthepop-up-notification-mixinavor,whichcreatesapop-upwindowforuseasthe vstream,andalsotellsitwindow-of-interest,whichisthewindowthattheoutputwillbe vonbehalfof.Apop-up-notificationwindowarrangestoselectwindow-of-interestwhenit visselected(e.g.byclickingonitwiththemouse).Thepop-up-notification-mixinis vincluded in the window avor. " :notifymessage vIfmessageisastring,itisintendedfortheuser,andwillbesenttothenotication vstreamofthecurrentlyselectedwindow,obtainablebysendingthe:notify-stream vmessage.If message is a symbol,then it indicates a special type of notication: v" v:error >Thecurrentprocessgotanerror.Theusershouldbenotiedofthisfact. >Thisisakeywordasitalsoindicatestothesystemthattheprocess >receivedanerror,thusallowingittobefoundbythefunctiontv:find- >process-in-error. "@ 1.10 Self documentation " :document vPrintsdocumentationaboutthewindow.#Currently,nooneimplementsthis,and vprobably no one ever will. "@ 1.11 Margins, Borders, Labels " DThissectiondescribesthemessagesused"fromtheoutside"tocontrolbordersandlabels. Another section tells you how to dene marginal elements of your own.See . " DThebordersaretheblackboxaroundthewindow,andawhiteareainsidethisboxto separateitfromtheinteriorofthewindow.Thelabelisastringtellingwhatthewindowis, usually in the lower left-hand corner. " DThe following window-creation options are relevant. ""D DSK:LMWIND;BASWIN 7 f14-MAR-81 ""I New Window System v20 LMargins, Borders, Labels "d :bordersspec vThis controls the borders around the window.The default is t.The choices are: v" vnil >No borders. v" va symbol or a number >A specication (see below) which applies to each of the four borders. v" va list (left top right bottom) >Specications (see below) for the borders at the four edges of the window. v" va list (keyword spec...) >Specications(seebelow)forthebordersattheedgesselectedbythe >keywords,which may be among :left,:top,:right,:bottom. " vEachspecicationforaparticularbordermaybeoneofthefollowing.Itspecieshow vthick the border is,where it goes,and the function to draw it. v" vnil >No border here. v" vt >The default function with the default thickness. v" va number >The default function with the specied thickness. v" va symbol >That function with its default thickness. v" va cons (function . thickness) >That function with that thickness. v" va list (function left top right bottom) >Thatfunctioninthespeciedrectangulararea.Thisistheinternalform >thateverythingelseturnsinto,butifyouspecifythisfromtheoutside >onlythewidthandheightimpliedbythosefournumberswillbepaid >attentionto;thepositioncomesfromtherelationshipwithotherpartsof >the margin system. " vThedefault(andcurrentlyonly)borderfunctionistv:draw-rectangular-border. Its vdefault width is 1. " :border-margin-widthn-pixels vThewidthofthewhitespaceinthemarginsbetweenthebordersandtheinsideofthe vwindow.The default is 1.This doesn't do anything unless there are borders. " :labelspec vControlsthelabel.Thedefaultist,whichmakesthelabeldisplaythewindow'snamein vthe lower-left corner.Choices are: v" vnil >No label. v" vt >A label with all the default characteristics. v" v:top >Put it at the top of the window. v" v:bottom >Put it at the bottom of the window.This is usually the default. v" va string >The label is this string instead of the window's name. "Q DSK:LMWIND;BASWIN 7 f14-MAR-81 ""I New Window System v21 LMargins, Borders, Labels "d va font >Species what font to display the label in. v" va list (left top right bottom font string) >Speciesalloftheoptions.Thisistheinternalformeverythingelseis >turnedinto.Negativenumbersmeanupfromthebottomorleftfromthe >right.tv:compute-label-positionisthefunctionwhichunderstandsthis. >Externallyyoucancontrolonlytheheightandwhetheritgoesatthetop >ofthebottom;thepositioniscontrolledbyinteractionwiththerestof >the margin system. " DThe following messages are relevant. " :border-margin-width :set-border-margin-widthnew-width vGetorsetthevalueoftheborder-margin-widthinstance-variable,whichistheamount vof whitespace left between the black border and the next innermost thing in the window. " :set-bordersnew-borders vRedenetheborders.new-borderscanbethesameasthe:bordersinitoption,oritcan vbe the same as the tv:borders instance variable. " :label-size vReturns the width and height of the area occupied by the label. " :set-labelnew-label vRedenethelabel.new-labelcanbethesameasthe:labelinitoption,oritcanbethe vsame as the tv:label instance variable. """""""_ DSK:LMWIND;BASWIN 7 f14-MAR-81 ""I New Window System v22 =Function Index "d aFunction Index "d tv:mouse-select . . ?. _.  . ?. _.  . ?. J18 tv:window-create . ?. _.  . ?. _.  . ?. X2 """""""""""""  f14-MAR-81 ""I New Window System v23 EMessage Index "d dMessage Index "d :activate . ?. _.  . ?. _.  . ?. _.  . ?. X6 !:name-for-selection >. ^. ~. . >. ^. ~. . >. ^. g7 :beep . . ?. _.  . ?. _.  . ?. _.  . ?. J13 !:note-input-wait . >. ^. ~. . >. ^. ~. . >. Y14 :border-margin-width ?. _.  . ?. _.  . ?. J21 !:notify . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. Y19 :bury . . ?. _.  . ?. _.  . ?. _.  . ?. X5 !:notify-stream ~. . >. ^. ~. . >. ^. ~. . >. Y19 :center-around . . ?. _.  . ?. _.  . ?. J11 !:output-hold-exception ^. ~. . >. ^. ~. . >. Y14 :change-of-size-or-margins . . ?. _.  . ?. J11 !:position >. ^. ~. . >. ^. ~. . >. ^. ~. . >. Y10 :clear-char ?. _.  . ?. _.  . ?. _.  . ?. J12 !:priority >. ^. ~. . >. ^. ~. . >. ^. ~. . >. ^. g8 :clear-eof ?. _.  . ?. _.  . ?. _.  . ?. J12 !:read-cursorpos ~. . >. ^. ~. . >. ^. ~. . >. Y12 :clear-eol ?. _.  . ?. _.  . ?. _.  . ?. J12 !:redene-margins . >. ^. ~. . >. ^. ~. . >. Y11 :clear-input ?. _.  . ?. _.  . ?. _.  . ?. J17 !:refresh . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. ^. g5 :clear-screen _.  . ?. _.  . ?. _.  . ?. J12 !:refresh-margins . >. ^. ~. . >. ^. ~. . >. ^. g6 :deactivate ?. _.  . ?. _.  . ?. _.  . ?. X6 !:reverse-video-p . >. ^. ~. . >. ^. ~. . >. Y13 :deexpose ?. _.  . ?. _.  . ?. _.  . ?. X5 !:rubout-handler . >. ^. ~. . >. ^. ~. . >. Y17 :deexposed-typeout-action . . ?. _.  . ?. X8 !:save-bits >. ^. ~. . >. ^. ~. . >. ^. ~. . >. ^. g8 :delete-line ?. _.  . ?. _.  . ?. _.  . ?. J14 !:select . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. ^. g6 :deselect . ?. _.  . ?. _.  . ?. _.  . ?. X7 !:set-border-margin-width ~. . >. ^. ~. . >. Y21 :document ?. _.  . ?. _.  . ?. _.  . ?. J19 !:set-borders ^. ~. . >. ^. ~. . >. ^. ~. . >. Y21 :draw-rectangle . . ?. _.  . ?. _.  . ?. J13 !:set-cursorpos ~. . >. ^. ~. . >. ^. ~. . >. Y13 :edges . . ?. _.  . ?. _.  . ?. _.  . ?. J10 !:set-deexposed-typeout-action >. ^. ~. . >. ^. g8 :end-of-line-exception ?. _.  . ?. _.  . ?. J14 !:set-edges >. ^. ~. . >. ^. ~. . >. ^. ~. . >. Y10 :end-of-page-exception _.  . ?. _.  . ?. J14 !:set-font-map ~. . >. ^. ~. . >. ^. ~. . >. Y13 :expose . ?. _.  . ?. _.  . ?. _.  . ?. X4 !:set-inside-size ~. . >. ^. ~. . >. ^. ~. . >. Y10 :force-kbd-input . . ?. _.  . ?. _.  . ?. J17 !:set-io-buer ^. ~. . >. ^. ~. . >. ^. ~. . >. Y17 :fresh-line ?. _.  . ?. _.  . ?. _.  . ?. J13 !:set-label >. ^. ~. . >. ^. ~. . >. ^. ~. . >. Y21 :full-screen ?. _.  . ?. _.  . ?. _.  . ?. J10 !:set-more-p ^. ~. . >. ^. ~. . >. ^. ~. . >. Y13 :handle-exceptions . ?. _.  . ?. _.  . ?. J13 !:set-mouse-cursorpos >. ^. ~. . >. ^. ~. . >. Y18 :handle-mouse . . ?. _.  . ?. _.  . ?. J18 !:set-mouse-position >. ^. ~. . >. ^. ~. . >. Y18 :home-cursor _.  . ?. _.  . ?. _.  . ?. J12 !:set-position ^. ~. . >. ^. ~. . >. ^. ~. . >. Y11 :insert-line ?. _.  . ?. _.  . ?. _.  . ?. J14 !:set-priority ^. ~. . >. ^. ~. . >. ^. ~. . >. ^. g8 :inside-edges _.  . ?. _.  . ?. _.  . ?. J10 !:set-reverse-video-p >. ^. ~. . >. ^. ~. . >. Y13 :inside-size ?. _.  . ?. _.  . ?. _.  . ?. J10 !:set-save-bits ^. ~. . >. ^. ~. . >. ^. ~. . >. ^. g8 :io-buer ?. _.  . ?. _.  . ?. _.  . ?. J17 !:set-size >. ^. ~. . >. ^. ~. . >. ^. ~. . >. Y10 :kill . . ?. _.  . ?. _.  . ?. _.  . ?. X6 !:set-status >. ^. ~. . >. ^. ~. . >. ^. ~. . >. ^. g7 :label-size ?. _.  . ?. _.  . ?. _.  . ?. J21 !:set-superior ^. ~. . >. ^. ~. . >. ^. ~. . >. ^. g8 :line-out . ?. _.  . ?. _.  . ?. _.  . ?. J12 !:size ~. . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. Y10 :lisp-listener-p _.  . ?. _.  . ?. _.  . ?. X8 !:size-in-characters . >. ^. ~. . >. ^. ~. . >. Y10 :listen . . ?. _.  . ?. _.  . ?. _.  . ?. J17 !:status . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. ^. g7 :margins . ?. _.  . ?. _.  . ?. _.  . ?. J10 !:string-out >. ^. ~. . >. ^. ~. . >. ^. ~. . >. Y12 :more-exception . . ?. _.  . ?. _.  . ?. J14 !:tyi ~. . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. Y16 :more-p . ?. _.  . ?. _.  . ?. _.  . ?. J13 !:tyi-no-hang ^. ~. . >. ^. ~. . >. ^. ~. . >. Y16 :mouse-buttons . . ?. _.  . ?. _.  . ?. J18 !:tyo ~. . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. Y12 :mouse-click _.  . ?. _.  . ?. _.  . ?. J18 !:untyi . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. Y17 :mouse-moves _.  . ?. _.  . ?. _.  . ?. J18 !:verify-new-edges . >. ^. ~. . >. ^. ~. . >. Y11 :mouse-select _.  . ?. _.  . ?. _.  . ?. X7 !:vsp ~. . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. Y13 "  f14-MAR-81 ""I New Window System v24 EVariable Index "d hVariable Index "d tv:baseline ?. _.  . ?. _.  . ?. _.  . ?. _.  . ?. _. ~. . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. Y15 tv:baseline-adj . . ?. _.  . ?. _.  . ?. _.  . ?. _. ~. . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. Y15 tv:bit-array ?. _.  . ?. _.  . ?. _.  . ?. _.  . ?. _. ~. . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. ^. g9 tv:border-margin-width _.  . ?. _.  . ?. _.  . ?. _. ~. . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. Y12 tv:bottom-margin-size ?. _.  . ?. _.  . ?. _.  . ?. _. ~. . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. Y11 tv:char-aluf ?. _.  . ?. _.  . ?. _.  . ?. _.  . ?. _. ~. . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. Y15 tv:char-width _.  . ?. _.  . ?. _.  . ?. _.  . ?. _. ~. . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. Y15 tv:current-font . . ?. _.  . ?. _.  . ?. _.  . ?. _. ~. . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. Y15 tv:cursor-x ?. _.  . ?. _.  . ?. _.  . ?. _.  . ?. _. ~. . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. Y14 tv:cursor-y ?. _.  . ?. _.  . ?. _.  . ?. _.  . ?. _. ~. . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. Y14 tv:erase-aluf _.  . ?. _.  . ?. _.  . ?. _.  . ?. _. ~. . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. Y15 tv:font-map _.  . ?. _.  . ?. _.  . ?. _.  . ?. _. ~. . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. Y15 tv:height . ?. _.  . ?. _.  . ?. _.  . ?. _.  . ?. _. ~. . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. Y11 tv:io-buer ?. _.  . ?. _.  . ?. _.  . ?. _.  . ?. _. ~. . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. Y17 tv:left-margin-size . ?. _.  . ?. _.  . ?. _.  . ?. _. ~. . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. Y11 tv:line-height _.  . ?. _.  . ?. _.  . ?. _.  . ?. _. ~. . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. Y15 tv:more-vpos _.  . ?. _.  . ?. _.  . ?. _.  . ?. _. ~. . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. Y14 tv:name . ?. _.  . ?. _.  . ?. _.  . ?. _.  . ?. _. ~. . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. ^. g9 tv:process ?. _.  . ?. _.  . ?. _.  . ?. _.  . ?. _. ~. . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. ^. g9 tv:restored-bits-p . ?. _.  . ?. _.  . ?. _.  . ?. _. ~. . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. ^. g9 tv:right-margin-size . ?. _.  . ?. _.  . ?. _.  . ?. _. ~. . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. Y11 tv:screen-array . . ?. _.  . ?. _.  . ?. _.  . ?. _. ~. . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. ^. g9 tv:selected-window . ?. _.  . ?. _.  . ?. _.  . ?. _. ~. . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. ^. g7 tv:superior ?. _.  . ?. _.  . ?. _.  . ?. _.  . ?. _. ~. . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. ^. g9 tv:top-margin-size . ?. _.  . ?. _.  . ?. _.  . ?. _. ~. . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. Y11 tv:width . ?. _.  . ?. _.  . ?. _.  . ?. _.  . ?. _. ~. . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. Y11 tv:x-oset ?. _.  . ?. _.  . ?. _.  . ?. _.  . ?. _. ~. . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. Y11 tv:y-oset ?. _.  . ?. _.  . ?. _.  . ?. _.  . ?. _. ~. . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. Y11 """""\  f14-MAR-81 ""I New Window System v25 . ^. ~. . >. ^. ~. . >. ^. ~. . >. ^. g1  1.1 Flavor Naming Conventions _.  . ?. _.  . ?. _. ~. . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. ^. g1  1.2 Creating a Window _.  . ?. _.  . ?. _.  . ?. _. ~. . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. ^. g2  1.3 Relations Between Windows _.  . ?. _.  . ?. _. ~. . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. ^. g4  1.4 Dimensions and Margins . ?. _.  . ?. _.  . ?. _. ~. . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. ^. g9  1.5 Displaying in a Window . ?. _.  . ?. _.  . ?. _. ~. . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. Y12  1.6 Lower-level Display Primitives _.  . ?. _.  . ?. _. ~. . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. Y16  1.7 Character Input ?. _.  . ?. _.  . ?. _.  . ?. _. ~. . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. Y16  1.8 The Mouse . . ?. _.  . ?. _.  . ?. _.  . ?. _. ~. . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. Y17  1.9 Notication . . ?. _.  . ?. _.  . ?. _.  . ?. _. ~. . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. Y19  1.10 Self documentation . . ?. _.  . ?. _.  . ?. _. ~. . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. Y19  1.11 Margins, Borders, Labels ?. _.  . ?. _.  . ?. _. ~. . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. Y19 " Function Index . . ?. _.  . ?. _.  . ?. _.  . ?. _. ~. . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. Y22 Message Index . . ?. _.  . ?. _.  . ?. _.  . ?. _. ~. . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. Y23 Variable Index . . ?. _.  . ?. _.  . ?. _.  . ?. _. ~. . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. Y24 Window Creation Options . . ?. _.  . ?. _.  . ?. _. ~. . >. ^. ~. . >. ^. ~. . >. ^. ~. . >. Y25 """""""""  f14-MAR-81