diff options
Diffstat (limited to 'doc/tk4.0.ps')
-rw-r--r-- | doc/tk4.0.ps | 4602 |
1 files changed, 4602 insertions, 0 deletions
diff --git a/doc/tk4.0.ps b/doc/tk4.0.ps new file mode 100644 index 0000000..d79642d --- /dev/null +++ b/doc/tk4.0.ps @@ -0,0 +1,4602 @@ +%! +%%BoundingBox: (atend) +%%Pages: (atend) +%%DocumentFonts: (atend) +%%EndComments +%%BeginProlog +% +% FrameMaker postscript_prolog 3.0, for use with FrameMaker 3.0 +% This postscript_prolog file is Copyright (c) 1986-1991 Frame Technology +% Corporation. All rights reserved. This postscript_prolog file may be +% freely copied and distributed in conjunction with documents created using +% FrameMaker. +% NOTE +% This file fixes the problem with NeWS printers dithering color output. +% Any questions should be sent to mickey@magickingdom.eng.sun.com +% +% Known Problems: +% Due to bugs in Transcript, the 'PS-Adobe-' is omitted from line 1 +/FMversion (3.0) def +% Set up Color vs. Black-and-White + +/FMPrintInColor { % once-thru loop gimmick + % See if we're a NeWSprint printer + /currentcanvas where { + pop systemdict /separationdict known + exit + } if +% originally had the following, which should always be false: +% /currentcanvas where { +% pop currentcanvas /Color known { +% currentcanvas /Color get +% exit +% } if +% } if + systemdict /colorimage known + systemdict /currentcolortransfer known and +exit } loop def + +% Uncomment the following line to force b&w on color printer +% /FMPrintInColor false def +/FrameDict 195 dict def +systemdict /errordict known not {/errordict 10 dict def + errordict /rangecheck {stop} put} if +% The readline in 23.0 doesn't recognize cr's as nl's on AppleTalk +FrameDict /tmprangecheck errordict /rangecheck get put +errordict /rangecheck {FrameDict /bug true put} put +FrameDict /bug false put +mark +% Some PS machines read past the CR, so keep the following 3 lines together! +currentfile 5 string readline +00 +0000000000 +cleartomark +errordict /rangecheck FrameDict /tmprangecheck get put +FrameDict /bug get { + /readline { + /gstring exch def + /gfile exch def + /gindex 0 def + { + gfile read pop + dup 10 eq {exit} if + dup 13 eq {exit} if + gstring exch gindex exch put + /gindex gindex 1 add def + } loop + pop + gstring 0 gindex getinterval true + } def + } if +/FMVERSION { + FMversion ne { + /Times-Roman findfont 18 scalefont setfont + 100 100 moveto + (FrameMaker version does not match postscript_prolog!) + dup = + show showpage + } if + } def +/FMLOCAL { + FrameDict begin + 0 def + end + } def + /gstring FMLOCAL + /gfile FMLOCAL + /gindex FMLOCAL + /orgxfer FMLOCAL + /orgproc FMLOCAL + /organgle FMLOCAL + /orgfreq FMLOCAL + /yscale FMLOCAL + /xscale FMLOCAL + /manualfeed FMLOCAL + /paperheight FMLOCAL + /paperwidth FMLOCAL +/FMDOCUMENT { + array /FMfonts exch def + /#copies exch def + FrameDict begin + 0 ne dup {setmanualfeed} if + /manualfeed exch def + /paperheight exch def + /paperwidth exch def + /yscale exch def + /xscale exch def + currenttransfer cvlit /orgxfer exch def + currentscreen cvlit /orgproc exch def + /organgle exch def /orgfreq exch def + setpapername + manualfeed {true} {papersize} ifelse + {manualpapersize} {false} ifelse + {desperatepapersize} if + end + } def + /pagesave FMLOCAL + /orgmatrix FMLOCAL + /landscape FMLOCAL +/FMBEGINPAGE { + FrameDict begin + /pagesave save def + 3.86 setmiterlimit + /landscape exch 0 ne def + landscape { + 90 rotate 0 exch neg translate pop + } + {pop pop} + ifelse + xscale yscale scale + /orgmatrix matrix def + gsave + } def +/FMENDPAGE { + grestore + pagesave restore + end + showpage + } def +/FMFONTDEFINE { + FrameDict begin + findfont + ReEncode + 1 index exch + definefont + FMfonts 3 1 roll + put + end + } def +/FMFILLS { + FrameDict begin + array /fillvals exch def + end + } def +/FMFILL { + FrameDict begin + fillvals 3 1 roll put + end + } def +/FMNORMALIZEGRAPHICS { + newpath + 0.0 0.0 moveto + 1 setlinewidth + 0 setlinecap + 0 0 0 sethsbcolor + 0 setgray + } bind def + /fx FMLOCAL + /fy FMLOCAL + /fh FMLOCAL + /fw FMLOCAL + /llx FMLOCAL + /lly FMLOCAL + /urx FMLOCAL + /ury FMLOCAL +/FMBEGINEPSF { + end + /FMEPSF save def + /showpage {} def + FMNORMALIZEGRAPHICS + [/fy /fx /fh /fw /ury /urx /lly /llx] {exch def} forall + fx fy translate + rotate + fw urx llx sub div fh ury lly sub div scale + llx neg lly neg translate + } bind def +/FMENDEPSF { + FMEPSF restore + FrameDict begin + } bind def +FrameDict begin +/setmanualfeed { +%%BeginFeature *ManualFeed True + statusdict /manualfeed true put +%%EndFeature + } def +/max {2 copy lt {exch} if pop} bind def +/min {2 copy gt {exch} if pop} bind def +/inch {72 mul} def +/pagedimen { + paperheight sub abs 16 lt exch + paperwidth sub abs 16 lt and + {/papername exch def} {pop} ifelse + } def + /papersizedict FMLOCAL +/setpapername { + /papersizedict 14 dict def + papersizedict begin + /papername /unknown def + /Letter 8.5 inch 11.0 inch pagedimen + /LetterSmall 7.68 inch 10.16 inch pagedimen + /Tabloid 11.0 inch 17.0 inch pagedimen + /Ledger 17.0 inch 11.0 inch pagedimen + /Legal 8.5 inch 14.0 inch pagedimen + /Statement 5.5 inch 8.5 inch pagedimen + /Executive 7.5 inch 10.0 inch pagedimen + /A3 11.69 inch 16.5 inch pagedimen + /A4 8.26 inch 11.69 inch pagedimen + /A4Small 7.47 inch 10.85 inch pagedimen + /B4 10.125 inch 14.33 inch pagedimen + /B5 7.16 inch 10.125 inch pagedimen + end + } def +/papersize { + papersizedict begin + /Letter {lettertray letter} def + /LetterSmall {lettertray lettersmall} def + /Tabloid {11x17tray 11x17} def + /Ledger {ledgertray ledger} def + /Legal {legaltray legal} def + /Statement {statementtray statement} def + /Executive {executivetray executive} def + /A3 {a3tray a3} def + /A4 {a4tray a4} def + /A4Small {a4tray a4small} def + /B4 {b4tray b4} def + /B5 {b5tray b5} def + /unknown {unknown} def + papersizedict dup papername known {papername} {/unknown} ifelse get + end + /FMdicttop countdictstack 1 add def + statusdict begin stopped end + countdictstack -1 FMdicttop {pop end} for + } def +/manualpapersize { + papersizedict begin + /Letter {letter} def + /LetterSmall {lettersmall} def + /Tabloid {11x17} def + /Ledger {ledger} def + /Legal {legal} def + /Statement {statement} def + /Executive {executive} def + /A3 {a3} def + /A4 {a4} def + /A4Small {a4small} def + /B4 {b4} def + /B5 {b5} def + /unknown {unknown} def + papersizedict dup papername known {papername} {/unknown} ifelse get + end + stopped + } def +/desperatepapersize { + statusdict /setpageparams known + { + paperwidth paperheight 0 1 + statusdict begin + {setpageparams} stopped pop + end + } if + } def +/savematrix { + orgmatrix currentmatrix pop + } bind def +/restorematrix { + orgmatrix setmatrix + } bind def +/dmatrix matrix def +/dpi 72 0 dmatrix defaultmatrix dtransform + dup mul exch dup mul add sqrt def +/freq dpi 18.75 div 8 div round dup 0 eq {pop 1} if 8 mul dpi exch div def +/sangle 1 0 dmatrix defaultmatrix dtransform exch atan def +/DiacriticEncoding [ +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl +/numbersign /dollar /percent /ampersand /quotesingle /parenleft +/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one +/two /three /four /five /six /seven /eight /nine /colon /semicolon +/less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K +/L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash +/bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h +/i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar +/braceright /asciitilde /.notdef /Adieresis /Aring /Ccedilla /Eacute +/Ntilde /Odieresis /Udieresis /aacute /agrave /acircumflex /adieresis +/atilde /aring /ccedilla /eacute /egrave /ecircumflex /edieresis +/iacute /igrave /icircumflex /idieresis /ntilde /oacute /ograve +/ocircumflex /odieresis /otilde /uacute /ugrave /ucircumflex +/udieresis /dagger /.notdef /cent /sterling /section /bullet +/paragraph /germandbls /registered /copyright /trademark /acute +/dieresis /.notdef /AE /Oslash /.notdef /.notdef /.notdef /.notdef +/yen /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/ordfeminine /ordmasculine /.notdef /ae /oslash /questiondown +/exclamdown /logicalnot /.notdef /florin /.notdef /.notdef +/guillemotleft /guillemotright /ellipsis /.notdef /Agrave /Atilde +/Otilde /OE /oe /endash /emdash /quotedblleft /quotedblright +/quoteleft /quoteright /.notdef /.notdef /ydieresis /Ydieresis +/fraction /currency /guilsinglleft /guilsinglright /fi /fl /daggerdbl +/periodcentered /quotesinglbase /quotedblbase /perthousand +/Acircumflex /Ecircumflex /Aacute /Edieresis /Egrave /Iacute +/Icircumflex /Idieresis /Igrave /Oacute /Ocircumflex /.notdef /Ograve +/Uacute /Ucircumflex /Ugrave /dotlessi /circumflex /tilde /macron +/breve /dotaccent /ring /cedilla /hungarumlaut /ogonek /caron +] def +/ReEncode { + dup + length + dict begin + { + 1 index /FID ne + {def} + {pop pop} ifelse + } forall + 0 eq {/Encoding DiacriticEncoding def} if + currentdict + end + } bind def +/graymode true def + /bwidth FMLOCAL + /bpside FMLOCAL + /bstring FMLOCAL + /onbits FMLOCAL + /offbits FMLOCAL + /xindex FMLOCAL + /yindex FMLOCAL + /x FMLOCAL + /y FMLOCAL +/setpattern { + /bwidth exch def + /bpside exch def + /bstring exch def + /onbits 0 def /offbits 0 def + freq sangle landscape {90 add} if + {/y exch def + /x exch def + /xindex x 1 add 2 div bpside mul cvi def + /yindex y 1 add 2 div bpside mul cvi def + bstring yindex bwidth mul xindex 8 idiv add get + 1 7 xindex 8 mod sub bitshift and 0 ne + {/onbits onbits 1 add def 1} + {/offbits offbits 1 add def 0} + ifelse + } + setscreen + {} settransfer + offbits offbits onbits add div FMsetgray + /graymode false def + } bind def +/grayness { + FMsetgray + graymode not { + /graymode true def + orgxfer cvx settransfer + orgfreq organgle orgproc cvx setscreen + } if + } bind def + /HUE FMLOCAL + /SAT FMLOCAL + /BRIGHT FMLOCAL + /Colors FMLOCAL +FMPrintInColor + + { + /HUE 0 def + /SAT 0 def + /BRIGHT 0 def + % array of arrays Hue and Sat values for the separations [HUE BRIGHT] + /Colors + [[0 0 ] % black + [0 0 ] % white + [0.00 1.0] % red + [0.37 1.0] % green + [0.60 1.0] % blue + [0.50 1.0] % cyan + [0.83 1.0] % magenta + [0.16 1.0] % comment / yellow + ] def + + /BEGINBITMAPCOLOR { + BITMAPCOLOR} def + /BEGINBITMAPCOLORc { + BITMAPCOLORc} def + /BEGINBITMAPTRUECOLOR { + BITMAPTRUECOLOR } def + /BEGINBITMAPTRUECOLORc { + BITMAPTRUECOLORc } def + /K { + Colors exch get dup + 0 get /HUE exch store + 1 get /BRIGHT exch store + HUE 0 eq BRIGHT 0 eq and + {1.0 SAT sub setgray} + {HUE SAT BRIGHT sethsbcolor} + ifelse + } def + /FMsetgray { + /SAT exch 1.0 exch sub store + HUE 0 eq BRIGHT 0 eq and + {1.0 SAT sub setgray} + {HUE SAT BRIGHT sethsbcolor} + ifelse + } bind def + } + + { + /BEGINBITMAPCOLOR { + BITMAPGRAY} def + /BEGINBITMAPCOLORc { + BITMAPGRAYc} def + /BEGINBITMAPTRUECOLOR { + BITMAPTRUEGRAY } def + /BEGINBITMAPTRUECOLORc { + BITMAPTRUEGRAYc } def + /FMsetgray {setgray} bind def + /K { + pop + } def + } +ifelse +/normalize { + transform round exch round exch itransform + } bind def +/dnormalize { + dtransform round exch round exch idtransform + } bind def +/lnormalize { + 0 dtransform exch cvi 2 idiv 2 mul 1 add exch idtransform pop + } bind def +/H { + lnormalize setlinewidth + } bind def +/Z { + setlinecap + } bind def + /fillvals FMLOCAL +/X { + fillvals exch get + dup type /stringtype eq + {8 1 setpattern} + {grayness} + ifelse + } bind def +/V { + gsave eofill grestore + } bind def +/N { + stroke + } bind def +/M {newpath moveto} bind def +/E {lineto} bind def +/D {curveto} bind def +/O {closepath} bind def + /n FMLOCAL +/L { + /n exch def + newpath + normalize + moveto + 2 1 n {pop normalize lineto} for + } bind def +/Y { + L + closepath + } bind def + /x1 FMLOCAL + /x2 FMLOCAL + /y1 FMLOCAL + /y2 FMLOCAL + /rad FMLOCAL +/R { + /y2 exch def + /x2 exch def + /y1 exch def + /x1 exch def + x1 y1 + x2 y1 + x2 y2 + x1 y2 + 4 Y + } bind def +/RR { + /rad exch def + normalize + /y2 exch def + /x2 exch def + normalize + /y1 exch def + /x1 exch def + newpath + x1 y1 rad add moveto + x1 y2 x2 y2 rad arcto + x2 y2 x2 y1 rad arcto + x2 y1 x1 y1 rad arcto + x1 y1 x1 y2 rad arcto + closepath + 16 {pop} repeat + } bind def +/C { + grestore + gsave + R + clip + } bind def + /FMpointsize FMLOCAL +/F { + FMfonts exch get + FMpointsize scalefont + setfont + } bind def +/Q { + /FMpointsize exch def + F + } bind def +/T { + moveto show + } bind def +/RF { + rotate + 0 ne {-1 1 scale} if + } bind def +/TF { + gsave + moveto + RF + show + grestore + } bind def +/P { + moveto + 0 32 3 2 roll widthshow + } bind def +/PF { + gsave + moveto + RF + 0 32 3 2 roll widthshow + grestore + } bind def +/S { + moveto + 0 exch ashow + } bind def +/SF { + gsave + moveto + RF + 0 exch ashow + grestore + } bind def +/B { + moveto + 0 32 4 2 roll 0 exch awidthshow + } bind def +/BF { + gsave + moveto + RF + 0 32 4 2 roll 0 exch awidthshow + grestore + } bind def +/G { + gsave + newpath + normalize translate 0.0 0.0 moveto + dnormalize scale + 0.0 0.0 1.0 5 3 roll arc + closepath fill + grestore + } bind def +/A { + gsave + savematrix + newpath + 2 index 2 div add exch 3 index 2 div sub exch + normalize 2 index 2 div sub exch 3 index 2 div add exch + translate + scale + 0.0 0.0 1.0 5 3 roll arc + restorematrix + stroke + grestore + } bind def + /x FMLOCAL + /y FMLOCAL + /w FMLOCAL + /h FMLOCAL + /xx FMLOCAL + /yy FMLOCAL + /ww FMLOCAL + /hh FMLOCAL + /FMsaveobject FMLOCAL + /FMoptop FMLOCAL + /FMdicttop FMLOCAL +/BEGINPRINTCODE { + /FMdicttop countdictstack 1 add def + /FMoptop count 4 sub def + /FMsaveobject save def + userdict begin + /showpage {} def + FMNORMALIZEGRAPHICS + 3 index neg 3 index neg translate + } bind def +/ENDPRINTCODE { + count -1 FMoptop {pop pop} for + countdictstack -1 FMdicttop {pop end} for + FMsaveobject restore + } bind def +/gn { + 0 + { 46 mul + cf read pop + 32 sub + dup 46 lt {exit} if + 46 sub add + } loop + add + } bind def + /str FMLOCAL +/cfs { + /str sl string def + 0 1 sl 1 sub {str exch val put} for + str def + } bind def +/ic [ + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223 + 0 + {0 hx} {1 hx} {2 hx} {3 hx} {4 hx} {5 hx} {6 hx} {7 hx} {8 hx} {9 hx} + {10 hx} {11 hx} {12 hx} {13 hx} {14 hx} {15 hx} {16 hx} {17 hx} {18 hx} + {19 hx} {gn hx} {0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10} {11} {12} + {13} {14} {15} {16} {17} {18} {19} {gn} {0 wh} {1 wh} {2 wh} {3 wh} + {4 wh} {5 wh} {6 wh} {7 wh} {8 wh} {9 wh} {10 wh} {11 wh} {12 wh} + {13 wh} {14 wh} {gn wh} {0 bl} {1 bl} {2 bl} {3 bl} {4 bl} {5 bl} {6 bl} + {7 bl} {8 bl} {9 bl} {10 bl} {11 bl} {12 bl} {13 bl} {14 bl} {gn bl} + {0 fl} {1 fl} {2 fl} {3 fl} {4 fl} {5 fl} {6 fl} {7 fl} {8 fl} {9 fl} + {10 fl} {11 fl} {12 fl} {13 fl} {14 fl} {gn fl} + ] def + /sl FMLOCAL + /val FMLOCAL + /ws FMLOCAL + /im FMLOCAL + /bs FMLOCAL + /cs FMLOCAL + /len FMLOCAL + /pos FMLOCAL +/ms { + /sl exch def + /val 255 def + /ws cfs + /im cfs + /val 0 def + /bs cfs + /cs cfs + } bind def +400 ms +/ip { + is + 0 + cf cs readline pop + { ic exch get exec + add + } forall + pop + + } bind def +/wh { + /len exch def + /pos exch def + ws 0 len getinterval im pos len getinterval copy pop + pos len + } bind def +/bl { + /len exch def + /pos exch def + bs 0 len getinterval im pos len getinterval copy pop + pos len + } bind def +/s1 1 string def +/fl { + /len exch def + /pos exch def + /val cf s1 readhexstring pop 0 get def + pos 1 pos len add 1 sub {im exch val put} for + pos len + } bind def +/hx { + 3 copy getinterval + cf exch readhexstring pop pop + } bind def + /h FMLOCAL + /w FMLOCAL + /d FMLOCAL + /lb FMLOCAL + /bitmapsave FMLOCAL + /is FMLOCAL + /cf FMLOCAL +/wbytes { + dup + 8 eq {pop} {1 eq {7 add 8 idiv} {3 add 4 idiv} ifelse} ifelse + } bind def +/BEGINBITMAPBWc { + 1 {} COMMONBITMAPc + } bind def +/BEGINBITMAPGRAYc { + 8 {} COMMONBITMAPc + } bind def +/BEGINBITMAP2BITc { + 2 {} COMMONBITMAPc + } bind def +/COMMONBITMAPc { + /r exch def + /d exch def + gsave + translate rotate scale /h exch def /w exch def + /lb w d wbytes def + sl lb lt {lb ms} if + /bitmapsave save def + r + /is im 0 lb getinterval def + ws 0 lb getinterval is copy pop + /cf currentfile def + w h d [w 0 0 h neg 0 h] + {ip} image + bitmapsave restore + grestore + } bind def +/BEGINBITMAPBW { + 1 {} COMMONBITMAP + } bind def +/BEGINBITMAPGRAY { + 8 {} COMMONBITMAP + } bind def +/BEGINBITMAP2BIT { + 2 {} COMMONBITMAP + } bind def +/COMMONBITMAP { + /r exch def + /d exch def + gsave + translate rotate scale /h exch def /w exch def + /bitmapsave save def + r + /is w d wbytes string def + /cf currentfile def + w h d [w 0 0 h neg 0 h] + {cf is readhexstring pop} image + bitmapsave restore + grestore + } bind def + /proc1 FMLOCAL + /proc2 FMLOCAL + /newproc FMLOCAL +/Fmcc { + /proc2 exch cvlit def + /proc1 exch cvlit def + /newproc proc1 length proc2 length add array def + newproc 0 proc1 putinterval + newproc proc1 length proc2 putinterval + newproc cvx +} bind def +/ngrayt 256 array def +/nredt 256 array def +/nbluet 256 array def +/ngreent 256 array def + /gryt FMLOCAL + /blut FMLOCAL + /grnt FMLOCAL + /redt FMLOCAL + /indx FMLOCAL + /cynu FMLOCAL + /magu FMLOCAL + /yelu FMLOCAL + /k FMLOCAL + /u FMLOCAL +/colorsetup { + currentcolortransfer + /gryt exch def + /blut exch def + /grnt exch def + /redt exch def + 0 1 255 { + /indx exch def + /cynu 1 red indx get 255 div sub def + /magu 1 green indx get 255 div sub def + /yelu 1 blue indx get 255 div sub def + /k cynu magu min yelu min def + /u k currentundercolorremoval exec def + nredt indx 1 0 cynu u sub max sub redt exec put + ngreent indx 1 0 magu u sub max sub grnt exec put + nbluet indx 1 0 yelu u sub max sub blut exec put + ngrayt indx 1 k currentblackgeneration exec sub gryt exec put + } for + {255 mul cvi nredt exch get} + {255 mul cvi ngreent exch get} + {255 mul cvi nbluet exch get} + {255 mul cvi ngrayt exch get} + setcolortransfer + {pop 0} setundercolorremoval + {} setblackgeneration + } bind def + /tran FMLOCAL +/fakecolorsetup { + /tran 256 string def + 0 1 255 {/indx exch def + tran indx + red indx get 77 mul + green indx get 151 mul + blue indx get 28 mul + add add 256 idiv put} for + currenttransfer + {255 mul cvi tran exch get 255.0 div} + exch Fmcc settransfer +} bind def +/BITMAPCOLOR { + /d 8 def + gsave + translate rotate scale /h exch def /w exch def + /bitmapsave save def + colorsetup + /is w d wbytes string def + /cf currentfile def + w h d [w 0 0 h neg 0 h] + {cf is readhexstring pop} {is} {is} true 3 colorimage + bitmapsave restore + grestore + } bind def +/BITMAPCOLORc { + /d 8 def + gsave + translate rotate scale /h exch def /w exch def + /lb w d wbytes def + sl lb lt {lb ms} if + /bitmapsave save def + colorsetup + /is im 0 lb getinterval def + ws 0 lb getinterval is copy pop + /cf currentfile def + w h d [w 0 0 h neg 0 h] + {ip} {is} {is} true 3 colorimage + bitmapsave restore + grestore + } bind def +/BITMAPTRUECOLORc { + gsave + translate rotate scale /h exch def /w exch def + /bitmapsave save def + + /is w string def + + ws 0 w getinterval is copy pop + /cf currentfile def + w h 8 [w 0 0 h neg 0 h] + {ip} {gip} {bip} true 3 colorimage + bitmapsave restore + grestore + } bind def +/BITMAPTRUECOLOR { + gsave + translate rotate scale /h exch def /w exch def + /bitmapsave save def + /is w string def + /gis w string def + /bis w string def + /cf currentfile def + w h 8 [w 0 0 h neg 0 h] + { cf is readhexstring pop } + { cf gis readhexstring pop } + { cf bis readhexstring pop } + true 3 colorimage + bitmapsave restore + grestore + } bind def +/BITMAPTRUEGRAYc { + gsave + translate rotate scale /h exch def /w exch def + /bitmapsave save def + + /is w string def + + ws 0 w getinterval is copy pop + /cf currentfile def + w h 8 [w 0 0 h neg 0 h] + {ip gip bip w gray} image + bitmapsave restore + grestore + } bind def +/ww FMLOCAL +/r FMLOCAL +/g FMLOCAL +/b FMLOCAL +/i FMLOCAL +/gray { + /ww exch def + /b exch def + /g exch def + /r exch def + 0 1 ww 1 sub { /i exch def r i get .299 mul g i get .587 mul + b i get .114 mul add add r i 3 -1 roll floor cvi put } for + r + } bind def +/BITMAPTRUEGRAY { + gsave + translate rotate scale /h exch def /w exch def + /bitmapsave save def + /is w string def + /gis w string def + /bis w string def + /cf currentfile def + w h 8 [w 0 0 h neg 0 h] + { cf is readhexstring pop + cf gis readhexstring pop + cf bis readhexstring pop w gray} image + bitmapsave restore + grestore + } bind def +/BITMAPGRAY { + 8 {fakecolorsetup} COMMONBITMAP + } bind def +/BITMAPGRAYc { + 8 {fakecolorsetup} COMMONBITMAPc + } bind def +/ENDBITMAP { + } bind def +end + /ALDsave FMLOCAL + /ALDmatrix matrix def ALDmatrix currentmatrix pop +/StartALD { + /ALDsave save def + savematrix + ALDmatrix setmatrix + } bind def +/InALD { + restorematrix + } bind def +/DoneALD { + ALDsave restore + } bind def +%%EndProlog +%%BeginSetup +(3.0) FMVERSION +1 1 612 792 0 1 13 FMDOCUMENT +0 0 /Helvetica-Bold FMFONTDEFINE +1 0 /Times-Bold FMFONTDEFINE +2 0 /Times-Italic FMFONTDEFINE +3 0 /Times-Roman FMFONTDEFINE +4 0 /Helvetica FMFONTDEFINE +5 0 /Courier FMFONTDEFINE +6 0 /Courier-Oblique FMFONTDEFINE +32 FMFILLS +0 0 FMFILL +1 0.1 FMFILL +2 0.3 FMFILL +3 0.5 FMFILL +4 0.7 FMFILL +5 0.9 FMFILL +6 0.97 FMFILL +7 1 FMFILL +8 <0f1e3c78f0e1c387> FMFILL +9 <0f87c3e1f0783c1e> FMFILL +10 <cccccccccccccccc> FMFILL +11 <ffff0000ffff0000> FMFILL +12 <8142241818244281> FMFILL +13 <03060c183060c081> FMFILL +14 <8040201008040201> FMFILL +16 1 FMFILL +17 0.9 FMFILL +18 0.7 FMFILL +19 0.5 FMFILL +20 0.3 FMFILL +21 0.1 FMFILL +22 0.03 FMFILL +23 0 FMFILL +24 <f0e1c3870f1e3c78> FMFILL +25 <f0783c1e0f87c3e1> FMFILL +26 <3333333333333333> FMFILL +27 <0000ffff0000ffff> FMFILL +28 <7ebddbe7e7dbbd7e> FMFILL +29 <fcf9f3e7cf9f3f7e> FMFILL +30 <7fbfdfeff7fbfdfe> FMFILL +%%EndSetup +%%Page: "1" 1 +%%BeginPaperSize: Letter +%%EndPaperSize +612 792 0 FMBEGINPAGE +98.1 675 512.1 675 2 L +7 X +0 K +V +2 H +0 Z +0 X +N +98.1 450 512.1 450 2 L +7 X +V +2 Z +0 X +N +98.1 108 512.1 126 R +7 X +V +0 10 Q +0 X +(1) 506.54 119.33 T +1 24 Q +-0.48 (Tk4.0 Overview and Porting Guide) 152.1 605 S +2 12 Q +(John Ouster) 152.1 563 T +(hout) 210.84 563 T +98.1 135 512.1 423 R +7 X +V +3 10 Q +0 X +(Tk version 4.0 is a major new release with many improvements, new features, and bug) 152.1 416.33 T +(\336xes. This document provides an introduction to the new features and describes the most) 152.1 404.33 T +-0.18 (common problems you are likely to encounter when porting scripts from Tk 3.6, the previ-) 152.1 392.33 P +(ous release. This is) 152.1 380.33 T +2 F +(not) 230.66 380.33 T +3 F +( an introduction to Tk: I assume that you are already familiar with) 243.43 380.33 T +(Tk 3.6 as described in the book) 152.1 368.33 T +2 F +(T) 279.79 368.33 T +(cl and the Tk T) 284.43 368.33 T +(oolkit) 343.48 368.33 T +3 F +(.) 366.24 368.33 T +-0.26 (The good news about Tk 4.0 is that it has many improvements over Tk 3.6. Here are a) 170.1 356.33 P +(few of the most important new features:) 152.1 344.33 T +3 12 Q +(\245) 152.1 329.33 T +3 10 Q +(Tk 4.0 includes a general-purpose mechanism for manipulating color images \050Tk 3.6) 162.9 329.33 T +(supports only monochrome images\051.) 162.9 317.33 T +3 12 Q +(\245) 152.1 302.33 T +3 10 Q +-0.17 (The text widget in Tk 4.0 includes many new features such as tab stops, embedded win-) 162.9 302.33 P +(dows, horizontal scrolling, and many new formatting options.) 162.9 290.33 T +3 12 Q +(\245) 152.1 275.33 T +3 10 Q +(The binding mechanism in Tk 4.0 is much more powerful in Tk 3.6.) 162.9 275.33 T +3 12 Q +(\245) 152.1 260.33 T +3 10 Q +(Motif compliance is much better) 162.9 260.33 T +(. For example, there is now support for keyboard tra-) 292.82 260.33 T +(versal and focus highlights.) 162.9 248.33 T +3 12 Q +(\245) 152.1 233.33 T +3 10 Q +(Many widgets have been improved. For example, buttons and labels can display multi-) 162.9 233.33 T +(line justi\336ed text, and scales can handle real values.) 162.9 221.33 T +(The bad news about Tk 4.0 is that it contains several incompatibilities with Tk 3.6.) 170.1 206.33 T +(Ever since the \336rst release of Tk I have assumed that there would eventually be a major) 152.1 194.33 T +(new release of Tk with substantial incompatibilities. I knew that I wouldn\325) 152.1 182.33 T +(t be able to get) 450.06 182.33 T +(all of the features of Tk right the \336rst time; rather than live forever with all of my early) 152.1 170.33 T +(mistakes, I wanted to have a chance to correct them. Tk 4.0 is that correction. I apologize) 152.1 158.33 T +-0.05 (for the incompatibilities, but I hope they improve Tk enough to justify the dif) 152.1 146.33 P +-0.05 (\336culties you) 460.55 146.33 P +44.1 351 98.1 423 C +35.1 360 197.1 414 R +7 X +0 K +V +1 9 Q +0 X +(FIGURE 1) 35.1 408 T +(T) 35.1 387 T +(ABLE 1) 40.43 387 T +26.1 351 125.1 423 R +7 X +V +40.5 63 571.5 729 C +FMENDPAGE +%%EndPage: "1" 2 +%%Page: "2" 2 +612 792 0 FMBEGINPAGE +0 10 Q +0 X +0 K +(2) 98.1 668.33 T +4 F +(Tk4.0 Overview and Porting Guide) 359.34 668.33 T +98.1 660.6 512.1 660.6 2 L +0.25 H +0 Z +N +98.1 135 512.1 639 R +7 X +V +3 F +0 X +(encounter during porting. Tk 4.0 is a one-time correction: we will try very hard to avoid) 152.1 632.33 T +(substantial incompatibilities \050especially in Tk\325) 152.1 620.3 T +(s T) 337 620.3 T +(cl-level interfaces\051 in future releases.) 348.79 620.3 T +-0.4 (Sections 1-1) 170.1 608.3 P +-0.4 (1 cover the major areas of change in Tk 4.0: bindings, focus, text widgets,) 219.02 608.3 P +-0 (Motif compliance, other widget changes, images, color management, event handling, sup-) 152.1 596.26 P +(port for multiple displays, the) 152.1 584.23 T +5 F +(send) 273.14 584.23 T +3 F +( command, and the selection. Section 12 summarizes) 297.13 584.23 T +(several smaller changes. Section 13 lists all of the incompatibilities that af) 152.1 572.19 T +(fect T) 448.4 572.19 T +(cl scripts,) 471.29 572.19 T +-0.02 (along with suggestions for how to deal with them. The explanations here are not intended) 152.1 560.16 P +(to be comprehensive, but rather to introduce you to the issues; for complete information) 152.1 548.12 T +(on new or modi\336ed commands, refer to the reference documentation that comes with the) 152.1 536.09 T +(distribution.) 152.1 524.05 T +98.1 480.7 512.1 483.72 C +152.1 481.92 512.1 481.92 2 L +0.5 H +2 Z +0 X +0 K +N +98.1 482.21 143.1 482.21 2 L +0 Z +N +40.5 63 571.5 729 C +0 12 Q +0 X +0 K +(1) 134.63 487.72 T +(Bindings) 152.1 487.72 T +3 10 Q +-0.35 (The changes for Tk 4.0 that are most likely to af) 152.1 464.03 P +-0.35 (fect existing T) 341.31 464.03 P +-0.35 (cl scripts are those related to) 397.64 464.03 P +(bindings. The new binding mechanism in Tk 4.0 is much more powerful than that of Tk) 152.1 452 T +(3.6, particularly in the way it allows behaviors to be combined, but several incompatible) 152.1 439.96 T +(changes were required to implement the new features. These changes are likely to break) 152.1 427.93 T +(most Tk 3.6 scripts. Fortunately) 152.1 415.89 T +(, it is relatively easy to upgrade your bindings to work) 279.16 415.89 T +(under Tk 4.0.) 152.1 403.86 T +-0.27 (The basic mechanism for bindings is the same as in Tk 3.6. A binding associates a T) 170.1 391.86 P +-0.27 (cl) 502.65 391.86 P +(script with a particular event \050or sequence of events\051 occurring in one or more windows;) 152.1 379.82 T +-0.11 (the script will be invoked automatically whenever the event sequence occurs in any of the) 152.1 367.79 P +-0.13 (speci\336ed windows. The Tk 4.0 binding mechanism has three major feature changes. First,) 152.1 355.75 P +(there is a more general mechanism for specifying the relationship between windows and) 152.1 343.72 T +(bindings, called) 152.1 331.68 T +2 F +(binding tags) 217.89 331.68 T +3 F +(. Second, the con\337ict resolution mechanism \050which is) 267.6 331.68 T +(invoked when more than one binding matches an event\051 has been changed to allow more) 152.1 319.65 T +(than one binding script to execute for a single event. Third, the) 152.1 307.61 T +5 F +(Any) 405.81 307.61 T +3 F +( modi\336er is now) 423.8 307.61 T +(implicit in all binding patterns. These changes are discussed separately in the subsections) 152.1 295.58 T +(that follow) 152.1 283.54 T +(.) 195.04 283.54 T +-0.16 (Overall, the main ef) 170.1 271.54 P +-0.16 (fect of Tk 4.0\325) 249.37 271.54 P +-0.16 (s binding changes is that it allows more bindings to) 306.06 271.54 P +(trigger than Tk 3.6 does. Feedback from the T) 152.1 259.51 T +(cl/Tk community about the Tk 3.6 binding) 335.71 259.51 T +(mechanism indicated that it was too conservative about triggering bindings. This caused) 152.1 247.47 T +(the system to lose behaviors relatively easily and made the binding structure fragile. It) 152.1 235.44 T +-0.35 (appears to be easier to deal with too many binding invocations than too few) 152.1 223.4 P +-0.35 (, so Tk 4.0 tries) 449.17 223.4 P +(to err in this direction.) 152.1 211.37 T +0 F +(1.1) 127.41 181.37 T +(Binding tags) 152.1 181.37 T +3 F +(In Tk 3.6 you specify the window\050s\051 for a binding in one of three ways:) 152.1 165.37 T +3 12 Q +(\245) 152.1 150.37 T +3 10 Q +(Y) 162.9 150.37 T +(ou give the name of a window) 169.12 150.37 T +(, such as) 289.49 150.37 T +5 F +(.a.b.c) 326.13 150.37 T +3 F +(, in which case the binding applies) 362.11 150.37 T +(only to that window) 162.9 138.33 T +(.) 242.49 138.33 T +FMENDPAGE +%%EndPage: "2" 3 +%%Page: "3" 3 +612 792 0 FMBEGINPAGE +4 10 Q +0 X +0 K +(1 Bindings) 98.1 668.33 T +0 F +(3) 506.54 668.33 T +98.1 660.6 512.1 660.6 2 L +0.25 H +0 Z +N +98.1 135 512.1 639 R +7 X +V +3 12 Q +0 X +(\245) 152.1 632.33 T +3 10 Q +-0.06 (Y) 162.9 632.33 P +-0.06 (ou give the name of a class, such as) 169.12 632.33 P +5 F +-0.15 (Button) 313.45 632.33 P +3 F +-0.06 (, in which case the binding applies to all) 349.43 632.33 P +(the windows of that class.) 162.9 620.33 T +3 12 Q +(\245) 152.1 605.33 T +3 10 Q +(Y) 162.9 605.33 T +(ou specify) 169.12 605.33 T +5 F +(all) 212.97 605.33 T +3 F +(, in which case the binding applies to all windows.) 230.96 605.33 T +-0.3 (In Tk4.0 you specify the window\050s\051 using a more general mechanism called a) 170.1 590.33 P +2 F +-0.3 (binding) 479.35 590.33 P +(tag) 152.1 578.33 T +3 F +(. A binding tag may be an arbitrary string, but if it starts with a \322.\323 then it must be the) 164.87 578.33 T +(name of a window) 152.1 566.33 T +(. If you specify a class name or) 225.56 566.33 T +5 F +(all) 352.4 566.33 T +3 F +( as a binding tag, it will usually) 370.39 566.33 T +-0.1 (have the same ef) 152.1 554.33 P +-0.1 (fect as in Tk 3.6, but you may also specify other strings that were not per-) 218.51 554.33 P +(mitted in Tk 3.6.) 152.1 542.33 T +-0.07 (Each window in Tk 4.0 has a list of binding tags. When an event occurs in a window) 170.1 530.33 P +-0.07 (,) 507.17 530.33 P +-0.19 (Tk fetches the window\325) 152.1 518.33 P +-0.19 (s binding tags and matches the event against all of the bindings for) 245.62 518.33 P +-0.09 (any of the tags. By default, the binding tags for a window consist of the window name, its) 152.1 506.33 P +-0.14 (class name, the name of its nearest toplevel ancestor) 152.1 494.33 P +-0.14 (, and) 359.61 494.33 P +5 F +-0.33 (all) 381.26 494.33 P +3 F +-0.14 (. For example, a button win-) 399.25 494.33 P +(dow named) 152.1 482.33 T +5 F +(.b) 200.95 482.33 T +3 F +( will have the tags) 212.95 482.33 T +5 9 Q +(.b Button . all) 179.1 468 T +3 10 Q +(by default and all of the following bindings will apply to the window:) 152.1 454.33 T +5 9 Q +(bind .b <Enter> {identify "press here to exit"}) 179.1 440 T +(bind Button <Button-Release-1> {%W invoke}) 179.1 430 T +(bind all <Help> {help %W}) 179.1 420 T +3 10 Q +(So far) 152.1 406.33 T +(, this mechanism produces the same behavior as in Tk 3.6 except that bindings cre-) 175.85 406.33 T +(ated for a toplevel also apply to its descendants \050see Section 1.5 for more on this issue\051.) 152.1 394.33 T +(Y) 170.1 382.33 T +(ou can use the) 176.32 382.33 T +5 F +(bindtags) 235.71 382.33 T +3 F +( command to change the binding tags for a window or) 283.69 382.33 T +(their order) 152.1 370.33 T +(. For example, the command) 193.46 370.33 T +5 9 Q +(bindtags .b {.b MyButton all}) 179.1 356 T +3 10 Q +(will change the binding tags for) 152.1 342.33 T +5 F +(.b) 281.46 342.33 T +3 F +( to the three values in the list. This provides a simple) 293.45 342.33 T +(way to make radical changes the behavior of a window) 152.1 330.33 T +(. After the above command is) 371.55 330.33 T +(invoked none of the) 152.1 318.33 T +5 F +(Button) 234.26 318.33 T +3 F +( class bindings will apply to) 270.24 318.33 T +5 F +(.b) 384.63 318.33 T +3 F +(. Instead, bindings for) 396.63 318.33 T +5 F +-0.81 (MyButton) 152.1 306.33 P +3 F +-0.34 ( will apply; this might give the button a totally dif) 200.07 306.33 P +-0.34 (ferent set of behaviors than a) 395.88 306.33 P +(normal button. In addition, the) 152.1 294.33 T +5 F +(bindtags) 276.75 294.33 T +3 F +( command removes the \322.\323 tag, so bindings on) 324.72 294.33 T +(\322.\323 will not apply to) 152.1 282.33 T +5 F +(.b) 234.27 282.33 T +3 F +(.) 246.27 282.33 T +(Y) 170.1 270.33 T +(ou can also place additional tags on a window with the) 176.32 270.33 T +5 F +(bindtags) 397.55 270.33 T +3 F +( command to) 445.53 270.33 T +(combine a number of behaviors. For example,) 152.1 258.33 T +5 9 Q +(bindtags .b {.b MyButton Button . all}) 179.1 244 T +3 10 Q +(gives) 152.1 230.33 T +5 F +(.b) 175.7 230.33 T +3 F +( the behaviors of) 187.69 230.33 T +5 F +(MyButton) 257.08 230.33 T +3 F +( bindings as well as those speci\336ed by) 305.06 230.33 T +5 F +(Button) 459.96 230.33 T +3 F +(bindings.) 152.1 218.33 T +(Overall, binding tags are similar to the tag mechanisms already used internally by) 170.1 206.33 T +(canvas and text widgets in Tk 3.6, except that binding tags apply to windows instead of) 152.1 194.33 T +(graphical objects or textual characters.) 152.1 182.33 T +FMENDPAGE +%%EndPage: "3" 4 +%%Page: "4" 4 +612 792 0 FMBEGINPAGE +0 10 Q +0 X +0 K +(4) 98.1 668.33 T +4 F +(Tk4.0 Overview and Porting Guide) 359.34 668.33 T +98.1 660.6 512.1 660.6 2 L +0.25 H +0 Z +N +98.1 135 512.1 639 R +7 X +V +0 F +0 X +(1.2) 127.41 632.33 T +(Con\337ict resolution) 152.1 632.33 T +3 F +(It is possible for several bindings to match a particular event. In Tk 3.6 at most one event) 152.1 616.33 T +(is actually allowed to trigger: a set of con\337ict resolution rules determines the winner) 152.1 604.22 T +(. In) 488.27 604.22 T +(general, a more speci\336c binding takes precedence over a less speci\336c binding. For exam-) 152.1 592.11 T +-0.27 (ple, any binding for a speci\336c widget takes precedence over any class or) 152.1 580 P +5 F +-0.66 (all) 439.96 580 P +3 F +-0.27 ( binding, and) 457.95 580 P +(a binding on) 152.1 567.89 T +5 F +(<Control-a>) 204.57 567.89 T +3 F +( takes precedence over a binding on) 270.54 567.89 T +5 F +(<KeyPress>.) 416.24 567.89 T +3 F +-0.26 (The mechanism for con\337ict resolution is similar in Tk 4.0 except that one binding can) 170.1 555.89 P +-0.35 (trigger for) 152.1 543.78 P +2 F +-0.35 (each) 194.7 543.78 P +3 F +-0.35 ( binding tag on the window where the event occurs. The bindings trigger in) 213.57 543.78 P +(the order of the tags. Thus if button) 152.1 531.67 T +5 F +(.b) 296.17 531.67 T +3 F +( has the default binding tags, one binding for) 308.16 531.67 T +5 F +(.b) 489.71 531.67 T +3 F +(can trigger) 152.1 519.56 T +(, followed by one for) 194.72 519.56 T +5 F +(Button) 281.32 519.56 T +3 F +(, followed by one for \322) 317.3 519.56 T +5 F +(.) 408.34 519.56 T +3 F +(\323, followed by one for) 414.34 519.56 T +5 F +(all) 152.1 507.44 T +3 F +(. If there are no matching bindings for a given tag then none will trigger) 170.09 507.44 T +(, and if there) 456.98 507.44 T +(are several matching bindings for a given tag then a single one is chosen using the same) 152.1 495.33 T +(rules as in Tk 3.6.) 152.1 483.22 T +(The philosophy behind binding tags in Tk 4.0 is that each binding tag corresponds to) 170.1 471.22 T +(an independent behavior) 152.1 459.11 T +(, so bindings with dif) 249.96 459.11 T +(ferent tags should usually be additive. Sup-) 334.46 459.11 T +(pose you de\336ned the following binding:) 152.1 447 T +5 9 Q +(bind .b <Enter> {puts "press here to exit"}) 179.1 432.67 T +3 10 Q +(This binding will add to the behavior de\336ned by the Button class binding for) 152.1 419 T +5 F +(<Enter>) 460.81 419 T +3 F +(.) 502.79 419 T +(In Tk 3.6, the widget-speci\336c binding will replace the class binding, which will break the) 152.1 406.89 T +(behavior of the button so that it no longer has normal button behavior) 152.1 394.78 T +(.) 429.71 394.78 T +(Sometimes there need to be interactions between binding tags. For example, you) 170.1 382.78 T +(might wish to keep most of the default button behavior for) 152.1 370.67 T +5 F +(.b) 388.34 370.67 T +3 F +( but replace the default) 400.33 370.67 T +(behavior for) 152.1 358.56 T +5 F +(<ButtonRelease>) 203.72 358.56 T +3 F +( with some other behavior) 293.67 358.56 T +(. T) 397.49 358.56 T +(o allow bindings to be) 407.9 358.56 T +-0.17 (overridden, Tk 4.0 allows the) 152.1 346.44 P +5 F +-0.41 (break) 271.44 346.44 P +3 F +-0.17 ( command to be invoked from inside a binding. This) 301.43 346.44 P +(causes all remaining binding tags for that binding to be skipped. Consider the following) 152.1 334.33 T +(binding:) 152.1 322.22 T +5 9 Q +(bind .b <ButtonRelease-1> {myRelease .b; break}) 179.1 307.89 T +3 10 Q +-0.21 (This will cause the) 152.1 294.22 P +5 F +-0.5 (myRelease) 228.99 294.22 P +3 F +-0.21 ( procedure to be invoked, then the) 282.96 294.22 P +5 F +-0.5 (break) 420.28 294.22 P +3 F +-0.21 ( command will) 450.26 294.22 P +-0.37 (cause the class binding for the event to be skipped \050assuming that the widget name appears) 152.1 282.11 P +(before its class in the binding tags for) 152.1 270 T +5 F +(.b) 304.78 270 T +3 F +(\051, along with any bindings for other tags.) 316.77 270 T +2 F +(Note:) 119.09 254 T +-0.07 (Y) 152.1 254 P +-0.07 (ou cannot invoke) 156.74 254 P +6 F +-0.17 (break) 227.31 254 P +2 F +-0.07 ( fr) 257.29 254 P +-0.07 (om within the) 266.02 254 P +6 F +-0.17 (myRelease) 322.73 254 P +2 F +-0.07 ( pr) 376.7 254 P +-0.07 (ocedur) 387.64 254 P +-0.07 (e in the above example:) 415.03 254 P +-0.02 (this will generate a T) 152.1 242.89 P +-0.02 (cl err) 236.05 242.89 P +-0.02 (or) 257.59 242.89 P +-0.02 (. However) 265.37 242.89 P +-0.02 (, you can invoke the command \322) 305.31 242.89 P +6 F +-0.05 (return -code) 434.25 242.89 P +(break) 152.1 231.78 T +2 F +(\323 in the pr) 182.08 231.78 T +(ocedur) 223.64 231.78 T +(e to achieve the same effect as the) 251.03 231.78 T +6 F +(break) 389.25 231.78 T +2 F +( in the binding script.) 419.23 231.78 T +0 F +(1.3) 127.41 202.78 T +(Implicit Any) 152.1 202.78 T +3 F +-0.13 (In Tk 3.6 extraneous modi\336ers prevent a binding from matching an event. For example, if) 152.1 186.78 P +(a binding is de\336ned for) 152.1 174.67 T +5 F +(<Button-1>) 247.32 174.67 T +3 F +( and the mouse button is pressed with the) 307.29 174.67 T +5 F +(Num-) 474.68 174.67 T +(Lock) 152.1 162.56 T +3 F +( key down, then the binding will not match. If you want a binding to trigger even) 176.09 162.56 T +(when extraneous modi\336ers are present, you must specify the) 152.1 150.45 T +5 F +(Any) 396.37 150.45 T +3 F +( modi\336er) 414.36 150.45 T +(, as in) 450.33 150.45 T +5 F +(<Any-) 476.42 150.45 T +(Button-1>) 152.1 138.33 T +3 F +(.) 206.07 138.33 T +FMENDPAGE +%%EndPage: "4" 5 +%%Page: "5" 5 +612 792 0 FMBEGINPAGE +4 10 Q +0 X +0 K +(1 Bindings) 98.1 668.33 T +0 F +(5) 506.54 668.33 T +98.1 660.6 512.1 660.6 2 L +0.25 H +0 Z +N +98.1 135 512.1 639 R +7 X +V +3 F +0 X +-0.06 (In Tk 4.0, all bindings have the) 170.1 632.33 P +5 F +-0.15 (Any) 297.08 632.33 P +3 F +-0.06 ( modi\336er present implicitly) 315.08 632.33 P +-0.06 (. The) 423.35 632.33 P +5 F +-0.15 (Any) 446.26 632.33 P +3 F +-0.06 ( modi\336er is) 464.25 632.33 P +(still allowed for compatibility) 152.1 620.33 T +(, but it has no meaning. Thus a binding for) 270.55 620.33 T +5 F +(<Button-1>) 443.23 620.33 T +3 F +(will match a button press event even if) 152.1 608.33 T +5 F +(NumLock) 309.21 608.33 T +3 F +(,) 351.19 608.33 T +5 F +(Shift) 356.19 608.33 T +3 F +(,) 386.17 608.33 T +5 F +(Control) 391.17 608.33 T +3 F +(, or any combina-) 433.15 608.33 T +(tion of them. If you wish for a binding not to trigger when a modi\336er is present, you can) 152.1 596.33 T +(just de\336ne an empty binding for that modi\336er combination. For example,) 152.1 584.33 T +5 9 Q +(bind .b <Control-ButtonPress-1> {# this script is a no-op}) 179.1 570 T +3 10 Q +(creates a binding that will trigger on mouse button presses when the) 152.1 556.33 T +5 F +(Control) 426.36 556.33 T +3 F +( key is) 468.34 556.33 T +-0.22 (down. If there is also a) 152.1 544.33 P +5 F +-0.52 (<ButtonPress-1>) 244.35 544.33 P +3 F +-0.22 ( binding for) 334.3 544.33 P +5 F +-0.52 (.b) 383.35 544.33 P +3 F +-0.22 (, it will no longer be invoked) 395.34 544.33 P +-0.02 (if the) 152.1 532.33 P +5 F +-0.05 (Control) 175.37 532.33 P +3 F +-0.02 ( key is down, due to the con\337ict resolution rules. The script for the above) 217.35 532.33 P +(binding is just a T) 152.1 520.33 T +(cl comment, so it has no ef) 223.59 520.33 T +(fect when it is invoked. Alternatively) 330.84 520.33 T +(, you) 478.98 520.33 T +(could use) 152.1 508.33 T +5 F +(%s) 192.63 508.33 T +3 F +( in the binding script to extract the modi\336er state, then test to see that only) 204.62 508.33 T +(desired modi\336ers are present.) 152.1 496.33 T +0 F +(1.4) 127.41 466.33 T +(Porting problems: widget bindings vs. class bindings) 152.1 466.33 T +3 F +-0.38 (Y) 152.1 450.33 P +-0.38 (ou are likely to encounter two problems with bindings when you port Tk 3.6 scripts to Tk) 158.32 450.33 P +-0.18 (4.0: widget bindings vs. class bindings, and events on top-level windows. This section dis-) 152.1 438.33 P +(cusses the \336rst problem and the following section discusses the second problem.) 152.1 426.33 T +(In Tk 3.6, if a widget-speci\336c binding matches an event then no class binding will) 170.1 414.33 T +-0.15 (trigger for the event; in Tk 4.0 both bindings will trigger) 152.1 402.33 P +-0.15 (. Because of this change, you will) 375.75 402.33 P +-0.09 (need to modify most of your widget-speci\336c bindings in one of two ways. If a widget-spe-) 152.1 390.33 P +(ci\336c binding in Tk 3.6 was intended to supplement the class binding, this could only be) 152.1 378.33 T +(done by duplicating the code of the class binding in the widget binding script. This dupli-) 152.1 366.33 T +-0.02 (cated code is no longer necessary in Tk 4.0 and will probably interfere with the new class) 152.1 354.33 P +(bindings in Tk 4.0; you should remove the duplicated class code, leaving only the widget-) 152.1 342.33 T +(speci\336c code in the binding script. If a widget-speci\336c binding in Tk 3.6 was intended to) 152.1 330.33 T +-0.17 (override the class binding, this will no longer occur by default in Tk 4.0; you should add a) 152.1 318.33 P +5 F +-0.54 (break) 152.1 306.33 P +3 F +-0.22 ( command at the end of the binding script to prevent the class binding from trigger-) 182.08 306.33 P +(ing. If a widget binding in Tk 3.6 didn\325) 152.1 294.33 T +(t con\337ict with a class binding, then you will not) 308.49 294.33 T +(need to modify it for Tk 4.0. For example, a widget binding for) 152.1 282.33 T +5 F +(<Help>) 407.49 282.33 T +3 F +( in a text widget) 443.47 282.33 T +(would not need to be modi\336ed, since it doesn\325) 152.1 270.33 T +(t con\337ict with a class binding.) 336.53 270.33 T +0 F +(1.5) 127.41 240.33 T +(Porting problems: events on top-levels) 152.1 240.33 T +3 F +-0.26 (The second binding problem you are likely to encounter in porting Tk 3.6 scripts to Tk 4.0) 152.1 224.33 P +(is that in Tk 4.0 a binding on a toplevel will match events on any of the internal windows) 152.1 212.33 T +(within that top-level. For example, suppose you have a binding created as follows:) 152.1 200.33 T +5 9 Q +(toplevel .t) 179.1 186 T +(button .t.b1 ...) 179.1 176 T +(button .t.b2 ...) 179.1 166 T +(bind .t <Enter> action) 179.1 156 T +FMENDPAGE +%%EndPage: "5" 6 +%%Page: "6" 6 +612 792 0 FMBEGINPAGE +0 10 Q +0 X +0 K +(6) 98.1 668.33 T +4 F +(Tk4.0 Overview and Porting Guide) 359.34 668.33 T +98.1 660.6 512.1 660.6 2 L +0.25 H +0 Z +N +98.1 135 512.1 639 R +7 X +V +3 F +0 X +-0.27 (This binding will trigger not only when the mouse enters) 152.1 632.33 P +5 F +-0.64 (.t) 379.29 632.33 P +3 F +-0.27 (, but also when it enters either) 391.28 632.33 P +5 F +(.t.b1) 152.1 620.33 T +3 F +( or) 182.08 620.33 T +5 F +(.t.b2) 195.41 620.33 T +3 F +(. This is because the binding tags for a window include its nearest) 225.39 620.33 T +(ancestor toplevel by default. The toplevel is present in the binding tags to make it easy to) 152.1 608.33 T +(set up accelerator keys that apply in all the windows of a panel. For example,) 152.1 596.33 T +5 9 Q +(bind .t <Control-a> {controlAProc %W}) 179.1 582 T +3 10 Q +(will cause) 152.1 568.33 T +5 F +(controlAProc) 194.85 568.33 T +3 F +( to be invoked whenever) 266.81 568.33 T +5 F +(Control-a) 367.56 568.33 T +3 F +( is typed in any of the) 421.53 568.33 T +-0.12 (windows in) 152.1 556.33 P +5 F +-0.29 (.t) 200.72 556.33 P +3 F +-0.12 (. The procedure will receive the name of the focus window as its ar) 212.71 556.33 P +-0.12 (gument.) 479.62 556.33 P +(Unfortunately) 170.1 544.33 T +(, if you have created bindings on toplevel windows in your Tk 3.6) 225.52 544.33 T +-0.16 (scripts, they probably expect to trigger only for events in the toplevel, so the bindings will) 152.1 532.33 P +(misbehave under Tk 4.0. Fortunately you can reproduce the behavior of Tk 3.6 by using) 152.1 520.33 T +(the) 152.1 508.33 T +5 F +(%W) 166.81 508.33 T +3 F +( substitution in the binding script. For example, to ensure that) 178.8 508.33 T +5 F +(action) 427.28 508.33 T +3 F +( is invoked) 463.26 508.33 T +(only for) 152.1 496.33 T +5 F +(Enter) 186.52 496.33 T +3 F +( events in a toplevel window itself, create the following binding in place) 216.51 496.33 T +(of the one above:) 152.1 484.33 T +5 9 Q +(bind .t <Enter> {) 179.1 470 T +(if {"%W" == ".t"} {) 200.63 460 T +(action) 222.23 450 T +(}) 200.63 440 T +(}) 179.1 430 T +3 10 Q +-0.01 (When an) 152.1 416.33 P +5 F +-0.03 (Enter) 190.38 416.33 P +3 F +-0.01 ( event occurs in a descendant of) 220.36 416.33 P +5 F +-0.03 (.t) 350.45 416.33 P +3 F +-0.01 ( such as) 362.45 416.33 P +5 F +-0.03 (.t.x) 396.56 416.33 P +3 F +-0.01 (, a binding for) 420.54 416.33 P +5 F +-0.03 (Enter) 479.63 416.33 P +3 F +(in) 152.1 404.33 T +5 F +(.t.x) 162.37 404.33 T +3 F +( will trigger \336rst, if there is one. Then the above binding will trigger) 186.36 404.33 T +(. Since) 457.58 404.33 T +5 F +(%W) 487.29 404.33 T +3 F +(will be substituted with) 152.1 392.33 T +5 F +(.t.x) 248.17 392.33 T +3 F +(, the) 272.15 392.33 T +5 F +(if) 291.86 392.33 T +3 F +( condition will not be satis\336ed and the binding will) 303.86 392.33 T +(not do anything.) 152.1 380.33 T +-0.14 ( An alternative solution is to remove the toplevel window from the binding tags of all) 170.1 368.33 P +-0.12 (its internal windows. However) 152.1 356.33 P +-0.12 (, this means that you won\325) 274.03 356.33 P +-0.12 (t be able to take advantage of the) 378.73 356.33 P +(tag to create key bindings that apply everywhere within the toplevel.) 152.1 344.33 T +0 F +(1.6) 127.41 314.33 T +(Internal bindings in canvases and texts) 152.1 314.33 T +3 F +(The same changes in con\337ict resolution described in Section 1.2 also apply to bindings) 152.1 298.33 T +-0.05 (created internally for the items of a canvas or the tags of a text widget. If a canvas item or) 152.1 286.33 P +-0.29 (character of text has multiple tags, then one binding can trigger for each tag on each event.) 152.1 274.33 P +-0.32 (The bindings trigger in the priority order of the tags. Similar porting problems are likely to) 152.1 262.33 P +-0.19 (occur as described in Section 1.4; if a binding for one tag needs to override that of another) 152.1 250.33 P +(tag, you\325ll need to add a) 152.1 238.33 T +5 F +(break) 251.2 238.33 T +3 F +( command under Tk 4.0; if a binding for one tag dupli-) 281.18 238.33 T +-0.28 (cated the code from another tag\325) 152.1 226.33 P +-0.28 (s binding, so that they will compose in Tk 3.6, you\325ll have) 279.76 226.33 P +(to remove the duplicated code in Tk 4.0.) 152.1 214.33 T +FMENDPAGE +%%EndPage: "6" 7 +%%Page: "7" 7 +612 792 0 FMBEGINPAGE +4 10 Q +0 X +0 K +(2 Focus management) 98.1 668.33 T +0 F +(7) 506.54 668.33 T +98.1 660.6 512.1 660.6 2 L +0.25 H +0 Z +N +98.1 135 512.1 639 R +7 X +V +98.1 623.98 512.1 627 C +152.1 625.2 512.1 625.2 2 L +0.5 H +2 Z +0 X +0 K +N +98.1 625.49 143.1 625.49 2 L +0 Z +N +40.5 63 571.5 729 C +0 12 Q +0 X +0 K +(2) 134.63 631 T +(Focus management) 152.1 631 T +3 10 Q +(The input focus is another area where Tk 4.0 contains major changes. Fortunately) 152.1 607.31 T +(, the) 477.87 607.31 T +-0.09 (focus changes should not require as many modi\336cations to your Tk 3.6 scripts as the bind-) 152.1 595.31 P +(ing changes.) 152.1 583.31 T +0 F +(2.1) 127.41 553.31 T +(One focus window per toplevel) 152.1 553.31 T +3 F +(Tk 3.6 only keeps track of a single focus window for each application, and this results in) 152.1 537.31 T +(two problems. First, it doesn\325) 152.1 525.31 T +(t allow an application to use multiple displays since this) 269.64 525.31 T +-0.16 (could result in multiple simultaneous focus windows, one on each display) 152.1 513.31 P +-0.16 (. Second, the Tk) 444.99 513.31 P +(3.6 model doesn\325) 152.1 501.31 T +(t work very well for applications that have multiple toplevels: when the) 221.04 501.31 T +(mouse moves from one toplevel to another) 152.1 489.31 T +(, the focus window should switch to whatever) 322.7 489.31 T +-0.24 (window had the focus the last time the mouse was in the new toplevel, but Tk 3.6 does not) 152.1 477.31 P +(remember this information.) 152.1 465.31 T +(Tk 4.0 corrects both of these problems. It remembers one focus window for each) 170.1 453.31 T +(toplevel, which can be queried with the) 152.1 441.31 T +5 F +(focus -lastfor) 311.98 441.31 T +3 F +( command. When the win-) 395.94 441.31 T +(dow manager gives the focus to a toplevel window \050because the mouse entered the win-) 152.1 429.31 T +(dow or because you clicked on the window) 152.1 417.31 T +(, depending on the focus model being used by) 324.38 417.31 T +(the window manager\051, Tk passes the focus on to the remembered window) 152.1 405.31 T +(. Several win-) 446.23 405.31 T +(dows in an application can have the focus at the same time, one on each display the appli-) 152.1 393.31 T +(cation is using. When asking for the current focus window in the) 152.1 381.31 T +5 F +(focus) 413.31 381.31 T +3 F +( command, you) 443.29 381.31 T +(can use the) 152.1 369.31 T +5 F +(-displayof) 199 369.31 T +3 F +( switch to specify a particular display) 258.97 369.31 T +(.) 407.66 369.31 T +(When you set the focus to a window with the) 170.1 357.31 T +5 F +(focus) 353.31 357.31 T +3 F +( command, Tk remembers that) 383.29 357.31 T +(window as the most recent focus window for its toplevel. In addition, if the application) 152.1 345.31 T +(currently has the focus for the window\325) 152.1 333.31 T +(s display) 309.2 333.31 T +(, Tk moves the focus to the speci\336ed win-) 343.82 333.31 T +-0.35 (dow; this can be used, for example to move the focus to a dialog when the dialog is posted,) 152.1 321.31 P +(or to perform keyboard traversal among the toplevels of an application. If the application) 152.1 309.31 T +(doesn\325) 152.1 297.31 T +(t currently have the focus for the display) 178.57 297.31 T +(, then Tk will not normally take the focus) 339.74 297.31 T +(from its current owner) 152.1 285.31 T +(. However) 241.2 285.31 T +(, you can specify the) 282.43 285.31 T +5 F +(-force) 367.36 285.31 T +3 F +( ar) 403.34 285.31 T +(gument to) 413.43 285.31 T +5 F +(focus) 456.18 285.31 T +3 F +( to) 486.17 285.31 T +(insist that Tk grab the focus for this application \050in general this is probably not a good) 152.1 273.31 T +(idea, since it may clash with the window manager) 152.1 261.31 T +(\325) 352.05 261.31 T +(s focus policy\051.) 354.83 261.31 T +0 F +(2.2) 127.41 231.31 T +(Keyboard traversal) 152.1 231.31 T +3 F +-0.38 (Tk 4.0 has a much more complete implementation of keyboard traversal than Tk 3.6. In Tk) 152.1 215.31 P +(3.6 there is built-in support only for keyboard traversal of menus. In Tk 4.0 keyboard tra-) 152.1 203.31 T +(versal is implemented for all widgets. Y) 152.1 191.31 T +(ou can type) 311.27 191.31 T +5 F +(Tab) 359.85 191.31 T +3 F +( to move the focus among the) 377.84 191.31 T +-0.4 (windows within a toplevel and) 152.1 179.31 P +5 F +-0.95 (Shift+Tab) 275.31 179.31 P +3 F +-0.4 ( to move in the reverse direction. The order of) 329.28 179.31 P +-0.11 (traversal is de\336ned by the stacking order of widgets, with the lowest widget \336rst in the tra-) 152.1 167.31 P +(versal order) 152.1 155.31 T +(. All Tk widgets now provide a) 199 155.31 T +5 F +(-takefocus) 326.14 155.31 T +3 F +( option, which determines) 386.11 155.31 T +FMENDPAGE +%%EndPage: "7" 8 +%%Page: "8" 8 +612 792 0 FMBEGINPAGE +0 10 Q +0 X +0 K +(8) 98.1 668.33 T +4 F +(Tk4.0 Overview and Porting Guide) 359.34 668.33 T +98.1 660.6 512.1 660.6 2 L +0.25 H +0 Z +N +98.1 135 512.1 639 R +7 X +V +3 F +0 X +(whether the window should accept the focus during traversal or be skipped. This option) 152.1 632.33 T +(has several features; see the) 152.1 620.33 T +5 F +(options.n) 265.61 620.33 T +3 F +( manual entry for details.) 319.58 620.33 T +(All of the Tk widgets provide a traversal highlight ring as required by Motif. The) 170.1 608.33 T +(highlight ring turns dark when the widget has the input focus. Its size and colors are con-) 152.1 596.33 T +(trolled by the) 152.1 584.33 T +5 F +(-highlightthickness) 207.9 584.33 T +3 F +(,) 321.84 584.33 T +5 F +(-highlightbackground) 326.83 584.33 T +3 F +(, and) 446.77 584.33 T +5 F +(-) 152.1 572.33 T +(highlightcolor) 158.1 572.33 T +3 F +( options. Y) 242.05 572.33 T +(ou may notice that widgets appear to have extra space) 285.2 572.33 T +(around them in Tk 4.0; this is due to the traversal highlight ring, which is normally the) 152.1 560.33 T +(same color as the background for widgets.) 152.1 548.33 T +0 F +(2.3) 127.41 518.33 T +(Support for focus-follows-mouse) 152.1 518.33 T +3 F +(Both Tk 3.6 and Tk 4.0 use an) 152.1 502.33 T +2 F +(explicit focus model) 275.91 502.33 T +3 F +( within a toplevel. This means that) 355.86 502.33 T +(moving the mouse among the windows of a toplevel does not normally move the focus;) 152.1 490.33 T +-0.06 (you have to click or perform some other action \050such as pressing) 152.1 478.33 P +5 F +-0.15 (Tab) 412.26 478.33 P +3 F +-0.06 (\051 to move the focus.) 430.25 478.33 P +(Tk 3.6 has no support for an) 152.1 466.33 T +2 F +(implicit focus model) 267.58 466.33 T +3 F +( where the window under the mouse) 348.64 466.33 T +(always has the focus. In Tk 4.0 you can invoke the library procedure) 152.1 454.33 T +5 F +(tk_focusFol-) 428.83 454.33 T +(lowsMouse) 152.1 442.33 T +3 F +( to switch to an implicit focus model; in this mode whenever the mouse) 206.07 442.33 T +(enters a new window the focus will switch to that window) 152.1 430.33 T +(.) 384.07 430.33 T +0 F +(2.4) 127.41 400.33 T +(No default focus window) 152.1 400.33 T +(, no \322none\323 focus.) 269.45 400.33 T +3 F +-0.16 (Tk 3.6 has the notion of a default focus window) 152.1 384.33 P +-0.16 (, which receives the focus if the focus win-) 341.56 384.33 P +(dow is deleted. It is also possible for an application to abandon the input focus by setting) 152.1 372.33 T +(the focus to) 152.1 360.33 T +5 F +(none) 201.23 360.33 T +3 F +(. In Tk 4.0 both of these features have been eliminated. There is no) 225.22 360.33 T +(default focus window) 152.1 348.33 T +(, and the focus can never be explicitly abandoned. If the focus win-) 238.05 348.33 T +(dow is destroyed, Tk resets the input focus to the toplevel containing the old focus win-) 152.1 336.33 T +(dow) 152.1 324.33 T +(. If the toplevel is destroyed, the window manager will reclaim the focus and move it) 168.66 324.33 T +(elsewhere.) 152.1 312.33 T +-0.18 (If you really want to abandon the focus in Tk 4.0 so that keyboard events are ignored,) 170.1 300.33 P +(you can create a dummy window with no key bindings \050set its binding tags to an empty) 152.1 288.33 T +(string to be sure\051, make sure that is never mapped, and give it the input focus.) 152.1 276.33 T +0 F +(2.5) 127.41 246.33 T +(Better focus events) 152.1 246.33 T +3 F +-0.13 (Tk 3.6 has a quirky event model for) 152.1 230.33 P +5 F +-0.32 (FocusIn) 296.77 230.33 P +3 F +-0.13 ( and) 338.75 230.33 P +5 F +-0.32 (FocusOut) 357.92 230.33 P +3 F +-0.13 ( events: when the window) 405.89 230.33 P +-0.23 (manager gives the focus to a toplevel, Tk generates a) 152.1 218.33 P +5 F +-0.55 (FocusIn) 364.36 218.33 P +3 F +-0.23 ( event for the toplevel and) 406.33 218.33 P +(another) 152.1 206.33 T +5 F +(FocusIn) 184.57 206.33 T +3 F +( event for the focus window) 226.55 206.33 T +(, but no events for any other windows.) 337.76 206.33 T +(When the window manager moves the focus somewhere else,) 152.1 194.33 T +5 F +(FocusOut) 400.79 194.33 T +3 F +( events are gen-) 448.77 194.33 T +-0 (erated for these same two windows. In Tk 4.0,) 152.1 182.33 P +5 F +-0 (FocusIn) 339.73 182.33 P +3 F +-0 ( and) 381.71 182.33 P +5 F +-0 (FocusOut) 401.13 182.33 P +3 F +-0 ( events are gen-) 449.11 182.33 P +-0.26 (erated in the same way as) 152.1 170.33 P +5 F +-0.63 (Enter) 255.43 170.33 P +3 F +-0.26 ( and) 285.41 170.33 P +5 F +-0.63 (Leave) 304.31 170.33 P +3 F +-0.26 ( events: when the focus arrives, a) 334.29 170.33 P +5 F +-0.63 (FocusIn) 467.89 170.33 P +3 F +-0.05 (event is generated for each window from the toplevel down to the focus window) 152.1 158.33 P +-0.05 (, with dif-) 472.5 158.33 P +FMENDPAGE +%%EndPage: "8" 9 +%%Page: "9" 9 +612 792 0 FMBEGINPAGE +4 10 Q +0 X +0 K +(3 T) 98.1 668.33 T +(ext widgets) 111.43 668.33 T +0 F +(9) 506.54 668.33 T +98.1 660.6 512.1 660.6 2 L +0.25 H +0 Z +N +98.1 135 512.1 639 R +7 X +V +3 F +0 X +-0.33 (ferent detail \336elds for dif) 152.1 632.33 P +-0.33 (ferent windows \050see Xlib documentation for information on these) 250.53 632.33 P +(values\051. The reverse happens when the focus leaves a window) 152.1 620.33 T +(.) 399.57 620.33 T +0 F +(2.6) 127.41 590.33 T +(Porting issues) 152.1 590.33 T +3 F +(If you didn\325) 152.1 574.33 T +(t have any special focus-related code in Tk 3.6, then you shouldn\325) 199.66 574.33 T +(t need to) 462.9 574.33 T +(make any changes for 4.0; things will just work better) 152.1 562.33 T +(. If you wrote code in Tk 3.6 to get) 366.96 562.33 T +(around the weaknesses with its focus mechanism, then you should remove most or all of) 152.1 550.33 T +(that code. For example, if you implemented keyboard traversal yourself, or if you built) 152.1 538.33 T +(your own mechanism to remember a separate focus window for each toplevel and give it) 152.1 526.33 T +(the input focus whenever the toplevel gets the focus, you can simply remove this code,) 152.1 514.33 T +-0.33 (since Tk 4.0 performs these functions for you. If you wrote code that depends on the weird) 152.1 502.33 P +-0.03 (event model in Tk 3.6, that code will need to be rewritten for Tk 4.0. The Tk 4.0 model is) 152.1 490.33 P +(general enough to duplicate any ef) 152.1 478.33 T +(fects that were possible in Tk 3.6.) 289.86 478.33 T +98.1 434.98 512.1 438 C +152.1 436.2 512.1 436.2 2 L +0.5 H +2 Z +0 X +0 K +N +98.1 436.49 143.1 436.49 2 L +0 Z +N +40.5 63 571.5 729 C +0 12 Q +0 X +0 K +(3) 134.63 442 T +(T) 152.1 442 T +(ext widgets) 158.54 442 T +3 10 Q +(T) 152.1 418.31 T +(ext widgets have under) 157.51 418.31 T +(gone a major overhaul for Tk 4.0 and they have improved in) 249.76 418.31 T +(many ways. The changes to text widgets are almost entirely upward-compatible from Tk) 152.1 406.31 T +(3.6.) 152.1 394.31 T +0 F +(3.1) 127.41 364.31 T +(Embedded windows.) 152.1 364.31 T +3 F +(Tk 3.6 supported two kinds of annotations in texts: marks and tags. In Tk 4.0 a third kind) 152.1 348.31 T +-0.04 (of annotation is available: an embedded window) 152.1 336.31 P +-0.04 (. This allows you to embed other widgets) 344.99 336.31 P +(inside a text widget, mixed in with the text. The text widget acts as a geometry manager) 152.1 324.31 T +(for these windows, laying them out and wrapping them just as if each embedded window) 152.1 312.31 T +(were a single character in the text. Y) 152.1 300.31 T +(ou can even have texts with nothing in them but) 297.64 300.31 T +(embedded windows. The) 152.1 288.31 T +5 F +(window) 254.8 288.31 T +3 F +( widget command for text widgets provides several) 290.78 288.31 T +(options to manage embedded windows.) 152.1 276.31 T +0 F +(3.2) 127.41 246.31 T +(More options for tags.) 152.1 246.31 T +3 F +(In Tk 4.0 tags support many new options providing additional control over how informa-) 152.1 230.31 T +(tion is displayed. Here is a summary of the new options:) 152.1 218.31 T +3 12 Q +(\245) 152.1 203.31 T +3 10 Q +(Y) 162.9 203.31 T +(ou can now specify tab stops with the) 169.12 203.31 T +5 F +(-tabs) 321.79 203.31 T +3 F +( option. Each tab stop can use left, cen-) 351.78 203.31 T +(ter) 162.9 191.31 T +(, right, or numeric justi\336cation. T) 173.04 191.31 T +(ab stops can also be speci\336ed for the widget as a) 305.6 191.31 T +(whole.) 162.9 179.31 T +3 12 Q +(\245) 152.1 164.31 T +3 10 Q +(Y) 162.9 164.31 T +(ou can specify justi\336cation \050left, center or right\051 with the) 169.12 164.31 T +5 F +(-justify) 398.12 164.31 T +3 F +( option.) 446.09 164.31 T +FMENDPAGE +%%EndPage: "9" 10 +%%Page: "10" 10 +612 792 0 FMBEGINPAGE +0 10 Q +0 X +0 K +(10) 98.1 668.33 T +4 F +(Tk4.0 Overview and Porting Guide) 359.34 668.33 T +98.1 660.6 512.1 660.6 2 L +0.25 H +0 Z +N +98.1 135 512.1 639 R +7 X +V +3 12 Q +0 X +(\245) 152.1 632.33 T +3 10 Q +(Y) 162.9 632.33 T +(ou can now specify line spacing with three options,) 169.12 632.33 T +5 F +(-spacing1) 376.75 632.33 T +3 F +(,) 430.72 632.33 T +5 F +(-spacing2) 435.72 632.33 T +3 F +(, and) 489.69 632.33 T +5 F +(-) 162.9 620.2 T +(spacing3) 168.9 620.2 T +3 F +(, which control the spacing above a line, between wrapped lines, and) 216.87 620.2 T +(below a line.) 162.9 608.06 T +3 12 Q +(\245) 152.1 593.06 T +3 10 Q +(Y) 162.9 593.06 T +(ou can now specify mar) 169.12 593.06 T +(gins with the) 264.41 593.06 T +5 F +(-lmargin1) 318.55 593.06 T +3 F +(,) 372.52 593.06 T +5 F +(-lmargin2) 377.52 593.06 T +3 F +(, and) 431.49 593.06 T +5 F +(-rmargin) 453.42 593.06 T +3 F +(options.) 162.9 580.92 T +3 12 Q +(\245) 152.1 565.92 T +3 10 Q +-0.25 (Y) 162.9 565.92 P +-0.25 (ou can now adjust the vertical position of text \050e.g. for superscripts or subscripts\051 with) 169.12 565.92 P +(the) 162.9 553.79 T +5 F +(-offset) 177.61 553.79 T +3 F +( option.) 219.59 553.79 T +3 12 Q +(\245) 152.1 538.79 T +3 10 Q +-0.03 (Y) 162.9 538.79 P +-0.03 (ou can now specify the wrapping style \050word wrapping, character wrapping, or none\051) 169.12 538.79 P +(with the) 162.9 526.65 T +5 F +(-wrap) 197.88 526.65 T +3 F +( option.) 227.86 526.65 T +3 12 Q +(\245) 152.1 511.65 T +3 10 Q +(Y) 162.9 511.65 T +(ou can now request overstriking with the) 169.12 511.65 T +5 F +(-overstrike) 334.83 511.65 T +3 F +( option.) 400.8 511.65 T +0 F +(3.3) 127.41 481.65 T +(Bindings) 152.1 481.65 T +3 F +-0.19 (The default bindings for text widgets have been completely rewritten in Tk 4.0. They now) 152.1 465.65 P +(support almost all of the Motif behavior \050everything except add mode and secondary) 152.1 453.52 T +-0.36 (selections\051. They also include a substantial subset of the Emacs bindings for cursor motion) 152.1 441.38 P +(and basic editing. The) 152.1 429.24 T +5 F +(tk_strictMotif) 242.87 429.24 T +3 F +( variable disables the Emacs bindings.) 326.82 429.24 T +0 F +(3.4) 127.41 399.24 T +(Miscellaneous new features) 152.1 399.24 T +3 F +(In addition to the major changes described above, text widgets also include the following) 152.1 383.24 T +(new features:) 152.1 371.11 T +1 F +(Horizontal scr) 162.9 356.11 T +(olling) 224.07 356.11 T +3 F +(. T) 247.95 356.11 T +(ext widgets can now be scrolled horizontally as well as verti-) 258.36 356.11 T +(cally) 162.9 343.97 T +(, using the) 181.68 343.97 T +5 F +(-) 225.55 343.97 T +(xscrollcommand) 231.54 343.97 T +3 F +( option and the) 315.5 343.97 T +5 F +(xview) 377.68 343.97 T +3 F +( widget command.) 407.67 343.97 T +1 F +(Sear) 162.9 328.97 T +(ching) 182.15 328.97 T +3 F +(. T) 205.48 328.97 T +(ext widgets have a new) 215.88 328.97 T +5 F +(search) 311.64 328.97 T +3 F +( widget command, which provides ef) 347.62 328.97 T +(\336-) 495.67 328.97 T +-0.19 (cient searching of text widgets using either exact matching, glob-style matching, or reg-) 162.9 316.83 P +(ular expressions. Y) 162.9 304.7 T +(ou can search forwards or backwards.) 238.79 304.7 T +1 F +(Mark gravity) 162.9 289.7 T +3 F +(. In Tk 3.6 marks always had \322right gravity\323, which means they stick to) 219.71 289.7 T +(the character on the right side of the mark; if you insert at the position of a mark, the) 162.9 277.56 T +-0.1 (new character goes before the mark. In Tk 4.0 you can specify whether marks have left) 162.9 265.42 P +(or right gravity) 162.9 253.29 T +(.) 222.77 253.29 T +1 F +(Scr) 162.9 238.29 T +(een information) 177.15 238.29 T +3 F +(. In Tk 4.0 there are two new widget commands for text widgets) 245.16 238.29 T +(that return information about the screen layout. The) 162.9 226.15 T +5 F +(dlineinfo) 371.92 226.15 T +3 F +( widget command) 425.89 226.15 T +(returns the bounding box of a display line \050all the information displayed on one line of) 162.9 214.02 T +(the window) 162.9 201.88 T +(, which may be either a whole line of text or a partial line if wrapping has) 209.16 201.88 T +(occurred\051. The) 162.9 189.74 T +5 F +(bbox) 224.23 189.74 T +3 F +( widget command returns the screen area occupied by a single) 248.21 189.74 T +(character) 162.9 177.61 T +(.) 198.97 177.61 T +1 F +(Extended insert command) 162.9 162.61 T +3 F +(. The) 275.06 162.61 T +5 F +(insert) 298.1 162.61 T +3 F +( widget command now supports an addi-) 334.08 162.61 T +-0.32 (tional ar) 162.9 150.47 P +-0.32 (gument giving a list of tags to apply to the new characters. Y) 195.43 150.47 P +-0.32 (ou can also include) 434 150.47 P +(several text and tag ar) 162.9 138.33 T +(guments in a single) 250.42 138.33 T +5 F +(insert) 330.38 138.33 T +3 F +( command.) 366.36 138.33 T +FMENDPAGE +%%EndPage: "10" 11 +%%Page: "11" 11 +612 792 0 FMBEGINPAGE +4 10 Q +0 X +0 K +(4 Better Motif compliance) 98.1 668.33 T +0 F +(1) 501.54 668.33 T +(1) 506.54 668.33 T +98.1 660.6 512.1 660.6 2 L +0.25 H +0 Z +N +98.1 135 512.1 639 R +7 X +V +1 F +0 X +(See command) 162.9 632.33 T +3 F +(. There is a new) 222.03 632.33 T +5 F +(see) 288.08 632.33 T +3 F +( widget command, which adjusts the view in the) 306.07 632.33 T +(widget if needed to ensure that a particular character is visible in the window) 162.9 620.29 T +(.) 470.07 620.29 T +0 F +(3.5) 127.41 590.29 T +(Porting issues: tag stickiness, change in end) 152.1 590.29 T +3 F +(There are two changes in text widgets that may require modi\336cations to Tk 3.6 scripts.) 152.1 574.29 T +-0.06 (The \336rst change has to do with tag stickiness. In Tk 3.6, tags are sticky to the right: if you) 152.1 562.24 P +(insert new text just after a tagged range, the new text acquires the tags of the preceding) 152.1 550.19 T +(character) 152.1 538.14 T +(. If you insert text before a tagged range in Tk 3.6, the new characters do not) 188.17 538.14 T +-0.34 (acquire the tags of the range. In Tk 4.0, tags are not sticky on either side: new text acquires) 152.1 526.09 P +(a tag from surrounding characters only if the tag is present on both sides of the insertion) 152.1 514.05 T +(position. The sticky behavior in Tk 3.6 was rarely useful and special code was often) 152.1 502 T +(needed to work around it. Y) 152.1 489.95 T +(ou should be able to eliminate this code in Tk 4.0.) 263.24 489.95 T +(The second incompatible change in text widgets is that the index) 170.1 477.95 T +5 F +(end) 431.32 477.95 T +3 F +( now refers to) 449.31 477.95 T +-0.14 (the position just after the \336nal newline in the text, whereas in Tk 3.6 it referred to the posi-) 152.1 465.9 P +-0.1 (tion just before the \336nal newline. This makes it possible to apply tags to the \336nal newline,) 152.1 453.86 P +(which was not possible in Tk 3.6, but you may need to modify your scripts if you depend) 152.1 441.81 T +(on the old position of) 152.1 429.76 T +5 F +(end) 240.11 429.76 T +3 F +(.) 258.1 429.76 T +98.1 386.4 512.1 389.43 C +152.1 387.63 512.1 387.63 2 L +0.5 H +2 Z +0 X +0 K +N +98.1 387.92 143.1 387.92 2 L +0 Z +N +40.5 63 571.5 729 C +0 12 Q +0 X +0 K +(4) 134.63 393.43 T +(Better Motif compliance) 152.1 393.43 T +3 10 Q +(All of the widgets have been modi\336ed in Tk 4.0 to improve their Motif compliance. This) 152.1 369.74 T +-0.3 (was done by adding features that were missing and reworking the bindings to comply with) 152.1 357.69 P +(Motif conventions. I believe that the widgets are now completely Motif compliant except) 152.1 345.64 T +(for the following missing features:) 152.1 333.6 T +3 12 Q +(\245) 152.1 318.6 T +3 10 Q +(There is no support for secondary selections.) 162.9 318.6 T +3 12 Q +(\245) 152.1 303.6 T +3 10 Q +(There is no support for \322add mode\323 in widgets such as texts and listboxes.) 162.9 303.6 T +3 12 Q +(\245) 152.1 288.6 T +3 10 Q +(There is no support for drag and drop.) 162.9 288.6 T +-0.02 (Please let me know if you \336nd any other discrepancies between the Tk widgets and Motif) 152.1 273.59 P +(widgets. W) 152.1 261.55 T +(e plan to eliminate the remaining incompatibilities over the next year or two.) 196.82 261.55 T +98.1 218.19 512.1 221.21 C +152.1 219.41 512.1 219.41 2 L +0.5 H +2 Z +0 X +0 K +N +98.1 219.7 143.1 219.7 2 L +0 Z +N +40.5 63 571.5 729 C +0 12 Q +0 X +0 K +(5) 134.63 225.21 T +(W) 152.1 225.21 T +(idget changes) 163.31 225.21 T +3 10 Q +-0.07 (All of the Tk 4.0 widgets have been improved over their 3.6 counterparts, mostly in small) 152.1 201.52 P +-0.23 (and backwards compatible ways. Here is a summary of the widget improvements; see Sec-) 152.1 189.48 P +(tion 13 for information about incompatible changes.) 152.1 177.43 T +3 12 Q +(\245) 152.1 162.43 T +3 10 Q +(All widgets now have a) 162.9 162.43 T +5 F +(cget) 259.78 162.43 T +3 F +( command, which provides an easier way to retrieve the) 283.76 162.43 T +(value of a con\336guration option. In other situations where con\336guration options are) 162.9 150.38 T +(used, such as for menu entries or text tags, a) 162.9 138.33 T +5 F +(cget) 342.21 138.33 T +3 F +( command is also available.) 366.2 138.33 T +FMENDPAGE +%%EndPage: "11" 12 +%%Page: "12" 12 +612 792 0 FMBEGINPAGE +0 10 Q +0 X +0 K +(12) 98.1 668.33 T +4 F +(Tk4.0 Overview and Porting Guide) 359.34 668.33 T +98.1 660.6 512.1 660.6 2 L +0.25 H +0 Z +N +98.1 135 512.1 639 R +7 X +V +3 12 Q +0 X +(\245) 152.1 632.33 T +3 10 Q +-0.22 (All widgets now have) 162.9 632.33 P +5 F +-0.53 (-highlightthickness) 251.96 632.33 P +3 F +-0.22 (,) 365.9 632.33 P +5 F +-0.53 (-highlightbackground) 370.68 632.33 P +3 F +-0.22 (, and) 490.61 632.33 P +5 F +(-) 162.9 620.33 T +(highlightcolor) 168.9 620.33 T +3 F +( options for displaying a highlight ring when the widget \050or one) 252.85 620.33 T +(of its descendants\051 has the input focus.) 162.9 608.33 T +3 12 Q +(\245) 152.1 593.33 T +3 10 Q +(Entry widgets now support justi\336cation and provide a) 162.9 593.33 T +5 F +(-show) 379.99 593.33 T +3 F +( option for \050not\051 display-) 409.97 593.33 T +(ing passwords. They will autosize to \336t their text if) 162.9 581.33 T +5 F +(-width 0) 369.17 581.33 T +3 F +( is speci\336ed.) 417.14 581.33 T +3 12 Q +(\245) 152.1 566.33 T +3 10 Q +-0.16 (The label/button family of widgets now supports multiline text and justi\336cation, includ-) 162.9 566.33 P +(ing new options) 162.9 554.33 T +5 F +(-wraplength) 229.25 554.33 T +3 F +( and) 295.22 554.33 T +5 F +(-justify) 314.65 554.33 T +3 F +(. These features make the message) 361.97 554.33 T +-0.04 (widget obsolete. There is also a new) 162.9 542.33 P +5 F +-0.1 (-underline) 310.27 542.33 P +3 F +-0.04 ( option for highlighting a character) 370.23 542.33 P +(for keyboard traversal.) 162.9 530.33 T +3 12 Q +(\245) 152.1 515.33 T +3 10 Q +-0.23 (Listboxes now support all of the Motif selection modes, including single selection, mul-) 162.9 515.33 P +(tiple selection, and multiple disjoint selections, via the) 162.9 503.33 T +5 F +(-selectmode) 382.78 503.33 T +3 F +( option. They) 448.74 503.33 T +(will autosize to \336t their contents if) 162.9 491.33 T +5 F +(-width 0) 302.54 491.33 T +3 F +( or) 350.52 491.33 T +5 F +(-height 0) 363.84 491.33 T +3 F +( is speci\336ed. There are) 417.81 491.33 T +(new) 162.9 479.33 T +5 F +(see) 182.05 479.33 T +3 F +(,) 200.04 479.33 T +5 F +(bbox) 205.04 479.33 T +3 F +(, and) 229.02 479.33 T +5 F +(activate) 250.95 479.33 T +3 F +( widget commands.) 298.92 479.33 T +3 12 Q +(\245) 152.1 464.33 T +3 10 Q +(Canvas polygons now support) 162.9 464.33 T +5 F +(-outline) 286.16 464.33 T +3 F +( and) 334.14 464.33 T +5 F +(-width) 353.57 464.33 T +3 F +( options for drawing outlines.) 389.55 464.33 T +3 12 Q +(\245) 152.1 449.33 T +3 10 Q +-0.03 (Scale widgets now support real values as well as integers \050see the) 162.9 449.33 P +5 F +-0.08 (-resolution) 426.77 449.33 P +3 F +-0.03 ( and) 492.73 449.33 P +5 F +-0.54 (-digits) 162.9 437.33 P +3 F +-0.22 ( options\051, and they have a) 204.88 437.33 P +5 F +-0.54 (-variable) 308.73 437.33 P +3 F +-0.22 ( option to link to a T) 362.7 437.33 P +-0.22 (cl variable. They) 442.83 437.33 P +-0.28 (have two new widget commands,) 162.9 425.33 P +5 F +-0.67 (coords) 297.52 425.33 P +3 F +-0.28 ( and) 333.5 425.33 P +5 F +-0.67 (identify) 352.37 425.33 P +3 F +-0.28 (, and their bindings are now) 399.69 425.33 P +(de\336ned in T) 162.9 413.33 T +(cl rather than being hardwired in C code as in Tk 3.6.) 210.5 413.33 T +3 12 Q +(\245) 152.1 398.33 T +3 10 Q +(Scrollbar widgets now have a new interface to the controlling widget, which provides) 162.9 398.33 T +-0.04 (more \337exibility than the old style \050but the old style is still supported for compatibility\051.) 162.9 386.33 P +(There is a new option) 162.9 374.33 T +5 F +(-jump) 252 374.33 T +3 F +( to prevent continuous updates while dragging the slider) 281.98 374.33 T +(,) 505.88 374.33 T +-0.24 (and a new option) 162.9 362.33 P +5 F +-0.59 (-elementborderwidth) 232.98 362.33 P +3 F +-0.24 ( to control the border width of the arrows) 346.92 362.33 P +(and slider separately from the widget\325) 162.9 350.33 T +(s outer border) 314.18 350.33 T +(. There are four new widget com-) 369.14 350.33 T +(mands,) 162.9 338.33 T +5 F +(activate) 193.99 338.33 T +3 F +(,) 241.97 338.33 T +5 F +(delta) 246.96 338.33 T +3 F +(,) 276.95 338.33 T +5 F +(fraction) 281.95 338.33 T +3 F +(, and) 329.92 338.33 T +5 F +(identify) 351.85 338.33 T +3 F +(, and the default bindings) 399.17 338.33 T +(are now de\336ned in T) 162.9 326.33 T +(cl rather than being hardwired in C code as in Tk 3.6.) 244.91 326.33 T +3 12 Q +(\245) 152.1 311.33 T +3 10 Q +-0.13 (Menu entries now have several new con\336guration options such as) 162.9 311.33 P +5 F +-0.31 (-foreground) 426.97 311.33 P +3 F +-0.13 ( and) 492.93 311.33 P +5 F +-0.41 (-) 162.9 299.33 P +-0.41 (indicatoron) 168.9 299.33 P +3 F +-0.17 (, and tear) 234.86 299.33 P +-0.17 (-of) 271.23 299.33 P +-0.17 (f menus have been reimplemented to be more Motif-like.) 282.7 299.33 P +(New menu entries can be created in the middle of a menu using the) 162.9 287.33 T +5 F +(insert) 434.36 287.33 T +3 F +( widget) 470.34 287.33 T +(command, and there is a) 162.9 275.33 T +5 F +(type) 262.83 275.33 T +3 F +( widget command that returns the type of a menu entry) 286.81 275.33 T +(.) 505.45 275.33 T +3 12 Q +(\245) 152.1 260.33 T +3 10 Q +(Menubuttons now have a) 162.9 260.33 T +5 F +(-indicatoron) 266.16 260.33 T +3 F +( option for displaying an option menu indi-) 338.12 260.33 T +-0.38 (cator) 162.9 248.33 P +-0.38 (. There is now support for option menus via the) 182.33 248.33 P +5 F +-0.91 (tk_optionMenu) 370.9 248.33 P +3 F +-0.38 ( procedure, and) 448.86 248.33 P +(popups are simpli\336ed with the) 162.9 236.33 T +5 F +(tk_popup) 286.44 236.33 T +3 F +( procedure.) 334.42 236.33 T +3 12 Q +(\245) 152.1 221.33 T +3 10 Q +-0.03 (The variable) 162.9 221.33 P +5 F +-0.07 (tk_strictMotif) 215.57 221.33 P +3 F +-0.03 ( is used in more places to enforce even stricter Motif) 299.53 221.33 P +(compliance.) 162.9 209.33 T +FMENDPAGE +%%EndPage: "12" 13 +%%Page: "13" 13 +612 792 0 FMBEGINPAGE +4 10 Q +0 X +0 K +(6 Images) 98.1 668.33 T +0 F +(13) 500.99 668.33 T +98.1 660.6 512.1 660.6 2 L +0.25 H +0 Z +N +98.1 135 512.1 639 R +7 X +V +98.1 623.98 512.1 627 C +152.1 625.2 512.1 625.2 2 L +0.5 H +2 Z +0 X +0 K +N +98.1 625.49 143.1 625.49 2 L +0 Z +N +40.5 63 571.5 729 C +0 12 Q +0 X +0 K +(6) 134.63 631 T +(Images) 152.1 631 T +3 10 Q +(Tk 4.0 contains a general-purpose image mechanism for displaying color pictures and) 152.1 607.31 T +(other complex objects. There is a new command,) 152.1 595.26 T +5 F +(image) 350.84 595.26 T +3 F +(, which may be used to create) 380.82 595.26 T +(image objects. For example, the command) 152.1 583.21 T +5 9 Q +(image create photo myFace -f) 179.1 568.88 T +(ile picture.ppm) 330.09 568.88 T +3 10 Q +(creates a new image named) 152.1 555.21 T +5 F +(myFace) 264.5 555.21 T +3 F +(. The image is of type) 300.48 555.21 T +5 F +(photo) 390.14 555.21 T +3 F +( \050a full-color represen-) 420.12 555.21 T +(tation that dithers on monochrome or color) 152.1 543.17 T +(-mapped displays\051 and the source data for the) 323.46 543.17 T +(image is in the \336le named) 152.1 531.12 T +5 F +(picture.ppm) 257.59 531.12 T +3 F +(. Once an image has been created, it can be) 323.56 531.12 T +-0.15 (used in many dif) 152.1 519.07 P +-0.15 (ferent places by specifying a) 218.37 519.07 P +5 F +-0.36 (-image) 334.46 519.07 P +3 F +-0.15 ( option. For example, the command) 370.44 519.07 P +5 9 Q +(label .l -image myFace) 179.1 504.74 T +3 10 Q +(will create a label widget that displays the image, and if) 152.1 491.07 T +5 F +(.c) 377.5 491.07 T +3 F +( is a canvas widget the com-) 389.49 491.07 T +(mand) 152.1 479.02 T +5 9 Q +(.c create image 400 200 -image myFace) 179.1 464.69 T +3 10 Q +(will create an image item in the canvas that displays) 152.1 451.02 T +5 F +(myFace) 363.06 451.02 T +3 F +(.) 399.04 451.02 T +(The image mechanism provides a great deal of \337exibility:) 170.1 439.02 T +3 12 Q +(\245) 152.1 424.02 T +3 10 Q +-0.18 (Once an image has been de\336ned, it can be used in many dif) 162.9 424.02 P +-0.18 (ferent places, even on dif) 397.84 424.02 P +-0.18 (fer-) 497.68 424.02 P +(ent displays.) 162.9 411.98 T +3 12 Q +(\245) 152.1 396.98 T +3 10 Q +(Images provide image commands, analogous to widget commands, that can be used to) 162.9 396.98 T +(manipulate the image; any changes in an image are automatically re\337ected in all of its) 162.9 384.93 T +(instances.) 162.9 372.88 T +3 12 Q +(\245) 152.1 357.88 T +3 10 Q +-0.21 (There can be many dif) 162.9 357.88 P +-0.21 (ferent types of images. Tk 4.0 has two built-in types,) 251.78 357.88 P +5 F +-0.51 (photo) 463.11 357.88 P +3 F +-0.21 ( and) 493.1 357.88 P +5 F +(bitmap) 162.9 345.83 T +3 F +(. Other image types can be de\336ned in C as extensions \050see the documentation) 198.88 345.83 T +-0.16 (for the) 162.9 333.79 P +5 F +-0.39 (Tk_CreateImageType) 191.44 333.79 P +3 F +-0.16 ( library procedure\051. The photo image type was imple-) 299.38 333.79 P +(mented by Paul Mackerras, based on his earlier photo widget.) 162.9 321.74 T +3 12 Q +(\245) 152.1 306.74 T +3 10 Q +(W) 162.9 306.74 T +(ithin the photo image type, there can be many dif) 171.93 306.74 T +(ferent \336le formats. In Tk 4.0, only) 368.29 306.74 T +-0.11 (PPM, PGM, and GIF formats are built-in, but other formats can be added as extensions) 162.9 294.69 P +(\050see the documentation for the) 162.9 282.64 T +5 F +(Tk_CreatePhotoImageFormat) 286.97 282.64 T +3 F +( library proce-) 436.89 282.64 T +(dure\051. Readers for XPM, TIFF) 162.9 270.59 T +(, and others are available from the T) 284.23 270.59 T +(cl community) 428.41 270.59 T +(.) 483.01 270.59 T +98.1 227.24 512.1 230.26 C +152.1 228.46 512.1 228.46 2 L +0.5 H +2 Z +0 X +0 K +N +98.1 228.75 143.1 228.75 2 L +0 Z +N +40.5 63 571.5 729 C +0 12 Q +0 X +0 K +(7) 134.63 234.26 T +(Color management) 152.1 234.26 T +3 10 Q +(Tk 3.6 suf) 152.1 210.57 T +(fers from a relatively weak mechanism for managing colors. It uses only the) 192.73 210.57 T +(default colormap for a screen, and if all the entries in that colormap \336ll up then Tk) 152.1 198.52 T +(switches to monochrome mode and \322rounds\323 all future colors to black or white. This) 152.1 186.48 T +(approach is becoming increasingly unpleasant because of applications such as Frame and) 152.1 174.43 T +(W) 152.1 162.38 T +(eb browsers that use up all the entries in the default colormap.) 160.74 162.38 T +(Tk 4.0 has a much more powerful color management mechanism. If a colormap \336lls) 170.1 150.38 T +(up, Tk allocates future colors by picking the closest match from the available colors, so) 152.1 138.33 T +FMENDPAGE +%%EndPage: "13" 14 +%%Page: "14" 14 +612 792 0 FMBEGINPAGE +0 10 Q +0 X +0 K +(14) 98.1 668.33 T +4 F +(Tk4.0 Overview and Porting Guide) 359.34 668.33 T +98.1 660.6 512.1 660.6 2 L +0.25 H +0 Z +N +98.1 135 512.1 639 R +7 X +V +3 F +0 X +(that it need not revert to monochrome mode. Tk also manages colors better by delaying) 152.1 632.33 T +-0.3 (color allocation until colors are actually needed; in many cases, such as 3D borders, colors) 152.1 620.33 P +(are never needed. When colors are scarce Tk changes the way it displays beveled borders) 152.1 608.33 T +-0.38 (so that it uses stippling instead of additional colors for the light and dark shadows. Y) 152.1 596.33 P +-0.38 (ou can) 484.01 596.33 P +(\336nd out whether a colormap has \336lled up using the new command) 152.1 584.33 T +5 F +(winfo colormap-) 418.59 584.33 T +(full) 152.1 572.33 T +3 F +(.) 176.09 572.33 T +-0.26 (Tk 4.0 also allows you to allocate new colormaps for toplevel and frame widgets with) 170.1 560.33 P +(the) 152.1 548.33 T +5 F +(-colormap) 166.81 548.33 T +3 F +( option, and you change the visual type in these widgets \050with the) 220.78 548.33 T +5 F +(-) 152.1 536.33 T +(visual) 158.1 536.33 T +3 F +( option\051 to take advantage of visuals other than the default visual for a screen.) 194.08 536.33 T +(New commands) 152.1 524.33 T +5 F +(winfo visualsavailable) 219.27 524.33 T +3 F +( and) 351.2 524.33 T +5 F +(wm colormapwindows) 370.63 524.33 T +3 F +( have) 478.57 524.33 T +(been added to help manage colormaps and visuals.) 152.1 512.33 T +(The default color scheme in Tk 4.0 has changed from a tan palette \050\322bisque\323\051 to a) 170.1 500.33 T +(gray palette, which seems to becoming standard for Motif. There is a new T) 152.1 488.33 T +(cl procedure) 454.78 488.33 T +5 F +-0.36 (tk_setPalette) 152.1 476.33 P +3 F +-0.15 ( that changes the palette of an application on the \337y) 230.06 476.33 P +-0.15 (, and there is also a) 433.89 476.33 P +(procedure) 152.1 464.33 T +5 F +(tk_bisque) 194.56 464.33 T +3 F +( to restore the palette to the old bisque colors.) 248.53 464.33 T +(The Tk 3.6 color model mechanism is no longer necessary so it has been removed in) 170.1 452.33 T +(Tk 4.0. If you want to \336nd out whether a screen is monochrome or color) 152.1 440.33 T +(, you cannot use) 440.38 440.33 T +(the) 152.1 428.33 T +5 F +(tk colormodel) 166.81 428.33 T +3 F +( command anymore; use) 244.77 428.33 T +5 F +(winfo depth) 345.25 428.33 T +3 F +( instead.) 411.22 428.33 T +98.1 384.98 512.1 388 C +152.1 386.2 512.1 386.2 2 L +0.5 H +2 Z +0 X +0 K +N +98.1 386.49 143.1 386.49 2 L +0 Z +N +40.5 63 571.5 729 C +0 12 Q +0 X +0 K +(8) 134.63 392 T +(Event handling: \336leevent and after) 152.1 392 T +3 10 Q +(Tk 4.0 contains several improvements in the area of event handling besides those already) 152.1 368.31 T +(mentioned for bindings:) 152.1 356.31 T +3 12 Q +(\245) 152.1 341.31 T +3 10 Q +(There is a new command) 162.9 341.31 T +5 F +(f) 265.87 341.31 T +(ileevent) 271.87 341.31 T +3 F +( for performing event-driven I/O to and from) 319.84 341.31 T +-0.12 (\336les. The) 162.9 329.31 P +5 F +-0.29 (f) 202.35 329.31 P +-0.29 (ileevent) 208.35 329.31 P +3 F +-0.12 ( command is modelled very closely after Mark Diekhans\325) 256.33 329.31 P +5 F +-0.29 (add-) 488.11 329.31 P +(input) 162.9 317.31 T +3 F +( extension, which has been used widely with Tk 3.6.) 192.88 317.31 T +3 12 Q +(\245) 152.1 302.31 T +3 10 Q +-0.34 (The) 162.9 302.31 P +5 F +-0.82 (after) 180.6 302.31 P +3 F +-0.34 ( command has two new options,) 210.58 302.31 P +5 F +-0.82 (idle) 339.82 302.31 P +3 F +-0.34 ( and) 363.81 302.31 P +5 F +-0.82 (cancel) 382.55 302.31 P +3 F +-0.34 (.) 418.53 302.31 P +5 F +-0.82 (After idle) 423.19 302.31 P +3 F +-0.34 ( can be) 482.33 302.31 P +-0.2 (used to schedule a script as an \322idle handler\323, which means it runs the next time that Tk) 162.9 290.31 P +(enters the event loop and \336nds no work to do.) 162.9 278.31 T +5 F +(After cancel) 348.06 278.31 T +3 F +( may be used to delete) 420.02 278.31 T +(a previously-scheduled) 162.9 266.31 T +5 F +(after) 257.83 266.31 T +3 F +( script, so that it will no longer be invoked.) 287.81 266.31 T +98.1 222.95 512.1 225.98 C +152.1 224.18 512.1 224.18 2 L +0.5 H +2 Z +0 X +0 K +N +98.1 224.46 143.1 224.46 2 L +0 Z +N +40.5 63 571.5 729 C +0 12 Q +0 X +0 K +(9) 134.63 229.98 T +(Multiple displays) 152.1 229.98 T +3 10 Q +(Although Tk has always allowed a single application to open windows on several dis-) 152.1 206.29 T +(plays, the support for multiple displays is weak in Tk 3.6. For example, many of the bind-) 152.1 194.29 T +(ings break if users work simultaneously in windows on dif) 152.1 182.29 T +(ferent displays, and) 385.94 182.29 T +(mechanisms like the selection and the input focus have insuf) 152.1 170.29 T +(\336cient support for multiple) 394.26 170.29 T +(displays.) 152.1 158.29 T +FMENDPAGE +%%EndPage: "14" 15 +%%Page: "15" 15 +612 792 0 FMBEGINPAGE +4 10 Q +0 X +0 K +(10 The send command) 98.1 668.33 T +0 F +(15) 500.99 668.33 T +98.1 660.6 512.1 660.6 2 L +0.25 H +0 Z +N +98.1 135 512.1 639 R +7 X +V +3 F +0 X +-0.33 (Tk 4.0 contains numerous modi\336cations to improve the handling of multiple displays.) 170.1 632.33 P +-0.18 (Several commands, such as) 152.1 620.24 P +5 F +-0.44 (selection) 263.78 620.24 P +3 F +-0.18 (,) 317.76 620.24 P +5 F +-0.44 (send) 322.57 620.24 P +3 F +-0.18 (, and) 346.55 620.24 P +5 F +-0.44 (focus) 368.12 620.24 P +3 F +-0.18 (, have a new) 398.1 620.24 P +5 F +-0.44 (-displayof) 449.82 620.24 P +3 F +(ar) 152.1 608.15 T +(gument so that you can select a particular display) 159.69 608.15 T +(. In addition, the bindings have been) 356.12 608.15 T +(reworked to handle interactions occurring simultaneously on dif) 152.1 596.05 T +(ferent displays. W) 408.13 596.05 T +(ith Tk) 480.73 596.05 T +(4.0 it should be possible to create applications that really use multiple displays gracefully) 152.1 583.96 T +(.) 508.44 583.96 T +98.1 540.6 512.1 543.63 C +152.1 541.83 512.1 541.83 2 L +0.5 H +2 Z +0 X +0 K +N +98.1 542.12 143.1 542.12 2 L +0 Z +N +40.5 63 571.5 729 C +0 12 Q +0 X +0 K +(10) 127.96 547.63 T +(The send command) 152.1 547.63 T +3 10 Q +-0.2 (The) 152.1 523.94 P +5 F +-0.48 (send) 169.94 523.94 P +3 F +-0.2 ( command has been completely overhauled for Tk 4.0 to eliminate several prob-) 193.93 523.94 P +(lems in Tk 3.6 and add a number of new features:) 152.1 511.85 T +3 12 Q +(\245) 152.1 496.85 T +3 10 Q +(Tk 3.6 aborts a) 162.9 496.85 T +5 F +(send) 225.36 496.85 T +3 F +( command if no response is received within 5 seconds; this made) 249.34 496.85 T +(it very dif) 162.9 484.75 T +(\336cult to invoke long-running commands. Tk 4.0 eliminates the timeout and) 202.14 484.75 T +(uses a dif) 162.9 472.66 T +(ferent mechanism to tell if the tar) 200.47 472.66 T +(get application has crashed.) 333.53 472.66 T +3 12 Q +(\245) 152.1 457.66 T +3 10 Q +-0.36 (The) 162.9 457.66 P +5 F +-0.87 (winfo interps) 180.58 457.66 P +3 F +-0.36 ( command no longer returns the names of applications that have) 257.66 457.66 P +(exited or crashed.) 162.9 445.57 T +3 12 Q +(\245) 152.1 430.57 T +3 10 Q +(Asynchronous sends are possible using the) 162.9 430.57 T +5 F +(-async) 336.67 430.57 T +3 F +( switch.) 372.65 430.57 T +3 12 Q +(\245) 152.1 415.57 T +3 10 Q +(Commands can be sent to displays other than that of the root window) 162.9 415.57 T +(, using the) 439.3 415.57 T +5 F +(-) 162.9 403.47 T +(displayof) 168.9 403.47 T +3 F +( switch.) 222.87 403.47 T +3 12 Q +(\245) 152.1 388.47 T +3 10 Q +(W) 162.9 388.47 T +(indow server security is now checked on each) 171.93 388.47 T +5 F +(send) 357.89 388.47 T +3 F +(, so Tk 4.0 deals better with) 381.88 388.47 T +(changes in the security of the server) 162.9 376.38 T +(.) 306.12 376.38 T +3 12 Q +(\245) 152.1 361.38 T +3 10 Q +(More complete error information \050including the) 162.9 361.38 T +5 F +(errorCode) 356.09 361.38 T +3 F +( and) 410.06 361.38 T +5 F +(errorInfo) 429.49 361.38 T +3 F +( vari-) 483.46 361.38 T +(ables\051 is propagated back to the sender after errors.) 162.9 349.29 T +3 12 Q +(\245) 152.1 334.29 T +3 10 Q +(Y) 162.9 334.29 T +(ou can query and change the name of an application with the) 169.12 334.29 T +5 F +(tk appname) 414.48 334.29 T +3 F +( com-) 474.45 334.29 T +(mand.) 162.9 322.19 T +(Unfortunately the improvements to the Tk 4.0) 152.1 307.19 T +5 F +(send) 338.65 307.19 T +3 F +( mechanism required substantial) 362.63 307.19 T +(changes to the transport protocol for sends; this makes it impossible for Tk 4.0 applica-) 152.1 295.1 T +(tions to communicate with Tk 3.6 applications via) 152.1 283.01 T +5 F +(send) 355.04 283.01 T +3 F +(. The new transport protocol is) 379.02 283.01 T +(more \337exible than the old protocol, so it should be possible to make protocol improve-) 152.1 270.91 T +(ments in an upward-compatible way) 152.1 258.82 T +(.) 296.9 258.82 T +98.1 215.47 512.1 218.49 C +152.1 216.69 512.1 216.69 2 L +0.5 H +2 Z +0 X +0 K +N +98.1 216.98 143.1 216.98 2 L +0 Z +N +40.5 63 571.5 729 C +0 12 Q +0 X +0 K +(1) 128.62 222.49 T +(1) 134.63 222.49 T +(The selection and clipboard) 152.1 222.49 T +3 10 Q +(In Tk 3.6 the selection mechanism can deal only with the display of the root window and) 152.1 198.8 T +-0.13 (with the primary selection; there is no support for multiple displays, secondary selections,) 152.1 186.71 P +(or the clipboard. Tk 4.0 eliminates all of these shortcomings. The) 152.1 174.61 T +5 F +(-displayof) 415.82 174.61 T +3 F +( option) 475.78 174.61 T +-0.12 (can be used to specify a particular display in the selection command, and there is now full) 152.1 162.52 P +(access to all of the X selection types. Tk 4.0 also includes a new) 152.1 150.43 T +5 F +(clipboard) 411.36 150.43 T +3 F +( command) 465.33 150.43 T +(for manipulating the clipboard.) 152.1 138.33 T +FMENDPAGE +%%EndPage: "15" 16 +%%Page: "16" 16 +612 792 0 FMBEGINPAGE +0 10 Q +0 X +0 K +(16) 98.1 668.33 T +4 F +(Tk4.0 Overview and Porting Guide) 359.34 668.33 T +98.1 660.6 512.1 660.6 2 L +0.25 H +0 Z +N +98.1 135 512.1 639 R +7 X +V +98.1 623.98 512.1 627 C +152.1 625.2 512.1 625.2 2 L +0.5 H +2 Z +0 X +0 K +N +98.1 625.49 143.1 625.49 2 L +0 Z +N +40.5 63 571.5 729 C +0 12 Q +0 X +0 K +(12) 127.96 631 T +(Miscellaneous changes) 152.1 631 T +3 10 Q +(Here is a quick summary of the remaining changes in Tk 4.0:) 152.1 607.31 T +3 12 Q +(\245) 152.1 592.31 T +3 10 Q +-0.17 (The) 162.9 592.31 P +5 F +-0.42 (wish) 180.76 592.31 P +3 F +-0.17 ( application has been modi\336ed so that the) 204.75 592.31 P +5 F +-0.42 (-f) 371.58 592.31 P +-0.42 (ile) 383.57 592.31 P +3 F +-0.17 ( switch is no longer needed) 401.56 592.31 P +(or recommended. This makes) 162.9 580.31 T +5 F +(wish) 283.64 580.31 T +3 F +( just like) 307.63 580.31 T +5 F +(tclsh) 344.56 580.31 T +3 F +(, where you specify the script \336le) 374.54 580.31 T +(as the \336rst ar) 162.9 568.31 T +(gument to the program, e.g.) 214.07 568.31 T +5 F +(wish foo.tcl) 327.33 568.31 T +3 F +(. The) 399.29 568.31 T +5 F +(-f) 422.33 568.31 T +(ile) 434.32 568.31 T +3 F +( switch is still) 452.31 568.31 T +(permitted for backward compatibility) 162.9 556.31 T +(, but its use is deprecated.) 311.87 556.31 T +3 12 Q +(\245) 152.1 541.31 T +5 10 Q +(Wish) 162.9 541.31 T +3 F +( now sets the application\325) 186.89 541.31 T +(s class from the application name \050what appears in the) 288.49 541.31 T +-0.37 (title bar of the window by default\051, rather than always using) 162.9 529.31 P +5 F +-0.88 (Tk) 400.9 529.31 P +3 F +-0.37 ( as the class as in Tk 3.6.) 412.89 529.31 P +(This makes application-speci\336c options easier to use.) 162.9 517.31 T +3 12 Q +(\245) 152.1 502.31 T +3 10 Q +(T) 162.9 502.31 T +(oplevel windows are now resizable by default, whereas in Tk 3.6 they were not. Y) 168.31 502.31 T +(ou) 496.22 502.31 T +(can use the) 162.9 490.31 T +5 F +(wm resizable) 209.8 490.31 T +3 F +( command to make windows non-reiszable.) 281.77 490.31 T +3 12 Q +(\245) 152.1 475.31 T +3 10 Q +(Tk 4.0 patches around an Xlib bug whereby long-running applications tended to reach) 162.9 475.31 T +(the end of the space of X resource ids, wrap around to 0 again, and then crash. Tk now) 162.9 463.31 T +(reuses resource identi\336ers so that wrap-around should never occur) 162.9 451.31 T +(.) 427.14 451.31 T +3 12 Q +(\245) 152.1 436.31 T +3 10 Q +-0.13 (There is a new) 162.9 436.31 P +5 F +-0.31 (winfo manager) 223.43 436.31 P +3 F +-0.13 ( command that tells which geometry manager is con-) 301.08 436.31 P +(trolling a particular widget.) 162.9 424.31 T +3 12 Q +(\245) 152.1 409.31 T +3 10 Q +(There is a new) 162.9 409.31 T +5 F +(bell) 223.96 409.31 T +3 F +( command that does what its name suggests.) 247.94 409.31 T +3 12 Q +(\245) 152.1 394.31 T +3 10 Q +(There are new) 162.9 394.31 T +5 F +(winfo pointerx) 222.56 394.31 T +3 F +(,) 306.51 394.31 T +5 F +(winfo pointery) 311.51 394.31 T +3 F +(, and) 394.81 394.31 T +5 F +(winfo pointerxy) 416.74 394.31 T +3 F +(commands that can be used to query the position of the mouse pointer) 162.9 382.31 T +(.) 442.17 382.31 T +98.1 338.95 512.1 341.98 C +152.1 340.18 512.1 340.18 2 L +0.5 H +2 Z +0 X +0 K +N +98.1 340.46 143.1 340.46 2 L +0 Z +N +40.5 63 571.5 729 C +0 12 Q +0 X +0 K +(13) 127.96 345.98 T +(Summary of Incompatibilites) 152.1 345.98 T +3 10 Q +-0.24 (This section lists all of the incompatible changes in Tk 4.0 that may require changes in T) 152.1 322.29 P +-0.24 (cl) 502.62 322.29 P +-0.22 (scripts written for T) 152.1 310.29 P +-0.22 (cl 3.6. Each incompatibility is described in terms of the problem it pro-) 230.42 310.29 P +(duces when you run your Tk 3.6 script under Tk 4.0 and a possible work-around. Only) 152.1 298.29 T +(T) 152.1 286.29 T +(cl-level incompatibilities are covered here. For incompatible changes at the C level, see) 157.51 286.29 T +(the) 152.1 274.29 T +5 F +(README) 166.81 274.29 T +3 F +( and) 202.79 274.29 T +5 F +(changes) 222.22 274.29 T +3 F +( \336les in the distribution. The problems and solutions are) 264.2 274.29 T +(roughly in order of importance, with the most important problems \336rst.) 152.1 262.29 T +1 F +(Pr) 152.1 247.29 T +(oblem #1:) 162.46 247.29 T +3 F +(When you change the background color of a widget, a small ring in the) 206.88 247.29 T +(default background color remains around the edge of the widget.) 152.1 235.29 T +2 F +(Solution:) 170.1 223.29 T +3 F +(This is the focus traversal highlight, whose color is speci\336ed separately) 209.25 223.29 T +(from) 170.1 211.29 T +5 F +(-background) 192.03 211.29 T +3 F +(; use the) 257.99 211.29 T +5 F +(-highlightbackground) 293.8 211.29 T +3 F +( option to change the) 413.74 211.29 T +(color of the highlight. Or) 170.1 199.29 T +(, you can set) 269.92 199.29 T +5 F +(-highlightthickness) 322.38 199.29 T +3 F +( to 0 to eliminate) 436.31 199.29 T +(the traversal highlight altogether) 170.1 187.29 T +(.) 299.74 187.29 T +1 F +(Pr) 152.1 172.29 T +(oblem #2:) 162.46 172.29 T +3 F +(Bindings de\336ned for a widget no longer replace the corresponding class) 206.88 172.29 T +(bindings, so unwanted class bindings get invoked in addition to the widget bindings.) 152.1 160.29 T +FMENDPAGE +%%EndPage: "16" 17 +%%Page: "17" 17 +612 792 0 FMBEGINPAGE +4 10 Q +0 X +0 K +(13 Summary of Incompatibilites) 98.1 668.33 T +0 F +(17) 500.99 668.33 T +98.1 660.6 512.1 660.6 2 L +0.25 H +0 Z +N +98.1 135 512.1 639 R +7 X +V +2 F +0 X +(Solution:) 170.1 632.33 T +3 F +(Add a) 209.25 632.33 T +5 F +(break) 235.89 632.33 T +3 F +( command at the end of the widget binding, or rework the) 265.88 632.33 T +(widget binding so that it\325) 170.1 620.33 T +(s OK for the class binding to execute.) 270.05 620.33 T +1 F +(Pr) 152.1 605.33 T +(oblem #3:) 162.46 605.33 T +3 F +(Bindings on toplevel windows are invoked when events occur for internal) 206.88 605.33 T +(windows inside the toplevels.) 152.1 593.33 T +2 F +(Solution:) 170.1 581.33 T +3 F +(Use the) 209.25 581.33 T +5 F +(%W) 242 581.33 T +3 F +( substitution to extract the name of the window where the event) 253.99 581.33 T +(actually occurred, and only execute the rest of the binding script if this matches the) 170.1 569.33 T +(name of the toplevel.) 170.1 557.33 T +1 F +-0.15 (Pr) 152.1 542.33 P +-0.15 (oblem #4:) 162.46 542.33 P +3 F +-0.15 (The) 206.58 542.33 P +5 F +-0.37 (-command) 224.46 542.33 P +3 F +-0.15 ( option for a cascade menu entry is no longer invoked when) 272.44 542.33 P +(the submenu is posted.) 152.1 530.33 T +2 F +(Solution:) 170.1 518.33 T +3 F +(Use the) 209.25 518.33 T +5 F +(-postcommand) 242 518.33 T +3 F +( option for the submenu instead.) 313.96 518.33 T +1 F +(Pr) 152.1 503.33 T +(oblem #5:) 162.46 503.33 T +3 F +(The) 206.88 503.33 T +5 F +(-geometry) 224.92 503.33 T +3 F +( option is no longer supported by listboxes, frames, and) 278.89 503.33 T +(toplevels.) 152.1 491.33 T +2 F +(Solution:) 170.1 479.33 T +3 F +(Use the) 209.25 479.33 T +5 F +(-width) 242 479.33 T +3 F +( and) 277.98 479.33 T +5 F +(-height) 297.41 479.33 T +3 F +( options instead.) 339.39 479.33 T +1 F +(Pr) 152.1 464.33 T +(oblem #6:) 162.46 464.33 T +3 F +(The procedure) 206.88 464.33 T +5 F +(tk_listboxSingleSelect) 267.38 464.33 T +3 F +( no longer exists.) 399.3 464.33 T +2 F +(Solution:) 170.1 452.33 T +3 F +(Use the) 209.25 452.33 T +5 F +(-selectmode) 242 452.33 T +3 F +( option on the listbox instead.) 307.96 452.33 T +1 F +(Pr) 152.1 437.33 T +(oblem #7:) 162.46 437.33 T +3 F +(Canvases no longer have a) 206.88 437.33 T +5 F +(-scrollincrement) 315.96 437.33 T +3 F +( option.) 411.91 437.33 T +2 F +(Solution:) 170.1 425.33 T +3 F +(Use the new) 209.25 425.33 T +5 F +(-xscrollincrement) 261.15 425.33 T +3 F +( and) 363.09 425.33 T +5 F +(-yscrollincrement) 382.52 425.33 T +3 F +(options instead.) 170.1 413.33 T +1 F +(Pr) 152.1 398.33 T +(oblem #8:) 162.46 398.33 T +3 F +(The) 206.88 398.33 T +5 F +(tk colormodel) 224.92 398.33 T +3 F +( command no longer exists.) 302.88 398.33 T +2 F +-0.28 (Solution:) 170.1 386.33 P +3 F +-0.28 (T) 208.97 386.33 P +-0.28 (o \336nd out whether a window is monochrome or color) 214.37 386.33 P +-0.28 (, use) 424.34 386.33 P +5 F +-0.68 (winfo depth) 444.6 386.33 P +3 F +(to extract the window\325) 170.1 374.33 T +(s depth; a depth of 1 means monochrome.) 259.76 374.33 T +1 F +-0.08 (Pr) 152.1 359.33 P +-0.08 (oblem #9:) 162.46 359.33 P +3 F +-0.08 (The class of Tk applications is no longer) 206.72 359.33 P +5 F +-0.19 (Tk) 370.97 359.33 P +3 F +-0.08 (, so options speci\336ed for the) 382.96 359.33 P +5 F +-0.19 (Tk) 497.69 359.33 P +3 F +(class in your) 152.1 347.33 T +5 F +(.Xdefaults) 205.12 347.33 T +3 F +( \336le are no longer used.) 265.09 347.33 T +2 F +(Solution:) 170.1 335.33 T +3 F +(Modify your) 209.25 335.33 T +5 F +(.Xdefaults) 262.55 335.33 T +3 F +( \336le \050and any T) 322.52 335.33 T +(cl code that sets options\051 to) 382.88 335.33 T +(specify the name of the application \050with the \336rst letter capitalized\051 as the class) 170.1 323.33 T +(instead of) 170.1 311.33 T +5 F +(Tk) 211.74 311.33 T +3 F +(.) 223.73 311.33 T +1 F +-0.15 (Pr) 152.1 296.33 P +-0.15 (oblem #10:) 162.46 296.33 P +3 F +-0.15 (When text is added to a text widget just after a tagged area, the new text no) 211.57 296.33 P +(longer receives the tag.) 152.1 284.33 T +2 F +-0.1 (Solution:) 170.1 272.33 P +3 F +-0.1 (Explicitly tag the new text with the desired tags. If you want the tags on the) 209.15 272.33 P +-0.08 (new text to be the same as those at some other point in the text, you can use the) 170.1 260.33 P +5 F +-0.2 (tag) 488.31 260.33 P +(names) 170.1 248.33 T +3 F +( widget command to query existing tags.) 200.08 248.33 T +1 F +(Pr) 152.1 233.33 T +(oblem #1) 162.46 233.33 T +(1:) 200.5 233.33 T +3 F +(W) 211.33 233.33 T +(idgets appear lar) 220.36 233.33 T +(ger than they did in Tk 3.6.) 286.24 233.33 T +2 F +(Solution:) 170.1 221.33 T +3 F +(There are two issues here. The \336rst is that all widgets now have a focus tra-) 209.25 221.33 T +-0.24 (versal highlight ring that turns dark when the widget has the focus; this is required for) 170.1 209.33 P +(Motif compliance but you can eliminate it by specifying a 0 value for the) 170.1 197.33 T +5 F +( -high-) 462.4 197.33 T +(lightthickness) 170.1 185.33 T +3 F +( option. The second issue is that the default padding for buttons) 254.05 185.33 T +-0.17 (and menubuttons has been increased to match the sizes of Motif widgets. If you don\325) 170.1 173.33 P +-0.17 (t) 506.99 173.33 P +(mind being dif) 170.1 161.33 T +(ferent from Motif, you can set the) 228.78 161.33 T +5 F +(-padx) 366.45 161.33 T +3 F +( and) 396.44 161.33 T +5 F +(-) 415.86 161.33 T +(pady) 421.86 161.33 T +3 F +( options back to) 445.85 161.33 T +FMENDPAGE +%%EndPage: "17" 18 +%%Page: "18" 18 +612 792 0 FMBEGINPAGE +0 10 Q +0 X +0 K +(18) 98.1 668.33 T +4 F +(Tk4.0 Overview and Porting Guide) 359.34 668.33 T +98.1 660.6 512.1 660.6 2 L +0.25 H +0 Z +N +98.1 135 512.1 639 R +7 X +V +3 F +0 X +(their Tk 3.6 values \050use the) 170.1 632.33 T +5 F +(conf) 281.41 632.33 T +(igure) 305.4 632.33 T +3 F +( widget command in Tk 3.6 to see what the) 335.38 632.33 T +(old values were\051.) 170.1 620.33 T +1 F +(Pr) 152.1 605.33 T +(oblem #12:) 162.46 605.33 T +3 F +(Listboxes now return the selection as a string with newlines separating the) 211.88 605.33 T +(values, rather than a T) 152.1 593.33 T +(cl, list.) 240.49 593.33 T +2 F +(Solution:) 170.1 581.33 T +3 F +(Modify your code to handle the new format. Y) 209.25 581.33 T +(ou can convert the selection) 395.06 581.33 T +(back into the old list format with a script like the following:) 170.1 569.33 T +5 9 Q +(split [selection get] \134n) 179.1 555 T +1 10 Q +(Pr) 152.1 541.33 T +(oblem #13:) 162.46 541.33 T +3 F +(Tk 4.0 applications cannot) 211.88 541.33 T +5 F +(send) 320.42 541.33 T +3 F +( to or be sent from Tk 3.6 applications.) 344.4 541.33 T +2 F +(Solution:) 170.1 529.33 T +3 F +(The only solution is to upgrade all your applications to Tk 4.0.) 209.25 529.33 T +1 F +-0.17 (Pr) 152.1 514.33 P +-0.17 (oblem #14:) 162.46 514.33 P +3 F +-0.17 (In texts,) 211.54 514.33 P +5 F +-0.4 (end) 245.91 514.33 P +3 F +-0.17 ( now refers to a position just after the \336nal newline, instead of) 263.9 514.33 P +(the \336nal newline.) 152.1 502.33 T +2 F +-0.08 (Solution:) 170.1 490.33 P +3 F +-0.08 (If you wish to refer to the \336nal newline, use the index) 209.17 490.33 P +5 F +-0.19 (end-1char) 424.98 490.33 P +3 F +-0.08 ( instead) 478.95 490.33 P +(of) 170.1 478.33 T +5 F +(end) 180.92 478.33 T +3 F +(.) 198.91 478.33 T +1 F +(Pr) 152.1 463.33 T +(oblem #15:) 162.46 463.33 T +3 F +(In entry widgets,) 211.88 463.33 T +5 F +(sel.last) 281.83 463.33 T +3 F +( now refers to the character just after the last) 329.8 463.33 T +(selected one, rather than the last selected one. The second index for the) 152.1 451.33 T +5 F +(delete) 438.81 451.33 T +3 F +( widget) 474.79 451.33 T +(command has changed in the same way) 152.1 439.33 T +(.) 309.66 439.33 T +2 F +(Solution:) 170.1 427.33 T +3 F +(Add one to the values used in your scripts.) 209.25 427.33 T +1 F +(Pr) 152.1 412.33 T +(oblem #16:) 162.46 412.33 T +3 F +(Because) 211.88 412.33 T +5 F +(Any) 247.68 412.33 T +3 F +( is implicit in all bindings, bindings trigger when extra modi-) 265.67 412.33 T +(\336ers are present, whereas they didn\325) 152.1 400.33 T +(t trigger in Tk 3.6.) 296.24 400.33 T +2 F +(Solution:) 170.1 388.33 T +3 F +(In most cases it\325) 209.25 388.33 T +(s probably \336ne to ignore the extra modi\336ers. If you really) 273.93 388.33 T +-0.12 (don\325) 170.1 376.33 P +-0.12 (t want any actions to be taken when extra modi\336ers are present, create additional) 188.24 376.33 P +(bindings for the cases with extra modi\336ers, and specify a single blank character \050or) 170.1 364.33 T +(any script that does nothing\051 as the script for those bindings. Alternatively) 170.1 352.33 T +(, you can) 465.93 352.33 T +(use the) 170.1 340.33 T +5 F +(%s) 200.63 340.33 T +3 F +( substitution to extract the mouse and modi\336er state in the event binding,) 212.63 340.33 T +(then you can test this value for modi\336ers you do or don\325) 170.1 328.33 T +(t want.) 394.5 328.33 T +1 F +(Pr) 152.1 313.33 T +(oblem #17:) 162.46 313.33 T +3 F +(In scrollbars there is no longer a) 211.88 313.33 T +5 F +(-foreground) 343.17 313.33 T +3 F +( or) 409.13 313.33 T +5 F +(-activefore-) 422.45 313.33 T +(ground) 152.1 301.33 T +3 F +( option, and) 188.08 301.33 T +5 F +(-background) 238.05 301.33 T +3 F +( has a dif) 304.02 301.33 T +(ferent meaning.) 340.2 301.33 T +2 F +-0.4 (Solution:) 170.1 289.33 P +3 F +-0.4 (Use) 208.85 289.33 P +5 F +-0.96 (-troughcolor) 226.49 289.33 P +3 F +-0.4 ( everywhere that you used) 298.45 289.33 P +5 F +-0.96 (-background) 403.87 289.33 P +3 F +-0.4 ( in Tk 3.6,) 469.83 289.33 P +5 F +(-background) 170.1 277.33 T +3 F +( everywhere you used to use) 236.06 277.33 T +5 F +(-foreground) 352.08 277.33 T +3 F +(, and) 418.04 277.33 T +5 F +(-activeback-) 439.97 277.33 T +(ground) 170.1 265.33 T +3 F +( everywhere you used to use) 206.08 265.33 T +5 F +(-activeforeground) 322.1 265.33 T +3 F +(.) 424.04 265.33 T +1 F +(Pr) 152.1 250.33 T +(oblem #18:) 162.46 250.33 T +3 F +(Options for colors seem to have changed in scale widgets.) 211.88 250.33 T +2 F +(Solution:) 170.1 238.33 T +3 F +(Use) 209.25 238.33 T +5 F +(-background) 227.29 238.33 T +3 F +( where you used to use) 293.25 238.33 T +5 F +(-sliderforeground) 387.07 238.33 T +3 F +(,) 489.02 238.33 T +5 F +(-) 170.1 226.33 T +(troughcolor) 176.1 226.33 T +3 F +( where you used to use) 242.06 226.33 T +5 F +(-background) 335.88 226.33 T +3 F +(, and) 401.84 226.33 T +5 F +( -activeback-) 421.27 226.33 T +(ground) 170.1 214.33 T +3 F +( everywhere you used to use) 206.08 214.33 T +5 F +(-activeforeground) 322.1 214.33 T +3 F +(.) 424.04 214.33 T +1 F +(Pr) 152.1 199.33 T +(oblem #19:) 162.46 199.33 T +3 F +(Scale widgets no longer accept hexadecimal or octal numbers in the) 211.88 199.33 T +5 F +(set) 485.84 199.33 T +3 F +(command or the) 152.1 187.33 T +5 F +(-from) 219.55 187.33 T +3 F +( and) 249.54 187.33 T +5 F +(-to) 268.97 187.33 T +3 F +( options.) 286.96 187.33 T +2 F +(Solution:) 170.1 175.33 T +3 F +(Use) 209.25 175.33 T +5 F +(format) 227.29 175.33 T +3 F +( or) 263.27 175.33 T +5 F +(expr) 276.59 175.33 T +3 F +( to convert the values to decimal.) 300.58 175.33 T +1 F +(Pr) 152.1 160.33 T +(oblem #20:) 162.46 160.33 T +3 F +(In checkbuttons, radiobuttons, and menu entries, the) 211.88 160.33 T +5 F +(-selector) 423.4 160.33 T +3 F +( option) 477.37 160.33 T +(no longer exists.) 152.1 148.33 T +FMENDPAGE +%%EndPage: "18" 19 +%%Page: "19" 19 +612 792 0 FMBEGINPAGE +4 10 Q +0 X +0 K +(13 Summary of Incompatibilites) 98.1 668.33 T +0 F +(19) 500.99 668.33 T +98.1 660.6 512.1 660.6 2 L +0.25 H +0 Z +N +98.1 135 512.1 639 R +7 X +V +2 F +0 X +(Solution:) 170.1 632.33 T +3 F +(Use) 209.25 632.33 T +5 F +(-selectcolor) 227.29 632.33 T +3 F +( instead of) 299.25 632.33 T +5 F +(-select) 343.39 632.33 T +3 F +(. T) 385.36 632.33 T +(o specify that no indicator) 395.77 632.33 T +(should be drawn at all, use the) 170.1 620.33 T +5 F +(-indicatoron) 293.9 620.33 T +3 F +( option instead of setting) 365.86 620.33 T +5 F +(-select) 467.2 620.33 T +3 F +(to an empty string.) 170.1 608.33 T +1 F +-0.12 (Pr) 152.1 593.33 P +-0.12 (oblem #21:) 162.46 593.33 P +3 F +-0.12 (The indices of menu entries have changed, and operations on menu entry 0) 211.64 593.33 P +(no longer work.) 152.1 581.33 T +2 F +(Solution:) 170.1 569.33 T +3 F +(This is because menus now have a tearof) 209.25 569.33 T +(f entry at the top by default, and) 372.55 569.33 T +(this occupies entry 0, so your \336rst entry is now entry 1. Y) 170.1 557.33 T +(ou can either set the) 398.95 557.33 T +5 F +(-) 170.1 545.33 T +(tearoff) 176.1 545.33 T +3 F +( option to 0 to eliminate the tearof) 218.07 545.33 T +(f entry or add 1 to all the indices you) 354.2 545.33 T +(use in your scripts.) 170.1 533.33 T +1 F +-0.22 (Pr) 152.1 518.33 P +-0.22 (oblem #22:) 162.46 518.33 P +3 F +-0.22 (The) 211.44 518.33 P +5 F +-0.53 (enable) 229.26 518.33 P +3 F +-0.22 ( and) 265.24 518.33 P +5 F +-0.53 (disable) 284.23 518.33 P +3 F +-0.22 ( widget commands are no longer supported by) 326.21 518.33 P +(menus.) 152.1 506.33 T +2 F +(Solution:) 170.1 494.33 T +3 F +(Use the) 209.25 494.33 T +5 F +(-state) 242 494.33 T +3 F +( con\336guration option instead.) 277.98 494.33 T +1 F +(Pr) 152.1 479.33 T +(oblem #23:) 162.46 479.33 T +3 F +(The) 211.88 479.33 T +5 F +(activate) 229.92 479.33 T +3 F +( and) 277.89 479.33 T +5 F +(deactivate) 297.32 479.33 T +3 F +( widget commands are no longer sup-) 357.29 479.33 T +(ported by buttons, checkbuttons, radiobuttons, and menus.) 152.1 467.33 T +2 F +(Solution:) 170.1 455.33 T +3 F +(Use the) 209.25 455.33 T +5 F +(-state) 242 455.33 T +3 F +( con\336guration option instead.) 277.98 455.33 T +1 F +(Pr) 152.1 440.33 T +(oblem #24:) 162.46 440.33 T +3 F +(Canvas arc items no longer use the) 211.88 440.33 T +5 F +(-f) 353.72 440.33 T +(ill) 365.71 440.33 T +3 F +( and) 383.7 440.33 T +5 F +(-stipple) 403.13 440.33 T +3 F +( options for) 451.11 440.33 T +(drawing when the) 152.1 428.33 T +5 F +(-style) 226.21 428.33 T +3 F +( option is) 262.19 428.33 T +5 F +(arc) 301.9 428.33 T +3 F +(.) 319.89 428.33 T +2 F +(Solution:) 170.1 416.33 T +3 F +(Use the) 209.25 416.33 T +5 F +(-outline) 242 416.33 T +3 F +( and) 289.97 416.33 T +5 F +(-outlinestipple) 309.4 416.33 T +3 F +( options instead.) 399.35 416.33 T +1 F +-0.29 (Pr) 152.1 401.33 P +-0.29 (oblem #25:) 162.46 401.33 P +3 F +-0.29 (The variable) 211.29 401.33 P +5 F +-0.7 (tkVersion) 263.43 401.33 P +3 F +-0.29 ( no longer exists \050it has been obsolete for several) 317.4 401.33 P +(releases\051.) 152.1 389.33 T +2 F +(Solution:) 170.1 377.33 T +3 F +(Use) 209.25 377.33 T +5 F +(tk_version) 227.29 377.33 T +3 F +( instead.) 287.26 377.33 T +1 F +(Pr) 152.1 362.33 T +(oblem #26:) 162.46 362.33 T +3 F +(The syntax of the) 211.88 362.33 T +5 F +(scan) 284.05 362.33 T +3 F +( widget commands for texts has changed.) 308.03 362.33 T +2 F +(Solution:) 170.1 350.33 T +3 F +(Modify your code to use the new syntax.) 209.25 350.33 T +1 F +(Pr) 152.1 335.33 T +(oblem #27:) 162.46 335.33 T +5 F +(wish) 211.88 335.33 T +3 F +( no longer recognizes the) 235.86 335.33 T +5 F +(-help) 338.84 335.33 T +3 F +( option.) 368.82 335.33 T +2 F +(Solution:) 170.1 323.33 T +3 F +(Implement this option yourself in your) 209.25 323.33 T +5 F +(wish) 366.38 323.33 T +3 F +( scripts.) 390.37 323.33 T +1 F +(Pr) 152.1 308.33 T +(oblem #28:) 162.46 308.33 T +3 F +(Tk 4.0 always prints real numbers such as canvas coordinates with a deci-) 211.88 308.33 T +(mal point. This can cause syntax errors if you later use them in situations where integers) 152.1 296.33 T +(are expected.) 152.1 284.33 T +2 F +(Solution:) 170.1 272.33 T +3 F +(Change your code so that real numbers work OK, or use the) 209.25 272.33 T +5 F +(expr) 451.57 272.33 T +3 F +( com-) 475.55 272.33 T +(mand \050with the) 170.1 260.33 T +5 F +(round) 233.12 260.33 T +3 F +( function\051 to convert the numbers to integers.) 263.1 260.33 T +1 F +(Pr) 152.1 245.33 T +(oblem #29:) 162.46 245.33 T +3 F +(The) 211.88 245.33 T +5 F +(pack info) 229.92 245.33 T +3 F +( command returns dif) 283.89 245.33 T +(ferent information, and) 369.48 245.33 T +5 F +(pack) 464.41 245.33 T +(newinfo) 152.1 233.33 T +3 F +( no longer exists.) 194.08 233.33 T +2 F +(Solution:) 170.1 221.33 T +3 F +(Use) 209.25 221.33 T +5 F +(pack info) 227.29 221.33 T +3 F +( where you used to use) 281.26 221.33 T +5 F +(pack newinfo) 375.08 221.33 T +3 F +(.) 447.04 221.33 T +5 F +(Pack info) 452.04 221.33 T +3 F +(was obsolete, so it has been eliminated.) 170.1 209.33 T +1 F +(Pr) 152.1 194.33 T +(oblem #30:) 162.46 194.33 T +3 F +(The) 211.88 194.33 T +5 F +(view) 229.92 194.33 T +3 F +( widget command for entries no longer exists, nor does the) 253.9 194.33 T +5 F +(-) 152.1 182.33 T +(scrollcommand) 158.1 182.33 T +3 F +( option.) 236.05 182.33 T +2 F +-0.29 (Solution:) 170.1 170.33 P +3 F +-0.29 (Use) 208.96 170.33 P +5 F +-0.69 (xview) 226.71 170.33 P +3 F +-0.29 ( where you used to use) 256.7 170.33 P +5 F +-0.69 (view) 348.8 170.33 P +3 F +-0.29 (; use) 372.78 170.33 P +5 F +-0.69 (-xscrollcommand) 393.31 170.33 P +3 F +-0.29 ( where) 483.26 170.33 P +(you used to use) 170.1 158.33 T +5 F +(-scrollcommand) 234.51 158.33 T +3 F +(.) 318.46 158.33 T +FMENDPAGE +%%EndPage: "19" 20 +%%Page: "20" 20 +612 792 0 FMBEGINPAGE +0 10 Q +0 X +0 K +(20) 98.1 668.33 T +4 F +(Tk4.0 Overview and Porting Guide) 359.34 668.33 T +98.1 660.6 512.1 660.6 2 L +0.25 H +0 Z +N +98.1 135 512.1 639 R +7 X +V +1 F +0 X +(Pr) 152.1 632.33 T +(oblem #31:) 162.46 632.33 T +3 F +(The) 211.88 632.33 T +5 F +(-padx) 229.92 632.33 T +3 F +( and) 259.9 632.33 T +5 F +(-pady) 279.33 632.33 T +3 F +( options are ignored for the button family of wid-) 309.31 632.33 T +(gets if a bitmap or image is being displayed: the padding is always 0.) 152.1 620.02 T +2 F +-0.27 (Solution:) 170.1 608.02 P +3 F +-0.27 (Pack the button inside a frame, with extra padding in the frame. Or) 208.98 608.02 P +-0.27 (, redo the) 472.94 608.02 P +(image or bitmap to incorporate padding into it.) 170.1 595.71 T +1 F +(Pr) 152.1 580.71 T +(oblem #32:) 162.46 580.71 T +3 F +(In radiobuttons, the) 211.88 580.71 T +5 F +(-value) 292.38 580.71 T +3 F +( option no longer defaults to the name of the) 328.36 580.71 T +(widget; it defaults to an empty string.) 152.1 568.4 T +2 F +(Solution:) 170.1 556.4 T +3 F +(Specify the widget\325) 209.25 556.4 T +(s name explicitly as the value of the option.) 286.98 556.4 T +1 F +(Pr) 152.1 541.4 T +(oblem #33:) 162.46 541.4 T +3 F +(The) 211.88 541.4 T +5 F +(-menu) 229.92 541.4 T +3 F +( option for menubuttons and cascade menu entries may refer) 259.9 541.4 T +(only to a child of the menubutton or menu.) 152.1 529.08 T +2 F +(Solution:) 170.1 517.08 T +3 F +(Rename menus to meet this requirement.) 209.25 517.08 T +1 F +(Pr) 152.1 502.08 T +(oblem #34:) 162.46 502.08 T +3 F +(The interpretation of) 211.88 502.08 T +5 F +(@y) 297.09 502.08 T +3 F +( in menus has changed: it never returns) 309.08 502.08 T +5 F +(none) 467.86 502.08 T +3 F +(,) 491.84 502.08 T +(even if the y-coordinate is outside the menu \050it returns the index of the closest entry\051.) 152.1 489.77 T +2 F +(Solution:) 170.1 477.77 T +3 F +(If you care about this distinction, check the y-coordinate explicitly to see if) 209.25 477.77 T +-0.17 (it is less than 0 or greater than or equal to the window\325) 170.1 465.46 P +-0.17 (s height \050use) 385.7 465.46 P +5 F +-0.41 (winfo height) 438.21 465.46 P +3 F +(to get the height\051.) 170.1 453.15 T +1 F +-0.13 (Pr) 152.1 438.15 P +-0.13 (oblem #35:) 162.46 438.15 P +3 F +-0.13 (The) 211.62 438.15 P +5 F +-0.3 (invoke) 229.54 438.15 P +3 F +-0.13 ( and) 265.52 438.15 P +5 F +-0.3 (activate) 284.7 438.15 P +3 F +-0.13 ( widget commands for menus no longer post) 332.67 438.15 P +(cascaded submenus.) 152.1 425.83 T +2 F +(Solution:) 170.1 413.83 T +3 F +(Use the) 209.25 413.83 T +5 F +(postcascade) 242 413.83 T +3 F +( widget command to post submenus.) 307.96 413.83 T +1 F +(Pr) 152.1 398.83 T +(oblem #36:) 162.46 398.83 T +3 F +(The selection tar) 211.88 398.83 T +(gets) 278.31 398.83 T +5 F +(APPLICATION) 296.91 398.83 T +3 F +( and) 362.87 398.83 T +5 F +(WINDOW_NAME) 382.3 398.83 T +3 F +( are no longer) 448.27 398.83 T +(supported.) 152.1 386.52 T +2 F +(Solution:) 170.1 374.52 T +3 F +(Use tar) 209.25 374.52 T +(gets) 237.65 374.52 T +5 F +(TK_APPLICATION) 256.25 374.52 T +3 F +( and) 340.21 374.52 T +5 F +(TK_WINDOW) 359.64 374.52 T +3 F +( instead.) 413.61 374.52 T +1 F +(Pr) 152.1 359.52 T +(oblem #37:) 162.46 359.52 T +3 F +(There is no longer a default focus.) 211.88 359.52 T +2 F +(Solution:) 170.1 347.52 T +3 F +(None: modify your code not to depend on this feature.) 209.25 347.52 T +1 F +(Pr) 152.1 332.52 T +(oblem #38:) 162.46 332.52 T +3 F +(The) 211.88 332.52 T +5 F +(focus) 229.92 332.52 T +3 F +( command now returns an empty string to indicate that the) 259.9 332.52 T +(application doesn\325) 152.1 320.21 T +(t have the input focus, instead of) 225.48 320.21 T +5 F +(none) 358.17 320.21 T +3 F +(.) 382.15 320.21 T +2 F +(Solution:) 170.1 308.21 T +3 F +(Modify your code to check for an empty string instead of) 209.25 308.21 T +5 F +(none) 440.47 308.21 T +3 F +(.) 464.46 308.21 T +1 F +(Pr) 152.1 293.21 T +(oblem #39:) 162.46 293.21 T +5 F +(FocusIn) 211.88 293.21 T +3 F +( and) 253.85 293.21 T +5 F +(FocusOut) 273.28 293.21 T +3 F +( events are delivered to more windows than) 321.26 293.21 T +(they used to be.) 152.1 280.9 T +2 F +-0.02 (Solution:) 170.1 268.9 P +3 F +-0.02 (Modify your code to use the new set of events. The old event set was some-) 209.23 268.9 P +(what bizarre, and the new set matches more closely what happens elsewhere, such as) 170.1 256.58 T +(with) 170.1 244.27 T +5 F +(Enter) 190.37 244.27 T +3 F +( and) 220.35 244.27 T +5 F +(Leave) 239.78 244.27 T +3 F +( events.) 269.77 244.27 T +1 F +-0.28 (Pr) 152.1 229.27 P +-0.28 (oblem #40:) 162.46 229.27 P +5 F +-0.67 (wm maxsize) 211.32 229.27 P +3 F +-0.28 ( and) 270.62 229.27 P +5 F +-0.67 (wm minsize) 289.49 229.27 P +3 F +-0.28 ( no longer accept empty ar) 348.79 229.27 P +-0.28 (guments. This) 453.52 229.27 P +(means that you cannot use these commands to make windows non-resizable.) 152.1 216.96 T +2 F +(Solution:) 170.1 204.96 T +3 F +(Use the) 209.25 204.96 T +5 F +(wm resizable) 242 204.96 T +3 F +( command to make windows resizable.) 313.96 204.96 T +1 F +(Pr) 152.1 189.96 T +(oblem #41:) 162.46 189.96 T +3 F +(In the placer) 211.88 189.96 T +(, if you specify both) 261.43 189.96 T +5 F +(-x) 344.15 189.96 T +3 F +( and) 356.15 189.96 T +5 F +(-relx) 375.58 189.96 T +3 F +( then they add, instead of) 405.56 189.96 T +(the most recent speci\336cation replacing the earlier one. Ditto for) 152.1 177.65 T +5 F +(-y) 407.74 177.65 T +3 F +( and) 419.73 177.65 T +5 F +(-rely) 439.16 177.65 T +3 F +(,) 468.5 177.65 T +5 F +(-width) 473.49 177.65 T +3 F +(and) 152.1 165.33 T +5 F +(-relwidth) 169.03 165.33 T +3 F +(, and) 223 165.33 T +5 F +(-height) 244.93 165.33 T +3 F +( and) 286.91 165.33 T +5 F +(-relheight) 306.33 165.33 T +3 F +(.) 366.3 165.33 T +2 F +(Solution:) 170.1 153.33 T +3 F +(If you no longer want one of these options to be used, set it to 0 explicitly) 209.25 153.33 T +(.) 503.14 153.33 T +1 F +(Pr) 152.1 138.33 T +(oblem #42:) 162.46 138.33 T +3 F +(The command \322) 211.88 138.33 T +5 F +(focus none) 276.27 138.33 T +3 F +(\323 doesn\325) 336.24 138.33 T +(t work in Tk 4.0.) 369.64 138.33 T +FMENDPAGE +%%EndPage: "20" 21 +%%Page: "21" 21 +612 792 0 FMBEGINPAGE +4 10 Q +0 X +0 K +(13 Summary of Incompatibilites) 98.1 668.33 T +0 F +(21) 500.99 668.33 T +98.1 660.6 512.1 660.6 2 L +0.25 H +0 Z +N +98.1 135 512.1 639 R +7 X +V +2 F +0 X +(Solution:) 170.1 632.33 T +3 F +(Create a dummy widget that is never mapped and set the focus to that wid-) 209.25 632.33 T +(get.) 170.1 620.33 T +1 F +(Pr) 152.1 605.33 T +(oblem #43:) 162.46 605.33 T +5 F +(%D) 211.88 605.33 T +3 F +( substitutions are no longer supported in bindings, nor are the event) 223.87 605.33 T +(types) 152.1 593.33 T +5 F +(CirculateRequest) 175.7 593.33 T +3 F +(,) 271.64 593.33 T +5 F +(Conf) 276.64 593.33 T +(igureRequest) 300.63 593.33 T +3 F +(,) 372.59 593.33 T +5 F +(MapRequest) 377.59 593.33 T +3 F +(, and) 437.55 593.33 T +5 F +(Resiz-) 459.48 593.33 T +(eRequest) 152.1 581.33 T +3 F +(.) 200.07 581.33 T +2 F +-0.25 (Solution:) 170.1 569.33 P +3 F +-0.25 (Use the name of the display instead of %D to identify a display; you can get) 209 569.33 P +(the display name with the) 170.1 557.33 T +5 F +(winfo screen) 275.31 557.33 T +3 F +( command. The desupported event types) 347.27 557.33 T +(never really worked anyway) 170.1 545.33 T +(, so there should be no code that depends on them.) 282.96 545.33 T +1 F +(Pr) 152.1 530.33 T +(oblem #44:) 162.46 530.33 T +5 F +(%) 211.88 530.33 T +3 F +( binding substitutions that return window identi\336ers, such as) 217.87 530.33 T +5 F +(%a) 461.63 530.33 T +3 F +( and) 473.62 530.33 T +5 F +(%S) 493.05 530.33 T +3 F +(,) 505.05 530.33 T +(now produce hexadecimal results instead of decimal.) 152.1 518.33 T +2 F +(Solution:) 170.1 506.33 T +3 F +(Use the) 209.25 506.33 T +5 F +(format) 242 506.33 T +3 F +( command to turn them back to decimal.) 277.98 506.33 T +1 F +(Pr) 152.1 491.33 T +(oblem #45:) 162.46 491.33 T +5 F +(Enter) 211.88 491.33 T +3 F +(,) 241.46 491.33 T +5 F +(Leave) 246.46 491.33 T +3 F +(,) 276.44 491.33 T +5 F +(FocusIn) 281.44 491.33 T +3 F +(, and) 323.42 491.33 T +5 F +(FocusOut) 345.34 491.33 T +3 F +( events with detail) 393.32 491.33 T +5 F +(Notify-) 468.83 491.33 T +(Inferior) 152.1 479.33 T +3 F +( are now ignored by the binding mechanism, so they\325re not visible to T) 200.07 479.33 T +(cl) 483.08 479.33 T +(scripts.) 152.1 467.33 T +2 F +-0.13 (Solution:) 170.1 455.33 P +3 F +-0.13 (In most cases, T) 209.12 455.33 P +-0.13 (cl scripts work better if these bindings are ignored. Y) 273 455.33 P +-0.13 (ou can) 483.49 455.33 P +(still use C code to access these events if you really need them. Or) 170.1 443.33 T +(, create bindings on) 431.18 443.33 T +-0.33 (the inferior windows and use) 170.1 431.33 P +5 F +-0.8 (NotifyAncestor) 286.96 431.33 P +3 F +-0.33 ( bindings on the children instead of) 370.91 431.33 P +5 F +(NotifyInferior) 170.1 419.33 T +3 F +( bindings on the parent.) 254.05 419.33 T +FMENDPAGE +%%EndPage: "21" 22 +%%Page: "22" 22 +612 792 0 FMBEGINPAGE +0 10 Q +0 X +0 K +(22) 98.1 668.33 T +4 F +(Tk4.0 Overview and Porting Guide) 359.34 668.33 T +98.1 660.6 512.1 660.6 2 L +0.25 H +0 Z +N +98.1 135 512.1 639 R +7 X +V +FMENDPAGE +%%EndPage: "22" 23 +%%Trailer +%%BoundingBox: 0 0 612 792 +%%Pages: 22 1 +%%DocumentFonts: Helvetica-Bold +%%+ Times-Bold +%%+ Times-Italic +%%+ Times-Roman +%%+ Helvetica +%%+ Courier +%%+ Courier-Oblique |