Tk Source Code

Hex Artifact Content
Login

Artifact da92ae683c14d541c905afbbfbed5feacd137d91:

Attachment "textDisp.test" to ticket [44e92d896e] added by bll 2017-08-19 07:59:41.
0000: 23 20 54 68 69 73 20 66 69 6c 65 20 69 73 20 61  # This file is a
0010: 20 54 63 6c 20 73 63 72 69 70 74 20 74 6f 20 74   Tcl script to t
0020: 65 73 74 20 74 68 65 20 63 6f 64 65 20 69 6e 20  est the code in 
0030: 74 68 65 20 66 69 6c 65 20 74 6b 54 65 78 74 44  the file tkTextD
0040: 69 73 70 2e 63 2e 0a 23 20 54 68 69 73 20 66 69  isp.c..# This fi
0050: 6c 65 20 69 73 20 6f 72 67 61 6e 69 7a 65 64 20  le is organized 
0060: 69 6e 20 74 68 65 20 73 74 61 6e 64 61 72 64 20  in the standard 
0070: 66 61 73 68 69 6f 6e 20 66 6f 72 20 54 63 6c 20  fashion for Tcl 
0080: 74 65 73 74 73 2e 0a 23 0a 23 20 43 6f 70 79 72  tests..#.# Copyr
0090: 69 67 68 74 20 28 63 29 20 31 39 39 34 20 54 68  ight (c) 1994 Th
00a0: 65 20 52 65 67 65 6e 74 73 20 6f 66 20 74 68 65  e Regents of the
00b0: 20 55 6e 69 76 65 72 73 69 74 79 20 6f 66 20 43   University of C
00c0: 61 6c 69 66 6f 72 6e 69 61 2e 0a 23 20 43 6f 70  alifornia..# Cop
00d0: 79 72 69 67 68 74 20 28 63 29 20 31 39 39 34 2d  yright (c) 1994-
00e0: 31 39 39 37 20 53 75 6e 20 4d 69 63 72 6f 73 79  1997 Sun Microsy
00f0: 73 74 65 6d 73 2c 20 49 6e 63 2e 0a 23 20 43 6f  stems, Inc..# Co
0100: 70 79 72 69 67 68 74 20 28 63 29 20 31 39 39 38  pyright (c) 1998
0110: 2d 31 39 39 39 20 62 79 20 53 63 72 69 70 74 69  -1999 by Scripti
0120: 63 73 20 43 6f 72 70 6f 72 61 74 69 6f 6e 2e 0a  cs Corporation..
0130: 23 20 41 6c 6c 20 72 69 67 68 74 73 20 72 65 73  # All rights res
0140: 65 72 76 65 64 2e 0a 0a 70 61 63 6b 61 67 65 20  erved...package 
0150: 72 65 71 75 69 72 65 20 74 63 6c 74 65 73 74 20  require tcltest 
0160: 32 2e 31 0a 65 76 61 6c 20 74 63 6c 74 65 73 74  2.1.eval tcltest
0170: 3a 3a 63 6f 6e 66 69 67 75 72 65 20 24 61 72 67  ::configure $arg
0180: 76 0a 74 63 6c 74 65 73 74 3a 3a 6c 6f 61 64 54  v.tcltest::loadT
0190: 65 73 74 65 64 43 6f 6d 6d 61 6e 64 73 0a 6e 61  estedCommands.na
01a0: 6d 65 73 70 61 63 65 20 69 6d 70 6f 72 74 20 2d  mespace import -
01b0: 66 6f 72 63 65 20 74 63 6c 74 65 73 74 3a 3a 74  force tcltest::t
01c0: 65 73 74 0a 0a 23 20 54 68 65 20 70 72 6f 63 65  est..# The proce
01d0: 64 75 72 65 20 62 65 6c 6f 77 20 69 73 20 75 73  dure below is us
01e0: 65 64 20 61 73 20 74 68 65 20 73 63 72 6f 6c 6c  ed as the scroll
01f0: 69 6e 67 20 63 6f 6d 6d 61 6e 64 20 66 6f 72 20  ing command for 
0200: 74 68 65 20 74 65 78 74 3b 0a 23 20 69 74 20 6a  the text;.# it j
0210: 75 73 74 20 73 61 76 65 73 20 74 68 65 20 73 63  ust saves the sc
0220: 72 6f 6c 6c 69 6e 67 20 69 6e 66 6f 72 6d 61 74  rolling informat
0230: 69 6f 6e 20 69 6e 20 61 20 76 61 72 69 61 62 6c  ion in a variabl
0240: 65 20 22 73 63 72 6f 6c 6c 49 6e 66 6f 22 2e 0a  e "scrollInfo"..
0250: 0a 70 72 6f 63 20 73 63 72 6f 6c 6c 20 61 72 67  .proc scroll arg
0260: 73 20 7b 0a 20 20 20 20 67 6c 6f 62 61 6c 20 73  s {.    global s
0270: 63 72 6f 6c 6c 49 6e 66 6f 0a 20 20 20 20 73 65  crollInfo.    se
0280: 74 20 73 63 72 6f 6c 6c 49 6e 66 6f 20 24 61 72  t scrollInfo $ar
0290: 67 73 0a 7d 0a 0a 23 20 54 68 65 20 70 72 6f 63  gs.}..# The proc
02a0: 65 64 75 72 65 20 62 65 6c 6f 77 20 69 73 20 75  edure below is u
02b0: 73 65 64 20 74 6f 20 67 65 6e 65 72 61 74 65 20  sed to generate 
02c0: 65 72 72 6f 72 73 20 64 75 72 69 6e 67 20 73 63  errors during sc
02d0: 72 6f 6c 6c 69 6e 67 20 63 6f 6d 6d 61 6e 64 73  rolling commands
02e0: 2e 0a 0a 70 72 6f 63 20 73 63 72 6f 6c 6c 45 72  ...proc scrollEr
02f0: 72 6f 72 20 61 72 67 73 20 7b 0a 20 20 20 20 65  ror args {.    e
0300: 72 72 6f 72 20 22 73 63 72 6f 6c 6c 69 6e 67 20  rror "scrolling 
0310: 65 72 72 6f 72 22 0a 7d 0a 0a 23 20 43 72 65 61  error".}..# Crea
0320: 74 65 20 65 6e 74 72 69 65 73 20 69 6e 20 74 68  te entries in th
0330: 65 20 6f 70 74 69 6f 6e 20 64 61 74 61 62 61 73  e option databas
0340: 65 20 74 6f 20 62 65 20 73 75 72 65 20 74 68 61  e to be sure tha
0350: 74 20 67 65 6f 6d 65 74 72 79 20 6f 70 74 69 6f  t geometry optio
0360: 6e 73 0a 23 20 6c 69 6b 65 20 62 6f 72 64 65 72  ns.# like border
0370: 20 77 69 64 74 68 20 68 61 76 65 20 70 72 65 64   width have pred
0380: 69 63 74 61 62 6c 65 20 76 61 6c 75 65 73 2e 0a  ictable values..
0390: 73 65 74 20 74 77 62 77 20 32 0a 73 65 74 20 74  set twbw 2.set t
03a0: 77 68 74 20 32 0a 6f 70 74 69 6f 6e 20 61 64 64  wht 2.option add
03b0: 20 2a 54 65 78 74 2e 62 6f 72 64 65 72 57 69 64   *Text.borderWid
03c0: 74 68 20 24 74 77 62 77 0a 6f 70 74 69 6f 6e 20  th $twbw.option 
03d0: 61 64 64 20 2a 54 65 78 74 2e 68 69 67 68 6c 69  add *Text.highli
03e0: 67 68 74 54 68 69 63 6b 6e 65 73 73 20 24 74 77  ghtThickness $tw
03f0: 68 74 0a 0a 23 20 54 68 65 20 66 72 61 6d 65 20  ht..# The frame 
0400: 2e 66 20 69 73 20 6e 65 65 64 65 64 20 74 6f 20  .f is needed to 
0410: 6d 61 6b 65 20 73 75 72 65 20 74 68 61 74 20 74  make sure that t
0420: 68 65 20 6f 76 65 72 61 6c 6c 20 77 69 6e 64 6f  he overall windo
0430: 77 20 69 73 20 61 6c 77 61 79 73 0a 23 20 66 61  w is always.# fa
0440: 69 72 6c 79 20 77 69 64 65 2c 20 65 76 65 6e 20  irly wide, even 
0450: 69 66 20 74 68 65 20 74 65 78 74 20 77 69 6e 64  if the text wind
0460: 6f 77 20 69 73 20 76 65 72 79 20 6e 61 72 72 6f  ow is very narro
0470: 77 2e 20 20 54 68 69 73 20 69 73 20 6e 65 65 64  w.  This is need
0480: 65 64 0a 23 20 62 65 63 61 75 73 65 20 73 6f 6d  ed.# because som
0490: 65 20 77 69 6e 64 6f 77 20 6d 61 6e 61 67 65 72  e window manager
04a0: 73 20 64 6f 6e 27 74 20 61 6c 6c 6f 77 20 74 68  s don't allow th
04b0: 65 20 6f 76 65 72 61 6c 6c 20 77 69 64 74 68 20  e overall width 
04c0: 6f 66 20 61 20 77 69 6e 64 6f 77 0a 23 20 74 6f  of a window.# to
04d0: 20 67 65 74 20 76 65 72 79 20 6e 61 72 72 6f 77   get very narrow
04e0: 2e 0a 0a 63 61 74 63 68 20 7b 64 65 73 74 72 6f  ...catch {destro
04f0: 79 20 2e 66 20 2e 74 7d 0a 66 72 61 6d 65 20 2e  y .f .t}.frame .
0500: 66 20 2d 77 69 64 74 68 20 31 30 30 20 2d 68 65  f -width 100 -he
0510: 69 67 68 74 20 32 30 0a 70 61 63 6b 20 2e 66 20  ight 20.pack .f 
0520: 2d 73 69 64 65 20 6c 65 66 74 0a 0a 73 65 74 20  -side left..set 
0530: 66 69 78 65 64 46 6f 6e 74 20 7b 22 43 6f 75 72  fixedFont {"Cour
0540: 69 65 72 20 4e 65 77 22 20 2d 31 32 7d 0a 73 65  ier New" -12}.se
0550: 74 20 66 69 78 65 64 48 65 69 67 68 74 20 5b 66  t fixedHeight [f
0560: 6f 6e 74 20 6d 65 74 72 69 63 73 20 24 66 69 78  ont metrics $fix
0570: 65 64 46 6f 6e 74 20 2d 6c 69 6e 65 73 70 61 63  edFont -linespac
0580: 65 5d 0a 73 65 74 20 66 69 78 65 64 57 69 64 74  e].set fixedWidt
0590: 68 20 5b 66 6f 6e 74 20 6d 65 61 73 75 72 65 20  h [font measure 
05a0: 24 66 69 78 65 64 46 6f 6e 74 20 6d 5d 0a 73 65  $fixedFont m].se
05b0: 74 20 66 69 78 65 64 41 73 63 65 6e 74 20 5b 66  t fixedAscent [f
05c0: 6f 6e 74 20 6d 65 74 72 69 63 73 20 24 66 69 78  ont metrics $fix
05d0: 65 64 46 6f 6e 74 20 2d 61 73 63 65 6e 74 5d 0a  edFont -ascent].
05e0: 23 20 41 6e 79 20 74 65 73 74 20 75 73 69 6e 67  # Any test using
05f0: 20 74 68 69 73 20 76 61 6c 75 65 20 69 73 20 69   this value is i
0600: 6e 63 6f 72 72 65 63 74 20 61 6e 64 20 73 68 6f  ncorrect and sho
0610: 75 6c 64 20 62 65 20 72 65 77 72 69 74 74 65 6e  uld be rewritten
0620: 2e 0a 73 65 74 20 66 69 78 65 64 44 69 66 66 20  ..set fixedDiff 
0630: 5b 65 78 70 72 20 7b 24 66 69 78 65 64 48 65 69  [expr {$fixedHei
0640: 67 68 74 20 2d 20 31 33 7d 5d 20 3b 23 20 32 20  ght - 13}] ;# 2 
0650: 6f 6e 20 58 50 0a 0a 73 65 74 20 62 69 67 46 69  on XP..set bigFi
0660: 78 65 64 46 6f 6e 74 20 7b 22 43 6f 75 72 69 65  xedFont {"Courie
0670: 72 20 4e 65 77 22 20 2d 32 34 7d 0a 73 65 74 20  r New" -24}.set 
0680: 62 69 67 46 69 78 65 64 57 69 64 74 68 20 5b 66  bigFixedWidth [f
0690: 6f 6e 74 20 6d 65 61 73 75 72 65 20 24 62 69 67  ont measure $big
06a0: 46 69 78 65 64 46 6f 6e 74 20 6d 5d 0a 73 65 74  FixedFont m].set
06b0: 20 62 69 67 46 69 78 65 64 48 65 69 67 68 74 20   bigFixedHeight 
06c0: 5b 66 6f 6e 74 20 6d 65 74 72 69 63 73 20 24 62  [font metrics $b
06d0: 69 67 46 69 78 65 64 46 6f 6e 74 20 2d 6c 69 6e  igFixedFont -lin
06e0: 65 73 70 61 63 65 5d 0a 73 65 74 20 62 69 67 46  espace].set bigF
06f0: 69 78 65 64 41 73 63 65 6e 74 20 5b 66 6f 6e 74  ixedAscent [font
0700: 20 6d 65 74 72 69 63 73 20 24 62 69 67 46 69 78   metrics $bigFix
0710: 65 64 46 6f 6e 74 20 2d 61 73 63 65 6e 74 5d 0a  edFont -ascent].
0720: 73 65 74 20 62 69 67 46 69 78 65 64 41 73 63 65  set bigFixedAsce
0730: 6e 74 44 69 66 66 20 5b 65 78 70 72 20 7b 24 62  ntDiff [expr {$b
0740: 69 67 46 69 78 65 64 41 73 63 65 6e 74 20 2d 20  igFixedAscent - 
0750: 24 66 69 78 65 64 41 73 63 65 6e 74 7d 5d 0a 0a  $fixedAscent}]..
0760: 73 65 74 20 76 61 72 46 6f 6e 74 20 7b 54 69 6d  set varFont {Tim
0770: 65 73 20 2d 31 34 7d 0a 73 65 74 20 76 61 72 48  es -14}.set varH
0780: 65 69 67 68 74 20 5b 66 6f 6e 74 20 6d 65 74 72  eight [font metr
0790: 69 63 73 20 24 76 61 72 46 6f 6e 74 20 2d 6c 69  ics $varFont -li
07a0: 6e 65 73 70 61 63 65 5d 0a 73 65 74 20 76 61 72  nespace].set var
07b0: 41 73 63 65 6e 74 20 5b 66 6f 6e 74 20 6d 65 74  Ascent [font met
07c0: 72 69 63 73 20 24 76 61 72 46 6f 6e 74 20 2d 61  rics $varFont -a
07d0: 73 63 65 6e 74 5d 0a 23 20 41 6e 79 20 74 65 73  scent].# Any tes
07e0: 74 20 75 73 69 6e 67 20 74 68 69 73 20 76 61 6c  t using this val
07f0: 75 65 20 69 73 20 69 6e 63 6f 72 72 65 63 74 2e  ue is incorrect.
0800: 0a 73 65 74 20 76 61 72 44 69 66 66 20 5b 65 78  .set varDiff [ex
0810: 70 72 20 7b 24 76 61 72 48 65 69 67 68 74 20 2d  pr {$varHeight -
0820: 20 31 35 7d 5d 20 3b 23 20 31 20 6f 6e 20 58 50   15}] ;# 1 on XP
0830: 0a 0a 73 65 74 20 62 69 67 46 6f 6e 74 20 7b 48  ..set bigFont {H
0840: 65 6c 76 65 74 69 63 61 20 2d 32 34 7d 0a 23 20  elvetica -24}.# 
0850: 32 37 20 6f 6e 20 58 50 2c 20 32 37 20 6f 6e 20  27 on XP, 27 on 
0860: 53 6f 6c 61 72 69 73 20 38 0a 73 65 74 20 62 69  Solaris 8.set bi
0870: 67 48 65 69 67 68 74 20 5b 66 6f 6e 74 20 6d 65  gHeight [font me
0880: 74 72 69 63 73 20 24 62 69 67 46 6f 6e 74 20 2d  trics $bigFont -
0890: 6c 69 6e 65 73 70 61 63 65 5d 0a 23 20 32 31 20  linespace].# 21 
08a0: 6f 6e 20 58 50 0a 73 65 74 20 62 69 67 41 73 63  on XP.set bigAsc
08b0: 65 6e 74 20 5b 66 6f 6e 74 20 6d 65 74 72 69 63  ent [font metric
08c0: 73 20 24 62 69 67 46 6f 6e 74 20 2d 61 73 63 65  s $bigFont -asce
08d0: 6e 74 5d 0a 73 65 74 20 61 73 63 65 6e 74 44 69  nt].set ascentDi
08e0: 66 66 20 5b 65 78 70 72 20 7b 24 62 69 67 41 73  ff [expr {$bigAs
08f0: 63 65 6e 74 20 2d 20 24 66 69 78 65 64 41 73 63  cent - $fixedAsc
0900: 65 6e 74 7d 5d 0a 0a 74 65 78 74 20 2e 74 20 2d  ent}]..text .t -
0910: 66 6f 6e 74 20 24 66 69 78 65 64 46 6f 6e 74 20  font $fixedFont 
0920: 2d 77 69 64 74 68 20 32 30 20 2d 68 65 69 67 68  -width 20 -heigh
0930: 74 20 31 30 20 2d 79 73 63 72 6f 6c 6c 63 6f 6d  t 10 -yscrollcom
0940: 6d 61 6e 64 20 73 63 72 6f 6c 6c 0a 70 61 63 6b  mand scroll.pack
0950: 20 2e 74 20 2d 65 78 70 61 6e 64 20 31 20 2d 66   .t -expand 1 -f
0960: 69 6c 6c 20 62 6f 74 68 0a 2e 74 20 74 61 67 20  ill both..t tag 
0970: 63 6f 6e 66 69 67 75 72 65 20 62 69 67 20 2d 66  configure big -f
0980: 6f 6e 74 20 24 62 69 67 46 6f 6e 74 0a 2e 74 20  ont $bigFont..t 
0990: 74 61 67 20 63 6f 6e 66 69 67 75 72 65 20 62 69  tag configure bi
09a0: 67 66 69 78 20 2d 66 6f 6e 74 20 24 62 69 67 46  gfix -font $bigF
09b0: 69 78 65 64 46 6f 6e 74 0a 2e 74 20 64 65 62 75  ixedFont..t debu
09c0: 67 20 6f 6e 0a 77 6d 20 67 65 6f 6d 65 74 72 79  g on.wm geometry
09d0: 20 2e 20 7b 7d 0a 0a 73 65 74 20 62 77 20 5b 2e   . {}..set bw [.
09e0: 74 20 63 67 65 74 20 2d 62 6f 72 64 65 72 77 69  t cget -borderwi
09f0: 64 74 68 5d 0a 73 65 74 20 70 78 20 5b 2e 74 20  dth].set px [.t 
0a00: 63 67 65 74 20 2d 70 61 64 78 5d 0a 73 65 74 20  cget -padx].set 
0a10: 70 79 20 5b 2e 74 20 63 67 65 74 20 2d 70 61 64  py [.t cget -pad
0a20: 79 5d 0a 73 65 74 20 68 6c 74 68 20 5b 2e 74 20  y].set hlth [.t 
0a30: 63 67 65 74 20 2d 68 69 67 68 6c 69 67 68 74 74  cget -highlightt
0a40: 68 69 63 6b 6e 65 73 73 5d 0a 73 65 74 20 70 61  hickness].set pa
0a50: 64 78 20 5b 65 78 70 72 20 7b 24 62 77 2b 24 70  dx [expr {$bw+$p
0a60: 78 2b 24 68 6c 74 68 7d 5d 0a 73 65 74 20 70 61  x+$hlth}].set pa
0a70: 64 79 20 5b 65 78 70 72 20 7b 24 62 77 2b 24 70  dy [expr {$bw+$p
0a80: 79 2b 24 68 6c 74 68 7d 5d 0a 0a 23 20 54 68 65  y+$hlth}]..# The
0a90: 20 73 74 61 74 65 6d 65 6e 74 73 20 62 65 6c 6f   statements belo
0aa0: 77 20 72 65 73 65 74 20 74 68 65 20 6d 61 69 6e  w reset the main
0ab0: 20 77 69 6e 64 6f 77 3b 20 20 69 74 27 73 20 6e   window;  it's n
0ac0: 65 65 64 65 64 20 69 66 20 74 68 65 20 77 69 6e  eeded if the win
0ad0: 64 6f 77 0a 23 20 6d 61 6e 61 67 65 72 20 69 73  dow.# manager is
0ae0: 20 6d 77 6d 20 74 6f 20 6d 61 6b 65 20 6d 77 6d   mwm to make mwm
0af0: 20 66 6f 72 67 65 74 20 61 62 6f 75 74 20 61 20   forget about a 
0b00: 70 72 65 76 69 6f 75 73 20 6d 69 6e 69 6d 75 6d  previous minimum
0b10: 20 73 69 7a 65 20 73 65 74 74 69 6e 67 2e 0a 0a   size setting...
0b20: 77 6d 20 77 69 74 68 64 72 61 77 20 2e 0a 77 6d  wm withdraw ..wm
0b30: 20 6d 69 6e 73 69 7a 65 20 2e 20 31 20 31 0a 77   minsize . 1 1.w
0b40: 6d 20 70 6f 73 69 74 69 6f 6e 66 72 6f 6d 20 2e  m positionfrom .
0b50: 20 75 73 65 72 0a 77 6d 20 64 65 69 63 6f 6e 69   user.wm deiconi
0b60: 66 79 20 2e 0a 75 70 64 61 74 65 0a 0a 23 20 53  fy ..update..# S
0b70: 6f 6d 65 20 77 69 6e 64 6f 77 20 6d 61 6e 61 67  ome window manag
0b80: 65 72 73 20 28 6c 69 6b 65 20 6f 6c 77 6d 20 75  ers (like olwm u
0b90: 6e 64 65 72 20 53 75 6e 4f 53 20 34 2e 31 2e 33  nder SunOS 4.1.3
0ba0: 29 20 6d 69 73 62 65 68 61 76 65 20 69 6e 20 61  ) misbehave in a
0bb0: 20 77 61 79 0a 23 20 74 68 61 74 20 74 65 6e 64   way.# that tend
0bc0: 73 20 74 6f 20 6d 61 72 63 68 20 77 69 6e 64 6f  s to march windo
0bd0: 77 73 20 6f 66 66 20 74 68 65 20 74 6f 70 20 61  ws off the top a
0be0: 6e 64 20 6c 65 66 74 20 6f 66 20 74 68 65 20 73  nd left of the s
0bf0: 63 72 65 65 6e 2e 20 20 49 66 0a 23 20 74 68 69  creen.  If.# thi
0c00: 73 20 68 61 70 70 65 6e 73 2c 20 73 6f 6d 65 20  s happens, some 
0c10: 74 65 73 74 73 20 77 69 6c 6c 20 66 61 69 6c 20  tests will fail 
0c20: 62 65 63 61 75 73 65 20 70 61 72 74 73 20 6f 66  because parts of
0c30: 20 74 68 65 20 77 69 6e 64 6f 77 20 77 69 6c 6c   the window will
0c40: 0a 23 20 6e 6f 74 20 6e 65 65 64 20 74 6f 20 62  .# not need to b
0c50: 65 20 64 69 73 70 6c 61 79 65 64 20 28 62 65 63  e displayed (bec
0c60: 61 75 73 65 20 74 68 65 79 27 72 65 20 6f 66 66  ause they're off
0c70: 2d 73 63 72 65 65 6e 29 2e 20 20 54 6f 20 6b 65  -screen).  To ke
0c80: 65 70 20 74 68 69 73 0a 23 20 66 72 6f 6d 20 68  ep this.# from h
0c90: 61 70 70 65 6e 69 6e 67 2c 20 6d 6f 76 65 20 74  appening, move t
0ca0: 68 65 20 77 69 6e 64 6f 77 20 69 66 20 69 74 27  he window if it'
0cb0: 73 20 67 65 74 74 69 6e 67 20 6e 65 61 72 20 74  s getting near t
0cc0: 68 65 20 6c 65 66 74 20 6f 72 20 74 6f 70 0a 23  he left or top.#
0cd0: 20 65 64 67 65 73 20 6f 66 20 74 68 65 20 73 63   edges of the sc
0ce0: 72 65 65 6e 2e 0a 0a 69 66 20 7b 28 5b 77 69 6e  reen...if {([win
0cf0: 66 6f 20 72 6f 6f 74 79 20 2e 5d 20 3c 20 35 30  fo rooty .] < 50
0d00: 29 20 7c 7c 20 28 5b 77 69 6e 66 6f 20 72 6f 6f  ) || ([winfo roo
0d10: 74 78 20 2e 5d 20 3c 20 35 30 29 7d 20 7b 0a 20  tx .] < 50)} {. 
0d20: 20 20 20 77 6d 20 67 65 6f 6d 20 2e 20 2b 35 30     wm geom . +50
0d30: 2b 35 30 0a 7d 0a 0a 74 65 73 74 20 74 65 78 74  +50.}..test text
0d40: 44 69 73 70 2d 30 2e 31 20 7b 64 6f 75 62 6c 65  Disp-0.1 {double
0d50: 20 74 61 67 20 65 6c 69 64 65 20 74 72 61 6e 73   tag elide trans
0d60: 69 74 69 6f 6e 7d 20 7b 0a 20 20 20 20 23 20 45  ition} {.    # E
0d70: 78 61 6d 70 6c 65 20 66 72 6f 6d 20 74 6b 63 68  xample from tkch
0d80: 61 74 20 63 72 61 73 68 2e 20 20 46 6f 72 20 73  at crash.  For s
0d90: 6f 6d 65 20 72 65 61 73 6f 6e 20 63 61 6e 20 6f  ome reason can o
0da0: 6e 6c 79 0a 20 20 20 20 23 20 67 65 74 20 74 68  nly.    # get th
0db0: 69 73 20 74 65 73 74 20 63 61 73 65 20 74 6f 20  is test case to 
0dc0: 63 72 61 73 68 20 77 68 65 6e 20 66 69 72 73 74  crash when first
0dd0: 2e 0a 20 20 20 20 63 61 74 63 68 20 7b 64 65 73  ..    catch {des
0de0: 74 72 6f 79 20 2e 74 6f 70 7d 0a 20 20 20 20 70  troy .top}.    p
0df0: 61 63 6b 20 5b 74 65 78 74 20 2e 74 6f 70 5d 0a  ack [text .top].
0e00: 0a 20 20 20 20 66 6f 72 65 61 63 68 20 76 61 6c  .    foreach val
0e10: 20 7b 30 20 31 20 32 20 33 7d 20 7b 0a 09 2e 74   {0 1 2 3} {...t
0e20: 6f 70 20 69 6e 73 65 72 74 20 31 2e 30 20 22 68  op insert 1.0 "h
0e30: 65 6c 6c 6f 5c 6e 22 0a 09 2e 74 6f 70 20 74 61  ello\n"...top ta
0e40: 67 20 63 6f 6e 66 69 67 75 72 65 20 74 61 67 24  g configure tag$
0e50: 76 61 6c 0a 09 2e 74 6f 70 20 74 61 67 20 61 64  val...top tag ad
0e60: 64 20 74 61 67 24 76 61 6c 20 31 2e 30 20 32 2e  d tag$val 1.0 2.
0e70: 30 0a 09 73 65 74 20 3a 3a 4f 70 74 69 6f 6e 73  0..set ::Options
0e80: 28 74 61 67 24 76 61 6c 29 20 30 0a 20 20 20 20  (tag$val) 0.    
0e90: 7d 0a 0a 20 20 20 20 70 72 6f 63 20 44 6f 56 69  }..    proc DoVi
0ea0: 73 20 7b 74 61 67 7d 20 7b 0a 09 2e 74 6f 70 20  s {tag} {...top 
0eb0: 74 61 67 20 63 6f 6e 66 69 67 20 24 74 61 67 20  tag config $tag 
0ec0: 2d 65 6c 69 64 65 20 24 3a 3a 4f 70 74 69 6f 6e  -elide $::Option
0ed0: 73 28 24 74 61 67 29 0a 20 20 20 20 7d 0a 0a 20  s($tag).    }.. 
0ee0: 20 20 20 70 72 6f 63 20 4e 69 63 6b 56 69 73 20     proc NickVis 
0ef0: 7b 76 61 6c 7d 20 7b 0a 09 66 6f 72 65 61 63 68  {val} {..foreach
0f00: 20 74 20 5b 61 72 72 61 79 20 6e 61 6d 65 73 20   t [array names 
0f10: 3a 3a 4f 70 74 69 6f 6e 73 20 5d 20 7b 0a 09 20  ::Options ] {.. 
0f20: 20 20 20 69 66 20 7b 24 3a 3a 4f 70 74 69 6f 6e     if {$::Option
0f30: 73 28 24 74 29 20 21 3d 20 24 76 61 6c 7d 20 7b  s($t) != $val} {
0f40: 0a 09 09 73 65 74 20 3a 3a 4f 70 74 69 6f 6e 73  ...set ::Options
0f50: 28 24 74 29 20 24 76 61 6c 0a 09 09 44 6f 56 69  ($t) $val...DoVi
0f60: 73 20 24 74 0a 09 20 20 20 20 7d 0a 09 7d 0a 20  s $t..    }..}. 
0f70: 20 20 20 7d 0a 20 20 20 20 4e 69 63 6b 56 69 73     }.    NickVis
0f80: 20 31 0a 20 20 20 20 75 6e 73 65 74 20 3a 3a 4f   1.    unset ::O
0f90: 70 74 69 6f 6e 73 0a 20 20 20 20 64 65 73 74 72  ptions.    destr
0fa0: 6f 79 20 2e 74 6f 70 0a 7d 20 7b 7d 0a 0a 74 65  oy .top.} {}..te
0fb0: 73 74 20 74 65 78 74 44 69 73 70 2d 30 2e 32 20  st textDisp-0.2 
0fc0: 7b 64 6f 75 62 6c 65 20 74 61 67 20 65 6c 69 64  {double tag elid
0fd0: 65 20 74 72 61 6e 73 69 74 69 6f 6e 7d 20 7b 0a  e transition} {.
0fe0: 20 20 20 20 23 20 45 78 61 6d 70 6c 65 20 66 72      # Example fr
0ff0: 6f 6d 20 74 6b 63 68 61 74 20 63 72 61 73 68 2e  om tkchat crash.
1000: 20 20 46 6f 72 20 73 6f 6d 65 20 72 65 61 73 6f    For some reaso
1010: 6e 20 63 61 6e 20 6f 6e 6c 79 0a 20 20 20 20 23  n can only.    #
1020: 20 67 65 74 20 74 68 69 73 20 74 65 73 74 20 63   get this test c
1030: 61 73 65 20 74 6f 20 63 72 61 73 68 20 77 68 65  ase to crash whe
1040: 6e 20 66 69 72 73 74 2e 0a 20 20 20 20 63 61 74  n first..    cat
1050: 63 68 20 7b 64 65 73 74 72 6f 79 20 2e 74 6f 70  ch {destroy .top
1060: 7d 0a 20 20 20 20 70 61 63 6b 20 5b 74 65 78 74  }.    pack [text
1070: 20 2e 74 6f 70 5d 0a 0a 20 20 20 20 66 6f 72 65   .top]..    fore
1080: 61 63 68 20 76 61 6c 20 7b 30 20 31 20 32 20 33  ach val {0 1 2 3
1090: 7d 20 7b 0a 09 2e 74 6f 70 20 69 6e 73 65 72 74  } {...top insert
10a0: 20 31 2e 30 20 22 68 65 6c 6c 6f 22 0a 09 2e 74   1.0 "hello"...t
10b0: 6f 70 20 74 61 67 20 63 6f 6e 66 69 67 75 72 65  op tag configure
10c0: 20 74 61 67 24 76 61 6c 0a 09 2e 74 6f 70 20 74   tag$val...top t
10d0: 61 67 20 61 64 64 20 74 61 67 24 76 61 6c 20 31  ag add tag$val 1
10e0: 2e 30 20 31 2e 35 0a 09 73 65 74 20 3a 3a 4f 70  .0 1.5..set ::Op
10f0: 74 69 6f 6e 73 28 74 61 67 24 76 61 6c 29 20 30  tions(tag$val) 0
1100: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 70 72 6f 63  .    }..    proc
1110: 20 44 6f 56 69 73 20 7b 74 61 67 7d 20 7b 0a 09   DoVis {tag} {..
1120: 2e 74 6f 70 20 74 61 67 20 63 6f 6e 66 69 67 20  .top tag config 
1130: 24 74 61 67 20 2d 65 6c 69 64 65 20 24 3a 3a 4f  $tag -elide $::O
1140: 70 74 69 6f 6e 73 28 24 74 61 67 29 0a 20 20 20  ptions($tag).   
1150: 20 7d 0a 0a 20 20 20 20 70 72 6f 63 20 4e 69 63   }..    proc Nic
1160: 6b 56 69 73 20 7b 76 61 6c 7d 20 7b 0a 09 66 6f  kVis {val} {..fo
1170: 72 65 61 63 68 20 74 20 5b 61 72 72 61 79 20 6e  reach t [array n
1180: 61 6d 65 73 20 3a 3a 4f 70 74 69 6f 6e 73 20 5d  ames ::Options ]
1190: 20 7b 0a 09 20 20 20 20 69 66 20 7b 24 3a 3a 4f   {..    if {$::O
11a0: 70 74 69 6f 6e 73 28 24 74 29 20 21 3d 20 24 76  ptions($t) != $v
11b0: 61 6c 7d 20 7b 0a 09 09 73 65 74 20 3a 3a 4f 70  al} {...set ::Op
11c0: 74 69 6f 6e 73 28 24 74 29 20 24 76 61 6c 0a 09  tions($t) $val..
11d0: 09 44 6f 56 69 73 20 24 74 0a 09 20 20 20 20 7d  .DoVis $t..    }
11e0: 0a 09 7d 0a 20 20 20 20 7d 0a 20 20 20 20 4e 69  ..}.    }.    Ni
11f0: 63 6b 56 69 73 20 31 0a 20 20 20 20 75 6e 73 65  ckVis 1.    unse
1200: 74 20 3a 3a 4f 70 74 69 6f 6e 73 0a 20 20 20 20  t ::Options.    
1210: 64 65 73 74 72 6f 79 20 2e 74 6f 70 0a 7d 20 7b  destroy .top.} {
1220: 7d 0a 0a 74 65 73 74 20 74 65 78 74 44 69 73 70  }..test textDisp
1230: 2d 30 2e 33 20 7b 64 6f 75 62 6c 65 20 74 61 67  -0.3 {double tag
1240: 20 65 6c 69 64 65 20 74 72 61 6e 73 69 74 69 6f   elide transitio
1250: 6e 7d 20 7b 0a 20 20 20 20 63 61 74 63 68 20 7b  n} {.    catch {
1260: 64 65 73 74 72 6f 79 20 2e 74 78 74 7d 0a 20 20  destroy .txt}.  
1270: 20 20 70 61 63 6b 20 5b 74 65 78 74 20 2e 74 78    pack [text .tx
1280: 74 5d 0a 20 20 20 20 23 20 4e 6f 74 65 20 74 68  t].    # Note th
1290: 61 74 20 54 52 41 46 46 49 43 20 73 68 6f 75 6c  at TRAFFIC shoul
12a0: 64 20 68 61 76 65 20 61 20 68 69 67 68 65 72 20  d have a higher 
12b0: 70 72 69 6f 72 69 74 79 20 74 68 61 6e 20 53 59  priority than SY
12c0: 53 54 45 4d 0a 20 20 20 20 23 20 69 6e 20 74 65  STEM.    # in te
12d0: 72 6d 73 20 6f 66 20 74 68 65 20 74 61 67 20 65  rms of the tag e
12e0: 66 66 65 63 74 73 2e 0a 20 20 20 20 2e 74 78 74  ffects..    .txt
12f0: 20 74 61 67 20 63 6f 6e 66 69 67 75 72 65 20 53   tag configure S
1300: 59 53 54 45 4d 20 2d 65 6c 69 64 65 20 30 0a 20  YSTEM -elide 0. 
1310: 20 20 20 2e 74 78 74 20 74 61 67 20 63 6f 6e 66     .txt tag conf
1320: 69 67 75 72 65 20 54 52 41 46 46 49 43 20 2d 65  igure TRAFFIC -e
1330: 6c 69 64 65 20 31 0a 20 20 20 20 2e 74 78 74 20  lide 1.    .txt 
1340: 69 6e 73 65 72 74 20 65 6e 64 20 22 5c 6e 22 20  insert end "\n" 
1350: 7b 54 52 41 46 46 49 43 20 53 59 53 54 45 4d 7d  {TRAFFIC SYSTEM}
1360: 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20 20 20  .    update.    
1370: 64 65 73 74 72 6f 79 20 2e 74 78 74 0a 7d 20 7b  destroy .txt.} {
1380: 7d 0a 0a 74 65 73 74 20 74 65 78 74 44 69 73 70  }..test textDisp
1390: 2d 30 2e 34 20 7b 64 6f 75 62 6c 65 20 74 61 67  -0.4 {double tag
13a0: 20 65 6c 69 64 65 20 74 72 61 6e 73 69 74 69 6f   elide transitio
13b0: 6e 7d 20 7b 0a 20 20 20 20 63 61 74 63 68 20 7b  n} {.    catch {
13c0: 64 65 73 74 72 6f 79 20 2e 74 78 74 7d 0a 20 20  destroy .txt}.  
13d0: 20 20 70 61 63 6b 20 5b 74 65 78 74 20 2e 74 78    pack [text .tx
13e0: 74 5d 0a 20 20 20 20 23 20 4e 6f 74 65 20 74 68  t].    # Note th
13f0: 61 74 20 54 52 41 46 46 49 43 20 73 68 6f 75 6c  at TRAFFIC shoul
1400: 64 20 68 61 76 65 20 61 20 68 69 67 68 65 72 20  d have a higher 
1410: 70 72 69 6f 72 69 74 79 20 74 68 61 6e 20 53 59  priority than SY
1420: 53 54 45 4d 0a 20 20 20 20 23 20 69 6e 20 74 65  STEM.    # in te
1430: 72 6d 73 20 6f 66 20 74 68 65 20 74 61 67 20 65  rms of the tag e
1440: 66 66 65 63 74 73 2e 0a 20 20 20 20 2e 74 78 74  ffects..    .txt
1450: 20 74 61 67 20 63 6f 6e 66 69 67 75 72 65 20 53   tag configure S
1460: 59 53 54 45 4d 20 2d 65 6c 69 64 65 20 30 0a 20  YSTEM -elide 0. 
1470: 20 20 20 2e 74 78 74 20 74 61 67 20 63 6f 6e 66     .txt tag conf
1480: 69 67 75 72 65 20 54 52 41 46 46 49 43 20 2d 65  igure TRAFFIC -e
1490: 6c 69 64 65 20 31 0a 20 20 20 20 2e 74 78 74 20  lide 1.    .txt 
14a0: 69 6e 73 65 72 74 20 65 6e 64 20 22 5c 6e 22 20  insert end "\n" 
14b0: 7b 53 59 53 54 45 4d 20 54 52 41 46 46 49 43 7d  {SYSTEM TRAFFIC}
14c0: 0a 20 20 20 20 23 20 43 72 61 73 68 20 77 61 73  .    # Crash was
14d0: 20 68 65 72 65 2e 0a 20 20 20 20 75 70 64 61 74   here..    updat
14e0: 65 0a 20 20 20 20 64 65 73 74 72 6f 79 20 2e 74  e.    destroy .t
14f0: 78 74 0a 7d 20 7b 7d 0a 0a 74 65 73 74 20 74 65  xt.} {}..test te
1500: 78 74 44 69 73 70 2d 30 2e 35 20 7b 64 6f 75 62  xtDisp-0.5 {doub
1510: 6c 65 20 74 61 67 20 65 6c 69 64 65 20 74 72 61  le tag elide tra
1520: 6e 73 69 74 69 6f 6e 7d 20 7b 0a 20 20 20 20 63  nsition} {.    c
1530: 61 74 63 68 20 7b 64 65 73 74 72 6f 79 20 2e 74  atch {destroy .t
1540: 78 74 7d 0a 20 20 20 20 70 61 63 6b 20 5b 74 65  xt}.    pack [te
1550: 78 74 20 2e 74 78 74 5d 0a 20 20 20 20 2e 74 78  xt .txt].    .tx
1560: 74 20 74 61 67 20 63 6f 6e 66 69 67 75 72 65 20  t tag configure 
1570: 57 45 4c 43 4f 4d 45 20 2d 65 6c 69 64 65 20 31  WELCOME -elide 1
1580: 0a 20 20 20 20 2e 74 78 74 20 74 61 67 20 63 6f  .    .txt tag co
1590: 6e 66 69 67 75 72 65 20 53 59 53 54 45 4d 20 2d  nfigure SYSTEM -
15a0: 65 6c 69 64 65 20 30 0a 20 20 20 20 2e 74 78 74  elide 0.    .txt
15b0: 20 74 61 67 20 63 6f 6e 66 69 67 75 72 65 20 54   tag configure T
15c0: 52 41 46 46 49 43 20 2d 65 6c 69 64 65 20 31 0a  RAFFIC -elide 1.
15d0: 0a 20 20 20 20 2e 74 78 74 20 69 6e 73 65 72 74  .    .txt insert
15e0: 20 65 6e 64 20 22 5c 6e 22 20 7b 53 59 53 54 45   end "\n" {SYSTE
15f0: 4d 20 54 52 41 46 46 49 43 7d 0a 20 20 20 20 2e  M TRAFFIC}.    .
1600: 74 78 74 20 69 6e 73 65 72 74 20 65 6e 64 20 22  txt insert end "
1610: 5c 6e 22 20 57 45 4c 43 4f 4d 45 0a 20 20 20 20  \n" WELCOME.    
1620: 23 20 43 72 61 73 68 20 77 61 73 20 68 65 72 65  # Crash was here
1630: 2e 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20 20  ..    update.   
1640: 20 64 65 73 74 72 6f 79 20 2e 74 78 74 0a 7d 20   destroy .txt.} 
1650: 7b 7d 0a 0a 74 65 73 74 20 74 65 78 74 44 69 73  {}..test textDis
1660: 70 2d 31 2e 31 20 7b 47 65 74 53 74 79 6c 65 20  p-1.1 {GetStyle 
1670: 70 72 6f 63 65 64 75 72 65 2c 20 70 72 69 6f 72  procedure, prior
1680: 69 74 69 65 73 20 61 6e 64 20 74 61 62 20 73 74  ities and tab st
1690: 6f 70 73 7d 20 7b 0a 20 20 20 20 2e 74 20 64 65  ops} {.    .t de
16a0: 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a 20 20 20  lete 1.0 end.   
16b0: 20 2e 74 20 69 6e 73 65 72 74 20 31 2e 30 20 22   .t insert 1.0 "
16c0: 78 5c 74 79 22 0a 20 20 20 20 2e 74 20 74 61 67  x\ty".    .t tag
16d0: 20 64 65 6c 65 74 65 20 78 20 79 20 7a 0a 20 20   delete x y z.  
16e0: 20 20 2e 74 20 74 61 67 20 63 6f 6e 66 69 67 75    .t tag configu
16f0: 72 65 20 78 20 2d 74 61 62 73 20 7b 35 30 7d 0a  re x -tabs {50}.
1700: 20 20 20 20 2e 74 20 74 61 67 20 63 6f 6e 66 69      .t tag confi
1710: 67 75 72 65 20 79 20 2d 66 6f 72 65 67 72 6f 75  gure y -foregrou
1720: 6e 64 20 62 6c 61 63 6b 0a 20 20 20 20 2e 74 20  nd black.    .t 
1730: 74 61 67 20 63 6f 6e 66 69 67 75 72 65 20 7a 20  tag configure z 
1740: 2d 74 61 62 73 20 7b 37 30 7d 0a 20 20 20 20 2e  -tabs {70}.    .
1750: 74 20 74 61 67 20 61 64 64 20 78 20 31 2e 30 20  t tag add x 1.0 
1760: 31 2e 65 6e 64 0a 20 20 20 20 2e 74 20 74 61 67  1.end.    .t tag
1770: 20 61 64 64 20 79 20 31 2e 30 20 31 2e 65 6e 64   add y 1.0 1.end
1780: 0a 20 20 20 20 2e 74 20 74 61 67 20 61 64 64 20  .    .t tag add 
1790: 7a 20 31 2e 30 20 31 2e 65 6e 64 0a 20 20 20 20  z 1.0 1.end.    
17a0: 75 70 64 61 74 65 20 69 64 6c 65 74 61 73 6b 73  update idletasks
17b0: 0a 20 20 20 20 73 65 74 20 78 20 5b 6c 69 6e 64  .    set x [lind
17c0: 65 78 20 5b 2e 74 20 62 62 6f 78 20 31 2e 32 5d  ex [.t bbox 1.2]
17d0: 20 30 5d 0a 20 20 20 20 2e 74 20 74 61 67 20 63   0].    .t tag c
17e0: 6f 6e 66 69 67 75 72 65 20 7a 20 2d 74 61 62 73  onfigure z -tabs
17f0: 20 7b 7d 0a 20 20 20 20 6c 61 70 70 65 6e 64 20   {}.    lappend 
1800: 78 20 5b 6c 69 6e 64 65 78 20 5b 2e 74 20 62 62  x [lindex [.t bb
1810: 6f 78 20 31 2e 32 5d 20 30 5d 0a 20 20 20 20 2e  ox 1.2] 0].    .
1820: 74 20 74 61 67 20 63 6f 6e 66 69 67 75 72 65 20  t tag configure 
1830: 7a 20 2d 74 61 62 73 20 7b 33 30 7d 0a 20 20 20  z -tabs {30}.   
1840: 20 2e 74 20 74 61 67 20 72 61 69 73 65 20 78 0a   .t tag raise x.
1850: 20 20 20 20 75 70 64 61 74 65 20 69 64 6c 65 74      update idlet
1860: 61 73 6b 73 0a 20 20 20 20 6c 61 70 70 65 6e 64  asks.    lappend
1870: 20 78 20 5b 6c 69 6e 64 65 78 20 5b 2e 74 20 62   x [lindex [.t b
1880: 62 6f 78 20 31 2e 32 5d 20 30 5d 0a 7d 20 5b 6c  box 1.2] 0].} [l
1890: 69 73 74 20 5b 65 78 70 72 20 7b 37 30 2b 24 70  ist [expr {70+$p
18a0: 61 64 78 7d 5d 20 5b 65 78 70 72 20 7b 35 30 2b  adx}] [expr {50+
18b0: 24 70 61 64 78 7d 5d 20 5b 65 78 70 72 20 7b 35  $padx}] [expr {5
18c0: 30 2b 24 70 61 64 78 7d 5d 5d 0a 2e 74 20 74 61  0+$padx}]]..t ta
18d0: 67 20 64 65 6c 65 74 65 20 78 20 79 20 7a 0a 0a  g delete x y z..
18e0: 74 65 73 74 20 74 65 78 74 44 69 73 70 2d 31 2e  test textDisp-1.
18f0: 32 20 7b 47 65 74 53 74 79 6c 65 20 70 72 6f 63  2 {GetStyle proc
1900: 65 64 75 72 65 2c 20 77 72 61 70 6d 6f 64 65 7d  edure, wrapmode}
1910: 20 7b 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69 67   {.    .t config
1920: 75 72 65 20 2d 77 72 61 70 20 63 68 61 72 0a 20  ure -wrap char. 
1930: 20 20 20 2e 74 20 64 65 6c 65 74 65 20 31 2e 30     .t delete 1.0
1940: 20 65 6e 64 0a 20 20 20 20 2e 74 20 69 6e 73 65   end.    .t inse
1950: 72 74 20 31 2e 30 20 22 61 62 63 64 5c 6e 65 66  rt 1.0 "abcd\nef
1960: 67 20 68 69 6a 6b 6c 20 6d 6e 6f 70 20 71 72 73  g hijkl mnop qrs
1970: 74 75 76 20 77 78 79 7a 22 0a 20 20 20 20 2e 74  tuv wxyz".    .t
1980: 20 74 61 67 20 63 6f 6e 66 69 67 75 72 65 20 78   tag configure x
1990: 20 2d 77 72 61 70 20 77 6f 72 64 0a 20 20 20 20   -wrap word.    
19a0: 2e 74 20 74 61 67 20 63 6f 6e 66 69 67 75 72 65  .t tag configure
19b0: 20 79 20 2d 77 72 61 70 20 6e 6f 6e 65 0a 20 20   y -wrap none.  
19c0: 20 20 2e 74 20 74 61 67 20 72 61 69 73 65 20 79    .t tag raise y
19d0: 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20 20 20  .    update.    
19e0: 73 65 74 20 72 65 73 75 6c 74 20 5b 6c 69 73 74  set result [list
19f0: 20 5b 2e 74 20 62 62 6f 78 20 32 2e 32 30 5d 5d   [.t bbox 2.20]]
1a00: 0a 20 20 20 20 2e 74 20 74 61 67 20 61 64 64 20  .    .t tag add 
1a10: 78 20 32 2e 30 20 32 2e 31 0a 20 20 20 20 6c 61  x 2.0 2.1.    la
1a20: 70 70 65 6e 64 20 72 65 73 75 6c 74 20 5b 2e 74  ppend result [.t
1a30: 20 62 62 6f 78 20 32 2e 32 30 5d 0a 20 20 20 20   bbox 2.20].    
1a40: 2e 74 20 74 61 67 20 61 64 64 20 79 20 31 2e 65  .t tag add y 1.e
1a50: 6e 64 20 32 2e 32 0a 20 20 20 20 6c 61 70 70 65  nd 2.2.    lappe
1a60: 6e 64 20 72 65 73 75 6c 74 20 5b 2e 74 20 62 62  nd result [.t bb
1a70: 6f 78 20 32 2e 32 30 5d 0a 7d 20 5b 6c 69 73 74  ox 2.20].} [list
1a80: 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20 24 70 61   \.    [list $pa
1a90: 64 78 20 5b 65 78 70 72 20 7b 24 70 61 64 79 2b  dx [expr {$pady+
1aa0: 32 2a 24 66 69 78 65 64 48 65 69 67 68 74 7d 5d  2*$fixedHeight}]
1ab0: 20 24 66 69 78 65 64 57 69 64 74 68 20 24 66 69   $fixedWidth $fi
1ac0: 78 65 64 48 65 69 67 68 74 5d 20 5c 0a 20 20 20  xedHeight] \.   
1ad0: 20 5b 6c 69 73 74 20 5b 65 78 70 72 20 7b 24 70   [list [expr {$p
1ae0: 61 64 78 2b 35 2a 24 66 69 78 65 64 57 69 64 74  adx+5*$fixedWidt
1af0: 68 7d 5d 20 5b 65 78 70 72 20 7b 24 70 61 64 79  h}] [expr {$pady
1b00: 2b 32 2a 24 66 69 78 65 64 48 65 69 67 68 74 7d  +2*$fixedHeight}
1b10: 5d 20 24 66 69 78 65 64 57 69 64 74 68 20 24 66  ] $fixedWidth $f
1b20: 69 78 65 64 48 65 69 67 68 74 5d 20 5c 0a 20 20  ixedHeight] \.  
1b30: 20 20 7b 7d 5d 0a 2e 74 20 74 61 67 20 64 65 6c    {}]..t tag del
1b40: 65 74 65 20 78 20 79 0a 0a 74 65 73 74 20 74 65  ete x y..test te
1b50: 78 74 44 69 73 70 2d 32 2e 31 20 7b 4c 61 79 6f  xtDisp-2.1 {Layo
1b60: 75 74 44 4c 69 6e 65 2c 20 62 61 73 69 63 73 7d  utDLine, basics}
1b70: 20 7b 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69 67   {.    .t config
1b80: 75 72 65 20 2d 77 72 61 70 20 63 68 61 72 0a 20  ure -wrap char. 
1b90: 20 20 20 2e 74 20 64 65 6c 65 74 65 20 31 2e 30     .t delete 1.0
1ba0: 20 65 6e 64 0a 20 20 20 20 2e 74 20 69 6e 73 65   end.    .t inse
1bb0: 72 74 20 31 2e 30 20 22 54 68 69 73 20 69 73 20  rt 1.0 "This is 
1bc0: 73 6f 6d 65 20 73 61 6d 70 6c 65 20 74 65 78 74  some sample text
1bd0: 20 66 6f 72 20 74 65 73 74 69 6e 67 2e 22 0a 20   for testing.". 
1be0: 20 20 20 6c 69 73 74 20 5b 2e 74 20 62 62 6f 78     list [.t bbox
1bf0: 20 31 2e 31 39 5d 20 5b 2e 74 20 62 62 6f 78 20   1.19] [.t bbox 
1c00: 31 2e 32 30 5d 0a 7d 20 5b 6c 69 73 74 20 5c 0a  1.20].} [list \.
1c10: 20 20 20 20 5b 6c 69 73 74 20 5b 65 78 70 72 20      [list [expr 
1c20: 24 70 61 64 78 20 2b 20 24 66 69 78 65 64 57 69  $padx + $fixedWi
1c30: 64 74 68 20 2a 20 31 39 5d 20 24 70 61 64 79 20  dth * 19] $pady 
1c40: 24 66 69 78 65 64 57 69 64 74 68 20 24 66 69 78  $fixedWidth $fix
1c50: 65 64 48 65 69 67 68 74 5d 20 5c 0a 20 20 20 20  edHeight] \.    
1c60: 5b 6c 69 73 74 20 24 70 61 64 78 20 5b 65 78 70  [list $padx [exp
1c70: 72 20 24 70 61 64 78 20 2b 20 24 66 69 78 65 64  r $padx + $fixed
1c80: 48 65 69 67 68 74 5d 20 24 66 69 78 65 64 57 69  Height] $fixedWi
1c90: 64 74 68 20 24 66 69 78 65 64 48 65 69 67 68 74  dth $fixedHeight
1ca0: 5d 5d 0a 0a 74 65 73 74 20 74 65 78 74 44 69 73  ]]..test textDis
1cb0: 70 2d 32 2e 32 20 7b 4c 61 79 6f 75 74 44 4c 69  p-2.2 {LayoutDLi
1cc0: 6e 65 2c 20 62 61 73 69 63 73 7d 20 7b 0a 20 20  ne, basics} {.  
1cd0: 20 20 2e 74 20 63 6f 6e 66 69 67 75 72 65 20 2d    .t configure -
1ce0: 77 72 61 70 20 63 68 61 72 0a 20 20 20 20 2e 74  wrap char.    .t
1cf0: 20 64 65 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a   delete 1.0 end.
1d00: 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20 31 2e      .t insert 1.
1d10: 30 20 22 54 68 69 73 20 69 73 78 20 73 6f 6d 65  0 "This isx some
1d20: 20 73 61 6d 70 6c 65 20 74 65 78 74 20 66 6f 72   sample text for
1d30: 20 74 65 73 74 69 6e 67 2e 22 0a 20 20 20 20 6c   testing.".    l
1d40: 69 73 74 20 5b 2e 74 20 62 62 6f 78 20 31 2e 31  ist [.t bbox 1.1
1d50: 39 5d 20 5b 2e 74 20 62 62 6f 78 20 31 2e 32 30  9] [.t bbox 1.20
1d60: 5d 0a 7d 20 5b 6c 69 73 74 20 5c 0a 20 20 20 20  ].} [list \.    
1d70: 5b 6c 69 73 74 20 5b 65 78 70 72 20 7b 24 70 61  [list [expr {$pa
1d80: 64 78 2b 31 39 2a 24 66 69 78 65 64 57 69 64 74  dx+19*$fixedWidt
1d90: 68 7d 5d 20 24 70 61 64 79 20 24 66 69 78 65 64  h}] $pady $fixed
1da0: 57 69 64 74 68 20 24 66 69 78 65 64 48 65 69 67  Width $fixedHeig
1db0: 68 74 5d 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20  ht] \.    [list 
1dc0: 24 70 61 64 78 20 5b 65 78 70 72 20 7b 24 70 61  $padx [expr {$pa
1dd0: 64 79 2b 24 66 69 78 65 64 48 65 69 67 68 74 7d  dy+$fixedHeight}
1de0: 5d 20 24 66 69 78 65 64 57 69 64 74 68 20 24 66  ] $fixedWidth $f
1df0: 69 78 65 64 48 65 69 67 68 74 5d 5d 0a 0a 74 65  ixedHeight]]..te
1e00: 73 74 20 74 65 78 74 44 69 73 70 2d 32 2e 33 20  st textDisp-2.3 
1e10: 7b 4c 61 79 6f 75 74 44 4c 69 6e 65 2c 20 62 61  {LayoutDLine, ba
1e20: 73 69 63 73 7d 20 7b 0a 20 20 20 20 2e 74 20 63  sics} {.    .t c
1e30: 6f 6e 66 69 67 75 72 65 20 2d 77 72 61 70 20 63  onfigure -wrap c
1e40: 68 61 72 0a 20 20 20 20 2e 74 20 64 65 6c 65 74  har.    .t delet
1e50: 65 20 31 2e 30 20 65 6e 64 0a 20 20 20 20 2e 74  e 1.0 end.    .t
1e60: 20 69 6e 73 65 72 74 20 31 2e 30 20 22 54 68 69   insert 1.0 "Thi
1e70: 73 20 69 73 78 78 78 20 73 6f 6d 65 20 73 61 6d  s isxxx some sam
1e80: 70 6c 65 20 74 65 78 74 20 66 6f 72 20 74 65 73  ple text for tes
1e90: 74 69 6e 67 2e 22 0a 20 20 20 20 6c 69 73 74 20  ting.".    list 
1ea0: 5b 2e 74 20 62 62 6f 78 20 31 2e 31 39 5d 20 5b  [.t bbox 1.19] [
1eb0: 2e 74 20 62 62 6f 78 20 31 2e 32 30 5d 0a 7d 20  .t bbox 1.20].} 
1ec0: 5b 6c 69 73 74 20 5c 0a 20 20 20 20 5b 6c 69 73  [list \.    [lis
1ed0: 74 20 5b 65 78 70 72 20 7b 24 70 61 64 78 2b 31  t [expr {$padx+1
1ee0: 39 2a 24 66 69 78 65 64 57 69 64 74 68 7d 5d 20  9*$fixedWidth}] 
1ef0: 24 70 61 64 79 20 24 66 69 78 65 64 57 69 64 74  $pady $fixedWidt
1f00: 68 20 24 66 69 78 65 64 48 65 69 67 68 74 5d 20  h $fixedHeight] 
1f10: 5c 0a 20 20 20 20 5b 6c 69 73 74 20 24 70 61 64  \.    [list $pad
1f20: 78 20 5b 65 78 70 72 20 7b 24 70 61 64 79 2b 24  x [expr {$pady+$
1f30: 66 69 78 65 64 48 65 69 67 68 74 7d 5d 20 24 66  fixedHeight}] $f
1f40: 69 78 65 64 57 69 64 74 68 20 24 66 69 78 65 64  ixedWidth $fixed
1f50: 48 65 69 67 68 74 5d 5d 0a 0a 74 65 73 74 20 74  Height]]..test t
1f60: 65 78 74 44 69 73 70 2d 32 2e 34 20 7b 4c 61 79  extDisp-2.4 {Lay
1f70: 6f 75 74 44 4c 69 6e 65 2c 20 77 6f 72 64 20 77  outDLine, word w
1f80: 72 61 70 7d 20 7b 0a 20 20 20 20 2e 74 20 63 6f  rap} {.    .t co
1f90: 6e 66 69 67 75 72 65 20 2d 77 72 61 70 20 77 6f  nfigure -wrap wo
1fa0: 72 64 0a 20 20 20 20 2e 74 20 64 65 6c 65 74 65  rd.    .t delete
1fb0: 20 31 2e 30 20 65 6e 64 0a 20 20 20 20 2e 74 20   1.0 end.    .t 
1fc0: 69 6e 73 65 72 74 20 31 2e 30 20 22 54 68 69 73  insert 1.0 "This
1fd0: 20 69 73 20 73 6f 6d 65 20 73 61 6d 70 6c 65 20   is some sample 
1fe0: 74 65 78 74 20 66 6f 72 20 74 65 73 74 69 6e 67  text for testing
1ff0: 2e 22 0a 20 20 20 20 6c 69 73 74 20 5b 2e 74 20  .".    list [.t 
2000: 62 62 6f 78 20 31 2e 31 39 5d 20 5b 2e 74 20 62  bbox 1.19] [.t b
2010: 62 6f 78 20 31 2e 32 30 5d 0a 7d 20 5b 6c 69 73  box 1.20].} [lis
2020: 74 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20 5b 65  t \.    [list [e
2030: 78 70 72 20 7b 24 70 61 64 78 2b 31 39 2a 24 66  xpr {$padx+19*$f
2040: 69 78 65 64 57 69 64 74 68 7d 5d 20 24 70 61 64  ixedWidth}] $pad
2050: 79 20 24 66 69 78 65 64 57 69 64 74 68 20 24 66  y $fixedWidth $f
2060: 69 78 65 64 48 65 69 67 68 74 5d 20 5c 0a 20 20  ixedHeight] \.  
2070: 20 20 5b 6c 69 73 74 20 24 70 61 64 78 20 5b 65    [list $padx [e
2080: 78 70 72 20 7b 24 70 61 64 79 2b 24 66 69 78 65  xpr {$pady+$fixe
2090: 64 48 65 69 67 68 74 7d 5d 20 24 66 69 78 65 64  dHeight}] $fixed
20a0: 57 69 64 74 68 20 24 66 69 78 65 64 48 65 69 67  Width $fixedHeig
20b0: 68 74 5d 5d 0a 0a 74 65 73 74 20 74 65 78 74 44  ht]]..test textD
20c0: 69 73 70 2d 32 2e 35 20 7b 4c 61 79 6f 75 74 44  isp-2.5 {LayoutD
20d0: 4c 69 6e 65 2c 20 77 6f 72 64 20 77 72 61 70 7d  Line, word wrap}
20e0: 20 7b 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69 67   {.    .t config
20f0: 75 72 65 20 2d 77 72 61 70 20 77 6f 72 64 0a 20  ure -wrap word. 
2100: 20 20 20 2e 74 20 64 65 6c 65 74 65 20 31 2e 30     .t delete 1.0
2110: 20 65 6e 64 0a 20 20 20 20 2e 74 20 69 6e 73 65   end.    .t inse
2120: 72 74 20 31 2e 30 20 22 54 68 69 73 20 69 73 78  rt 1.0 "This isx
2130: 20 73 6f 6d 65 20 73 61 6d 70 6c 65 20 74 65 78   some sample tex
2140: 74 20 66 6f 72 20 74 65 73 74 69 6e 67 2e 22 0a  t for testing.".
2150: 20 20 20 20 6c 69 73 74 20 5b 2e 74 20 62 62 6f      list [.t bbo
2160: 78 20 31 2e 31 33 5d 20 5b 2e 74 20 62 62 6f 78  x 1.13] [.t bbox
2170: 20 31 2e 31 39 5d 20 5b 2e 74 20 62 62 6f 78 20   1.19] [.t bbox 
2180: 31 2e 32 30 5d 20 5b 2e 74 20 62 62 6f 78 20 31  1.20] [.t bbox 1
2190: 2e 32 31 5d 0a 7d 20 5b 6c 69 73 74 20 5c 0a 20  .21].} [list \. 
21a0: 20 20 20 5b 6c 69 73 74 20 5b 65 78 70 72 20 7b     [list [expr {
21b0: 24 70 61 64 78 2b 31 33 2a 24 66 69 78 65 64 57  $padx+13*$fixedW
21c0: 69 64 74 68 7d 5d 20 24 70 61 64 79 20 24 66 69  idth}] $pady $fi
21d0: 78 65 64 57 69 64 74 68 20 24 66 69 78 65 64 48  xedWidth $fixedH
21e0: 65 69 67 68 74 5d 20 5c 0a 20 20 20 20 5b 6c 69  eight] \.    [li
21f0: 73 74 20 5b 65 78 70 72 20 7b 24 70 61 64 78 2b  st [expr {$padx+
2200: 31 39 2a 24 66 69 78 65 64 57 69 64 74 68 7d 5d  19*$fixedWidth}]
2210: 20 24 70 61 64 79 20 24 66 69 78 65 64 57 69 64   $pady $fixedWid
2220: 74 68 20 24 66 69 78 65 64 48 65 69 67 68 74 5d  th $fixedHeight]
2230: 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20 5b 65 78   \.    [list [ex
2240: 70 72 20 7b 24 70 61 64 78 2b 32 30 2a 24 66 69  pr {$padx+20*$fi
2250: 78 65 64 57 69 64 74 68 7d 5d 20 24 70 61 64 79  xedWidth}] $pady
2260: 20 30 20 24 66 69 78 65 64 48 65 69 67 68 74 5d   0 $fixedHeight]
2270: 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20 24 70 61   \.    [list $pa
2280: 64 78 20 5b 65 78 70 72 20 7b 24 70 61 64 79 2b  dx [expr {$pady+
2290: 24 66 69 78 65 64 48 65 69 67 68 74 7d 5d 20 24  $fixedHeight}] $
22a0: 66 69 78 65 64 57 69 64 74 68 20 24 66 69 78 65  fixedWidth $fixe
22b0: 64 48 65 69 67 68 74 5d 5d 0a 0a 74 65 73 74 20  dHeight]]..test 
22c0: 74 65 78 74 44 69 73 70 2d 32 2e 36 20 7b 4c 61  textDisp-2.6 {La
22d0: 79 6f 75 74 44 4c 69 6e 65 2c 20 77 6f 72 64 20  youtDLine, word 
22e0: 77 72 61 70 7d 20 7b 0a 20 20 20 20 2e 74 20 63  wrap} {.    .t c
22f0: 6f 6e 66 69 67 75 72 65 20 2d 77 72 61 70 20 77  onfigure -wrap w
2300: 6f 72 64 0a 20 20 20 20 2e 74 20 64 65 6c 65 74  ord.    .t delet
2310: 65 20 31 2e 30 20 65 6e 64 0a 20 20 20 20 2e 74  e 1.0 end.    .t
2320: 20 69 6e 73 65 72 74 20 31 2e 30 20 22 54 68 69   insert 1.0 "Thi
2330: 73 20 69 73 78 78 78 20 73 6f 6d 65 20 73 61 6d  s isxxx some sam
2340: 70 6c 65 20 74 65 78 74 20 66 6f 72 20 74 65 73  ple text for tes
2350: 74 69 6e 67 2e 22 0a 20 20 20 20 6c 69 73 74 20  ting.".    list 
2360: 5b 2e 74 20 62 62 6f 78 20 31 2e 31 35 5d 20 5b  [.t bbox 1.15] [
2370: 2e 74 20 62 62 6f 78 20 31 2e 31 36 5d 0a 7d 20  .t bbox 1.16].} 
2380: 5b 6c 69 73 74 20 5c 0a 20 20 20 20 5b 6c 69 73  [list \.    [lis
2390: 74 20 5b 65 78 70 72 20 7b 24 70 61 64 78 2b 31  t [expr {$padx+1
23a0: 35 2a 24 66 69 78 65 64 57 69 64 74 68 7d 5d 20  5*$fixedWidth}] 
23b0: 24 70 61 64 79 20 5b 65 78 70 72 20 7b 35 2a 24  $pady [expr {5*$
23c0: 66 69 78 65 64 57 69 64 74 68 7d 5d 20 24 66 69  fixedWidth}] $fi
23d0: 78 65 64 48 65 69 67 68 74 5d 20 5c 0a 20 20 20  xedHeight] \.   
23e0: 20 5b 6c 69 73 74 20 24 70 61 64 78 20 5b 65 78   [list $padx [ex
23f0: 70 72 20 7b 24 70 61 64 79 2b 24 66 69 78 65 64  pr {$pady+$fixed
2400: 48 65 69 67 68 74 7d 5d 20 24 66 69 78 65 64 57  Height}] $fixedW
2410: 69 64 74 68 20 24 66 69 78 65 64 48 65 69 67 68  idth $fixedHeigh
2420: 74 5d 5d 0a 0a 74 65 73 74 20 74 65 78 74 44 69  t]]..test textDi
2430: 73 70 2d 32 2e 37 20 7b 4c 61 79 6f 75 74 44 4c  sp-2.7 {LayoutDL
2440: 69 6e 65 2c 20 6d 61 72 6b 73 20 61 6e 64 20 74  ine, marks and t
2450: 61 67 73 7d 20 7b 0a 20 20 20 20 2e 74 20 63 6f  ags} {.    .t co
2460: 6e 66 69 67 75 72 65 20 2d 77 72 61 70 20 77 6f  nfigure -wrap wo
2470: 72 64 0a 20 20 20 20 2e 74 20 64 65 6c 65 74 65  rd.    .t delete
2480: 20 31 2e 30 20 65 6e 64 0a 20 20 20 20 2e 74 20   1.0 end.    .t 
2490: 69 6e 73 65 72 74 20 31 2e 30 20 22 54 68 69 73  insert 1.0 "This
24a0: 20 69 73 78 78 78 20 73 6f 6d 65 20 73 61 6d 70   isxxx some samp
24b0: 6c 65 20 74 65 78 74 20 66 6f 72 20 74 65 73 74  le text for test
24c0: 69 6e 67 2e 22 0a 20 20 20 20 2e 74 20 74 61 67  ing.".    .t tag
24d0: 20 61 64 64 20 66 6f 6f 20 31 2e 34 20 31 2e 36   add foo 1.4 1.6
24e0: 0a 20 20 20 20 2e 74 20 6d 61 72 6b 20 73 65 74  .    .t mark set
24f0: 20 69 6e 73 65 72 74 20 31 2e 38 0a 20 20 20 20   insert 1.8.    
2500: 6c 69 73 74 20 5b 2e 74 20 62 62 6f 78 20 31 2e  list [.t bbox 1.
2510: 32 5d 20 5b 2e 74 20 62 62 6f 78 20 31 2e 35 5d  2] [.t bbox 1.5]
2520: 20 5b 2e 74 20 62 62 6f 78 20 31 2e 31 31 5d 0a   [.t bbox 1.11].
2530: 7d 20 5b 6c 69 73 74 20 5c 0a 20 20 20 20 5b 6c  } [list \.    [l
2540: 69 73 74 20 5b 65 78 70 72 20 7b 24 70 61 64 78  ist [expr {$padx
2550: 2b 32 2a 24 66 69 78 65 64 57 69 64 74 68 7d 5d  +2*$fixedWidth}]
2560: 20 24 70 61 64 79 20 24 66 69 78 65 64 57 69 64   $pady $fixedWid
2570: 74 68 20 24 66 69 78 65 64 48 65 69 67 68 74 5d  th $fixedHeight]
2580: 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20 5b 65 78   \.    [list [ex
2590: 70 72 20 7b 24 70 61 64 78 2b 35 2a 24 66 69 78  pr {$padx+5*$fix
25a0: 65 64 57 69 64 74 68 7d 5d 20 24 70 61 64 79 20  edWidth}] $pady 
25b0: 24 66 69 78 65 64 57 69 64 74 68 20 24 66 69 78  $fixedWidth $fix
25c0: 65 64 48 65 69 67 68 74 5d 20 5c 0a 20 20 20 20  edHeight] \.    
25d0: 5b 6c 69 73 74 20 5b 65 78 70 72 20 7b 24 70 61  [list [expr {$pa
25e0: 64 78 2b 31 31 2a 24 66 69 78 65 64 57 69 64 74  dx+11*$fixedWidt
25f0: 68 7d 5d 20 24 70 61 64 79 20 24 66 69 78 65 64  h}] $pady $fixed
2600: 57 69 64 74 68 20 24 66 69 78 65 64 48 65 69 67  Width $fixedHeig
2610: 68 74 5d 5d 0a 66 6f 72 65 61 63 68 20 6d 20 5b  ht]].foreach m [
2620: 2e 74 20 6d 61 72 6b 20 6e 61 6d 65 73 5d 20 7b  .t mark names] {
2630: 0a 20 20 20 20 63 61 74 63 68 20 7b 2e 74 20 6d  .    catch {.t m
2640: 61 72 6b 20 75 6e 73 65 74 20 24 6d 7d 0a 7d 0a  ark unset $m}.}.
2650: 73 63 61 6e 20 5b 77 6d 20 67 65 6f 6d 20 2e 5d  scan [wm geom .]
2660: 20 25 64 78 25 64 20 77 69 64 74 68 20 68 65 69   %dx%d width hei
2670: 67 68 74 0a 0a 74 65 73 74 20 74 65 78 74 44 69  ght..test textDi
2680: 73 70 2d 32 2e 38 20 7b 4c 61 79 6f 75 74 44 4c  sp-2.8 {LayoutDL
2690: 69 6e 65 2c 20 65 78 74 72 61 20 63 68 75 6e 6b  ine, extra chunk
26a0: 20 61 74 20 65 6e 64 20 6f 66 20 64 6c 69 6e 65   at end of dline
26b0: 7d 20 7b 0a 20 20 20 20 77 6d 20 67 65 6f 6d 20  } {.    wm geom 
26c0: 2e 20 5b 65 78 70 72 20 24 77 69 64 74 68 2b 31  . [expr $width+1
26d0: 5d 78 24 68 65 69 67 68 74 0a 20 20 20 20 75 70  ]x$height.    up
26e0: 64 61 74 65 0a 20 20 20 20 2e 74 20 63 6f 6e 66  date.    .t conf
26f0: 69 67 75 72 65 20 2d 77 72 61 70 20 63 68 61 72  igure -wrap char
2700: 0a 20 20 20 20 2e 74 20 64 65 6c 65 74 65 20 31  .    .t delete 1
2710: 2e 30 20 65 6e 64 0a 20 20 20 20 2e 74 20 69 6e  .0 end.    .t in
2720: 73 65 72 74 20 31 2e 30 20 22 54 68 69 73 20 69  sert 1.0 "This i
2730: 73 78 78 20 73 6f 6d 65 20 73 61 6d 70 6c 65 20  sxx some sample 
2740: 74 65 78 74 20 66 6f 72 20 74 65 73 74 69 6e 67  text for testing
2750: 2e 22 0a 20 20 20 20 2e 74 20 6d 61 72 6b 20 73  .".    .t mark s
2760: 65 74 20 66 6f 6f 20 31 2e 32 30 0a 20 20 20 20  et foo 1.20.    
2770: 6c 69 73 74 20 5b 2e 74 20 62 62 6f 78 20 31 2e  list [.t bbox 1.
2780: 31 39 5d 20 5b 2e 74 20 62 62 6f 78 20 31 2e 32  19] [.t bbox 1.2
2790: 30 5d 0a 7d 20 5b 6c 69 73 74 20 5c 0a 20 20 20  0].} [list \.   
27a0: 20 5b 6c 69 73 74 20 5b 65 78 70 72 20 7b 24 70   [list [expr {$p
27b0: 61 64 78 2b 31 39 2a 24 66 69 78 65 64 57 69 64  adx+19*$fixedWid
27c0: 74 68 7d 5d 20 24 70 61 64 79 20 5b 65 78 70 72  th}] $pady [expr
27d0: 20 7b 24 66 69 78 65 64 57 69 64 74 68 2b 31 7d   {$fixedWidth+1}
27e0: 5d 20 24 66 69 78 65 64 48 65 69 67 68 74 5d 20  ] $fixedHeight] 
27f0: 5c 0a 20 20 20 20 5b 6c 69 73 74 20 24 70 61 64  \.    [list $pad
2800: 78 20 5b 65 78 70 72 20 7b 24 70 61 64 79 2b 24  x [expr {$pady+$
2810: 66 69 78 65 64 48 65 69 67 68 74 7d 5d 20 24 66  fixedHeight}] $f
2820: 69 78 65 64 57 69 64 74 68 20 24 66 69 78 65 64  ixedWidth $fixed
2830: 48 65 69 67 68 74 5d 5d 0a 77 6d 20 67 65 6f 6d  Height]].wm geom
2840: 20 2e 20 7b 7d 0a 75 70 64 61 74 65 0a 0a 74 65   . {}.update..te
2850: 73 74 20 74 65 78 74 44 69 73 70 2d 32 2e 39 20  st textDisp-2.9 
2860: 7b 4c 61 79 6f 75 74 44 4c 69 6e 65 2c 20 6d 61  {LayoutDLine, ma
2870: 72 6b 73 20 61 6e 64 20 74 61 67 73 7d 20 7b 0a  rks and tags} {.
2880: 20 20 20 20 2e 74 20 63 6f 6e 66 69 67 75 72 65      .t configure
2890: 20 2d 77 72 61 70 20 77 6f 72 64 0a 20 20 20 20   -wrap word.    
28a0: 2e 74 20 64 65 6c 65 74 65 20 31 2e 30 20 65 6e  .t delete 1.0 en
28b0: 64 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20  d.    .t insert 
28c0: 31 2e 30 20 22 54 68 69 73 20 69 73 20 61 20 76  1.0 "This is a v
28d0: 65 72 79 5f 76 65 72 79 5f 6c 6f 6e 67 5f 77 6f  ery_very_long_wo
28e0: 72 64 5f 74 68 61 74 5f 77 72 61 70 73 2e 22 0a  rd_that_wraps.".
28f0: 20 20 20 20 6c 69 73 74 20 5b 2e 74 20 62 62 6f      list [.t bbo
2900: 78 20 31 2e 39 5d 20 5b 2e 74 20 62 62 6f 78 20  x 1.9] [.t bbox 
2910: 31 2e 31 30 5d 20 5b 2e 74 20 62 62 6f 78 20 31  1.10] [.t bbox 1
2920: 2e 32 35 5d 0a 7d 20 5b 6c 69 73 74 20 5c 0a 20  .25].} [list \. 
2930: 20 20 20 5b 6c 69 73 74 20 5b 65 78 70 72 20 7b     [list [expr {
2940: 24 70 61 64 78 2b 39 2a 24 66 69 78 65 64 57 69  $padx+9*$fixedWi
2950: 64 74 68 7d 5d 20 24 70 61 64 79 20 5b 65 78 70  dth}] $pady [exp
2960: 72 20 7b 31 31 2a 24 66 69 78 65 64 57 69 64 74  r {11*$fixedWidt
2970: 68 7d 5d 20 24 66 69 78 65 64 48 65 69 67 68 74  h}] $fixedHeight
2980: 5d 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20 24 70  ] \.    [list $p
2990: 61 64 78 20 5b 65 78 70 72 20 7b 24 70 61 64 79  adx [expr {$pady
29a0: 2b 24 66 69 78 65 64 48 65 69 67 68 74 7d 5d 20  +$fixedHeight}] 
29b0: 24 66 69 78 65 64 57 69 64 74 68 20 24 66 69 78  $fixedWidth $fix
29c0: 65 64 48 65 69 67 68 74 5d 20 5c 0a 20 20 20 20  edHeight] \.    
29d0: 5b 6c 69 73 74 20 5b 65 78 70 72 20 7b 24 70 61  [list [expr {$pa
29e0: 64 78 2b 31 35 2a 24 66 69 78 65 64 57 69 64 74  dx+15*$fixedWidt
29f0: 68 7d 5d 20 5b 65 78 70 72 20 7b 24 70 61 64 79  h}] [expr {$pady
2a00: 2b 24 66 69 78 65 64 48 65 69 67 68 74 7d 5d 20  +$fixedHeight}] 
2a10: 24 66 69 78 65 64 57 69 64 74 68 20 24 66 69 78  $fixedWidth $fix
2a20: 65 64 48 65 69 67 68 74 5d 5d 0a 0a 74 65 73 74  edHeight]]..test
2a30: 20 74 65 78 74 44 69 73 70 2d 32 2e 31 30 20 7b   textDisp-2.10 {
2a40: 4c 61 79 6f 75 74 44 4c 69 6e 65 2c 20 6d 61 72  LayoutDLine, mar
2a50: 6b 73 20 61 6e 64 20 74 61 67 73 7d 20 7b 0a 20  ks and tags} {. 
2a60: 20 20 20 2e 74 20 63 6f 6e 66 69 67 75 72 65 20     .t configure 
2a70: 2d 77 72 61 70 20 77 6f 72 64 0a 20 20 20 20 2e  -wrap word.    .
2a80: 74 20 64 65 6c 65 74 65 20 31 2e 30 20 65 6e 64  t delete 1.0 end
2a90: 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20 31  .    .t insert 1
2aa0: 2e 30 20 22 54 68 69 73 20 69 73 20 61 20 76 65  .0 "This is a ve
2ab0: 72 79 5f 76 65 72 79 5f 6c 6f 6e 67 5f 77 6f 72  ry_very_long_wor
2ac0: 64 5f 74 68 61 74 5f 77 72 61 70 73 2e 22 0a 20  d_that_wraps.". 
2ad0: 20 20 20 2e 74 20 74 61 67 20 61 64 64 20 66 6f     .t tag add fo
2ae0: 6f 20 31 2e 31 33 0a 20 20 20 20 2e 74 20 74 61  o 1.13.    .t ta
2af0: 67 20 61 64 64 20 66 6f 6f 20 31 2e 31 35 0a 20  g add foo 1.15. 
2b00: 20 20 20 2e 74 20 74 61 67 20 61 64 64 20 66 6f     .t tag add fo
2b10: 6f 20 31 2e 31 37 0a 20 20 20 20 2e 74 20 74 61  o 1.17.    .t ta
2b20: 67 20 61 64 64 20 66 6f 6f 20 31 2e 31 39 0a 20  g add foo 1.19. 
2b30: 20 20 20 6c 69 73 74 20 5b 2e 74 20 62 62 6f 78     list [.t bbox
2b40: 20 31 2e 39 5d 20 5b 2e 74 20 62 62 6f 78 20 31   1.9] [.t bbox 1
2b50: 2e 31 30 5d 20 5b 2e 74 20 62 62 6f 78 20 31 2e  .10] [.t bbox 1.
2b60: 32 35 5d 0a 7d 20 5b 6c 69 73 74 20 5c 0a 20 20  25].} [list \.  
2b70: 20 20 5b 6c 69 73 74 20 5b 65 78 70 72 20 7b 24    [list [expr {$
2b80: 70 61 64 78 2b 39 2a 24 66 69 78 65 64 57 69 64  padx+9*$fixedWid
2b90: 74 68 7d 5d 20 24 70 61 64 79 20 5b 65 78 70 72  th}] $pady [expr
2ba0: 20 7b 31 31 2a 24 66 69 78 65 64 57 69 64 74 68   {11*$fixedWidth
2bb0: 7d 5d 20 24 66 69 78 65 64 48 65 69 67 68 74 5d  }] $fixedHeight]
2bc0: 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20 24 70 61   \.    [list $pa
2bd0: 64 78 20 5b 65 78 70 72 20 7b 24 70 61 64 79 2b  dx [expr {$pady+
2be0: 24 66 69 78 65 64 48 65 69 67 68 74 7d 5d 20 24  $fixedHeight}] $
2bf0: 66 69 78 65 64 57 69 64 74 68 20 24 66 69 78 65  fixedWidth $fixe
2c00: 64 48 65 69 67 68 74 5d 20 5c 0a 20 20 20 20 5b  dHeight] \.    [
2c10: 6c 69 73 74 20 5b 65 78 70 72 20 7b 24 70 61 64  list [expr {$pad
2c20: 78 2b 31 35 2a 24 66 69 78 65 64 57 69 64 74 68  x+15*$fixedWidth
2c30: 7d 5d 20 5b 65 78 70 72 20 7b 24 70 61 64 79 2b  }] [expr {$pady+
2c40: 24 66 69 78 65 64 48 65 69 67 68 74 7d 5d 20 24  $fixedHeight}] $
2c50: 66 69 78 65 64 57 69 64 74 68 20 24 66 69 78 65  fixedWidth $fixe
2c60: 64 48 65 69 67 68 74 5d 5d 0a 0a 74 65 73 74 20  dHeight]]..test 
2c70: 74 65 78 74 44 69 73 70 2d 32 2e 31 31 20 7b 4c  textDisp-2.11 {L
2c80: 61 79 6f 75 74 44 4c 69 6e 65 2c 20 6e 65 77 6c  ayoutDLine, newl
2c90: 69 6e 65 20 77 69 64 74 68 7d 20 7b 0a 20 20 20  ine width} {.   
2ca0: 20 2e 74 20 63 6f 6e 66 69 67 75 72 65 20 2d 77   .t configure -w
2cb0: 72 61 70 20 63 68 61 72 0a 20 20 20 20 2e 74 20  rap char.    .t 
2cc0: 64 65 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a 20  delete 1.0 end. 
2cd0: 20 20 20 2e 74 20 69 6e 73 65 72 74 20 31 2e 30     .t insert 1.0
2ce0: 20 22 61 5c 6e 62 62 5c 6e 63 63 63 5c 6e 64 64   "a\nbb\nccc\ndd
2cf0: 64 64 22 0a 20 20 20 20 6c 69 73 74 20 5b 2e 74  dd".    list [.t
2d00: 20 62 62 6f 78 20 32 2e 32 5d 20 5b 2e 74 20 62   bbox 2.2] [.t b
2d10: 62 6f 78 20 33 2e 33 5d 0a 7d 20 5b 6c 69 73 74  box 3.3].} [list
2d20: 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20 5b 65 78   \.    [list [ex
2d30: 70 72 20 7b 24 70 61 64 78 2b 32 2a 24 66 69 78  pr {$padx+2*$fix
2d40: 65 64 57 69 64 74 68 7d 5d 20 5b 65 78 70 72 20  edWidth}] [expr 
2d50: 7b 24 70 61 64 79 2b 24 66 69 78 65 64 48 65 69  {$pady+$fixedHei
2d60: 67 68 74 7d 5d 20 5b 65 78 70 72 20 7b 31 38 2a  ght}] [expr {18*
2d70: 24 66 69 78 65 64 57 69 64 74 68 7d 5d 20 24 66  $fixedWidth}] $f
2d80: 69 78 65 64 48 65 69 67 68 74 5d 20 5c 0a 20 20  ixedHeight] \.  
2d90: 20 20 5b 6c 69 73 74 20 5b 65 78 70 72 20 7b 24    [list [expr {$
2da0: 70 61 64 78 2b 33 2a 24 66 69 78 65 64 57 69 64  padx+3*$fixedWid
2db0: 74 68 7d 5d 20 5b 65 78 70 72 20 7b 24 70 61 64  th}] [expr {$pad
2dc0: 79 2b 32 2a 24 66 69 78 65 64 48 65 69 67 68 74  y+2*$fixedHeight
2dd0: 7d 5d 20 5b 65 78 70 72 20 7b 31 37 2a 24 66 69  }] [expr {17*$fi
2de0: 78 65 64 57 69 64 74 68 7d 5d 20 24 66 69 78 65  xedWidth}] $fixe
2df0: 64 48 65 69 67 68 74 5d 5d 0a 0a 74 65 73 74 20  dHeight]]..test 
2e00: 74 65 78 74 44 69 73 70 2d 32 2e 31 32 20 7b 4c  textDisp-2.12 {L
2e10: 61 79 6f 75 74 44 4c 69 6e 65 2c 20 6a 75 73 74  ayoutDLine, just
2e20: 69 66 69 63 61 74 69 6f 6e 7d 20 7b 0a 20 20 20  ification} {.   
2e30: 20 2e 74 20 63 6f 6e 66 69 67 75 72 65 20 2d 77   .t configure -w
2e40: 72 61 70 20 63 68 61 72 0a 20 20 20 20 2e 74 20  rap char.    .t 
2e50: 64 65 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a 20  delete 1.0 end. 
2e60: 20 20 20 2e 74 20 69 6e 73 65 72 74 20 31 2e 30     .t insert 1.0
2e70: 20 22 5c 6e 61 5c 6e 62 62 5c 6e 63 63 63 5c 6e   "\na\nbb\nccc\n
2e80: 64 64 64 64 22 0a 20 20 20 20 2e 74 20 74 61 67  dddd".    .t tag
2e90: 20 63 6f 6e 66 69 67 75 72 65 20 78 20 2d 6a 75   configure x -ju
2ea0: 73 74 69 66 79 20 63 65 6e 74 65 72 0a 20 20 20  stify center.   
2eb0: 20 2e 74 20 74 61 67 20 61 64 64 20 78 20 31 2e   .t tag add x 1.
2ec0: 30 20 65 6e 64 0a 20 20 20 20 2e 74 20 74 61 67  0 end.    .t tag
2ed0: 20 61 64 64 20 79 20 33 2e 30 20 33 2e 32 0a 20   add y 3.0 3.2. 
2ee0: 20 20 20 6c 69 73 74 20 5b 2e 74 20 62 62 6f 78     list [.t bbox
2ef0: 20 31 2e 30 5d 20 5b 2e 74 20 62 62 6f 78 20 32   1.0] [.t bbox 2
2f00: 2e 30 5d 20 5b 2e 74 20 62 62 6f 78 20 34 2e 30  .0] [.t bbox 4.0
2f10: 5d 20 5b 2e 74 20 62 62 6f 78 20 34 2e 32 5d 0a  ] [.t bbox 4.2].
2f20: 7d 20 5b 6c 69 73 74 20 5c 0a 20 20 20 20 5b 6c  } [list \.    [l
2f30: 69 73 74 20 5b 65 78 70 72 20 7b 24 70 61 64 78  ist [expr {$padx
2f40: 2b 72 6f 75 6e 64 28 28 28 32 30 2e 30 29 2a 24  +round(((20.0)*$
2f50: 66 69 78 65 64 57 69 64 74 68 29 2f 32 2e 30 29  fixedWidth)/2.0)
2f60: 7d 5d 20 24 70 61 64 79 20 5b 65 78 70 72 20 7b  }] $pady [expr {
2f70: 31 30 2a 24 66 69 78 65 64 57 69 64 74 68 7d 5d  10*$fixedWidth}]
2f80: 20 24 66 69 78 65 64 48 65 69 67 68 74 5d 20 5c   $fixedHeight] \
2f90: 0a 20 20 20 20 5b 6c 69 73 74 20 5b 65 78 70 72  .    [list [expr
2fa0: 20 7b 24 70 61 64 78 2b 72 6f 75 6e 64 28 28 28   {$padx+round(((
2fb0: 32 30 2e 30 2d 31 2e 30 29 2a 24 66 69 78 65 64  20.0-1.0)*$fixed
2fc0: 57 69 64 74 68 29 2f 32 2e 30 29 2d 31 7d 5d 20  Width)/2.0)-1}] 
2fd0: 5b 65 78 70 72 20 7b 24 70 61 64 79 2b 24 66 69  [expr {$pady+$fi
2fe0: 78 65 64 48 65 69 67 68 74 7d 5d 20 24 66 69 78  xedHeight}] $fix
2ff0: 65 64 57 69 64 74 68 20 24 66 69 78 65 64 48 65  edWidth $fixedHe
3000: 69 67 68 74 5d 20 5c 0a 20 20 20 20 5b 6c 69 73  ight] \.    [lis
3010: 74 20 5b 65 78 70 72 20 7b 24 70 61 64 78 2b 72  t [expr {$padx+r
3020: 6f 75 6e 64 28 28 28 32 30 2e 30 2d 33 2e 30 29  ound(((20.0-3.0)
3030: 2a 24 66 69 78 65 64 57 69 64 74 68 29 2f 32 2e  *$fixedWidth)/2.
3040: 30 29 2d 31 7d 5d 20 5b 65 78 70 72 20 7b 24 70  0)-1}] [expr {$p
3050: 61 64 79 2b 33 2a 24 66 69 78 65 64 48 65 69 67  ady+3*$fixedHeig
3060: 68 74 7d 5d 20 24 66 69 78 65 64 57 69 64 74 68  ht}] $fixedWidth
3070: 20 24 66 69 78 65 64 48 65 69 67 68 74 5d 20 5c   $fixedHeight] \
3080: 0a 20 20 20 20 5b 6c 69 73 74 20 5b 65 78 70 72  .    [list [expr
3090: 20 7b 24 70 61 64 78 2b 72 6f 75 6e 64 28 28 28   {$padx+round(((
30a0: 32 30 2e 30 2d 33 2e 30 29 2a 24 66 69 78 65 64  20.0-3.0)*$fixed
30b0: 57 69 64 74 68 29 2f 32 2e 30 29 2b 32 2a 24 66  Width)/2.0)+2*$f
30c0: 69 78 65 64 57 69 64 74 68 2d 31 7d 5d 20 5b 65  ixedWidth-1}] [e
30d0: 78 70 72 20 7b 24 70 61 64 79 2b 33 2a 24 66 69  xpr {$pady+3*$fi
30e0: 78 65 64 48 65 69 67 68 74 7d 5d 20 24 66 69 78  xedHeight}] $fix
30f0: 65 64 57 69 64 74 68 20 24 66 69 78 65 64 48 65  edWidth $fixedHe
3100: 69 67 68 74 5d 5d 0a 0a 74 65 73 74 20 74 65 78  ight]]..test tex
3110: 74 44 69 73 70 2d 32 2e 31 33 20 7b 4c 61 79 6f  tDisp-2.13 {Layo
3120: 75 74 44 4c 69 6e 65 2c 20 6a 75 73 74 69 66 69  utDLine, justifi
3130: 63 61 74 69 6f 6e 7d 20 7b 0a 20 20 20 20 2e 74  cation} {.    .t
3140: 20 63 6f 6e 66 69 67 75 72 65 20 2d 77 72 61 70   configure -wrap
3150: 20 63 68 61 72 0a 20 20 20 20 2e 74 20 64 65 6c   char.    .t del
3160: 65 74 65 20 31 2e 30 20 65 6e 64 0a 20 20 20 20  ete 1.0 end.    
3170: 2e 74 20 69 6e 73 65 72 74 20 31 2e 30 20 22 5c  .t insert 1.0 "\
3180: 6e 61 5c 6e 62 62 5c 6e 63 63 63 5c 6e 64 64 64  na\nbb\nccc\nddd
3190: 64 22 0a 20 20 20 20 2e 74 20 74 61 67 20 63 6f  d".    .t tag co
31a0: 6e 66 69 67 75 72 65 20 78 20 2d 6a 75 73 74 69  nfigure x -justi
31b0: 66 79 20 72 69 67 68 74 0a 20 20 20 20 2e 74 20  fy right.    .t 
31c0: 74 61 67 20 61 64 64 20 78 20 31 2e 30 20 65 6e  tag add x 1.0 en
31d0: 64 0a 20 20 20 20 2e 74 20 74 61 67 20 61 64 64  d.    .t tag add
31e0: 20 79 20 33 2e 30 20 33 2e 32 0a 20 20 20 20 6c   y 3.0 3.2.    l
31f0: 69 73 74 20 5b 2e 74 20 62 62 6f 78 20 31 2e 30  ist [.t bbox 1.0
3200: 5d 20 5b 2e 74 20 62 62 6f 78 20 32 2e 30 5d 20  ] [.t bbox 2.0] 
3210: 5b 2e 74 20 62 62 6f 78 20 34 2e 30 5d 20 5b 2e  [.t bbox 4.0] [.
3220: 74 20 62 62 6f 78 20 34 2e 32 5d 0a 7d 20 5b 6c  t bbox 4.2].} [l
3230: 69 73 74 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20  ist \.    [list 
3240: 5b 65 78 70 72 20 7b 24 70 61 64 78 2b 32 30 2a  [expr {$padx+20*
3250: 24 66 69 78 65 64 57 69 64 74 68 7d 5d 20 24 70  $fixedWidth}] $p
3260: 61 64 79 20 30 20 24 66 69 78 65 64 48 65 69 67  ady 0 $fixedHeig
3270: 68 74 5d 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20  ht] \.    [list 
3280: 5b 65 78 70 72 20 7b 24 70 61 64 78 2b 31 39 2a  [expr {$padx+19*
3290: 24 66 69 78 65 64 57 69 64 74 68 7d 5d 20 5b 65  $fixedWidth}] [e
32a0: 78 70 72 20 7b 24 70 61 64 79 2b 24 66 69 78 65  xpr {$pady+$fixe
32b0: 64 48 65 69 67 68 74 7d 5d 20 24 66 69 78 65 64  dHeight}] $fixed
32c0: 57 69 64 74 68 20 24 66 69 78 65 64 48 65 69 67  Width $fixedHeig
32d0: 68 74 5d 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20  ht] \.    [list 
32e0: 5b 65 78 70 72 20 7b 24 70 61 64 78 2b 31 37 2a  [expr {$padx+17*
32f0: 24 66 69 78 65 64 57 69 64 74 68 7d 5d 20 5b 65  $fixedWidth}] [e
3300: 78 70 72 20 7b 24 70 61 64 79 2b 33 2a 24 66 69  xpr {$pady+3*$fi
3310: 78 65 64 48 65 69 67 68 74 7d 5d 20 24 66 69 78  xedHeight}] $fix
3320: 65 64 57 69 64 74 68 20 24 66 69 78 65 64 48 65  edWidth $fixedHe
3330: 69 67 68 74 5d 20 5c 0a 20 20 20 20 5b 6c 69 73  ight] \.    [lis
3340: 74 20 5b 65 78 70 72 20 7b 24 70 61 64 78 2b 31  t [expr {$padx+1
3350: 39 2a 24 66 69 78 65 64 57 69 64 74 68 7d 5d 20  9*$fixedWidth}] 
3360: 5b 65 78 70 72 20 7b 24 70 61 64 79 2b 33 2a 24  [expr {$pady+3*$
3370: 66 69 78 65 64 48 65 69 67 68 74 7d 5d 20 24 66  fixedHeight}] $f
3380: 69 78 65 64 57 69 64 74 68 20 24 66 69 78 65 64  ixedWidth $fixed
3390: 48 65 69 67 68 74 5d 5d 0a 0a 74 65 73 74 20 74  Height]]..test t
33a0: 65 78 74 44 69 73 70 2d 32 2e 31 34 20 7b 4c 61  extDisp-2.14 {La
33b0: 79 6f 75 74 44 4c 69 6e 65 2c 20 6a 75 73 74 69  youtDLine, justi
33c0: 66 69 63 61 74 69 6f 6e 7d 20 7b 0a 20 20 20 20  fication} {.    
33d0: 2e 74 20 63 6f 6e 66 69 67 75 72 65 20 2d 77 72  .t configure -wr
33e0: 61 70 20 63 68 61 72 0a 20 20 20 20 2e 74 20 64  ap char.    .t d
33f0: 65 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a 20 20  elete 1.0 end.  
3400: 20 20 2e 74 20 69 6e 73 65 72 74 20 31 2e 30 20    .t insert 1.0 
3410: 22 5c 6e 61 5c 6e 62 62 5c 6e 63 63 63 5c 6e 64  "\na\nbb\nccc\nd
3420: 64 64 64 22 0a 20 20 20 20 2e 74 20 74 61 67 20  ddd".    .t tag 
3430: 63 6f 6e 66 69 67 75 72 65 20 78 20 2d 6a 75 73  configure x -jus
3440: 74 69 66 79 20 63 65 6e 74 65 72 0a 20 20 20 20  tify center.    
3450: 2e 74 20 74 61 67 20 61 64 64 20 78 20 32 2e 30  .t tag add x 2.0
3460: 20 33 2e 31 0a 20 20 20 20 2e 74 20 74 61 67 20   3.1.    .t tag 
3470: 63 6f 6e 66 69 67 75 72 65 20 79 20 2d 6a 75 73  configure y -jus
3480: 74 69 66 79 20 72 69 67 68 74 0a 20 20 20 20 2e  tify right.    .
3490: 74 20 74 61 67 20 61 64 64 20 79 20 33 2e 30 20  t tag add y 3.0 
34a0: 34 2e 30 0a 20 20 20 20 2e 74 20 74 61 67 20 72  4.0.    .t tag r
34b0: 61 69 73 65 20 79 0a 20 20 20 20 6c 69 73 74 20  aise y.    list 
34c0: 5b 2e 74 20 62 62 6f 78 20 32 2e 30 5d 20 5b 2e  [.t bbox 2.0] [.
34d0: 74 20 62 62 6f 78 20 33 2e 30 5d 20 5b 2e 74 20  t bbox 3.0] [.t 
34e0: 62 62 6f 78 20 33 2e 65 6e 64 5d 20 5b 2e 74 20  bbox 3.end] [.t 
34f0: 62 62 6f 78 20 34 2e 30 5d 0a 7d 20 5b 6c 69 73  bbox 4.0].} [lis
3500: 74 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20 5b 65  t \.    [list [e
3510: 78 70 72 20 7b 24 70 61 64 78 2b 72 6f 75 6e 64  xpr {$padx+round
3520: 28 28 28 32 30 2e 30 2d 31 2e 30 29 2a 24 66 69  (((20.0-1.0)*$fi
3530: 78 65 64 57 69 64 74 68 29 2f 32 2e 30 29 2d 31  xedWidth)/2.0)-1
3540: 7d 5d 20 5b 65 78 70 72 20 7b 24 70 61 64 79 2b  }] [expr {$pady+
3550: 24 66 69 78 65 64 48 65 69 67 68 74 7d 5d 20 24  $fixedHeight}] $
3560: 66 69 78 65 64 57 69 64 74 68 20 24 66 69 78 65  fixedWidth $fixe
3570: 64 48 65 69 67 68 74 5d 20 5c 0a 20 20 20 20 5b  dHeight] \.    [
3580: 6c 69 73 74 20 5b 65 78 70 72 20 7b 24 70 61 64  list [expr {$pad
3590: 78 2b 31 38 2a 24 66 69 78 65 64 57 69 64 74 68  x+18*$fixedWidth
35a0: 7d 5d 20 5b 65 78 70 72 20 7b 24 70 61 64 79 2b  }] [expr {$pady+
35b0: 32 2a 24 66 69 78 65 64 48 65 69 67 68 74 7d 5d  2*$fixedHeight}]
35c0: 20 24 66 69 78 65 64 57 69 64 74 68 20 24 66 69   $fixedWidth $fi
35d0: 78 65 64 48 65 69 67 68 74 5d 20 5c 0a 20 20 20  xedHeight] \.   
35e0: 20 5b 6c 69 73 74 20 5b 65 78 70 72 20 7b 24 70   [list [expr {$p
35f0: 61 64 78 2b 32 30 2a 24 66 69 78 65 64 57 69 64  adx+20*$fixedWid
3600: 74 68 7d 5d 20 5b 65 78 70 72 20 7b 24 70 61 64  th}] [expr {$pad
3610: 79 2b 32 2a 24 66 69 78 65 64 48 65 69 67 68 74  y+2*$fixedHeight
3620: 7d 5d 20 30 20 24 66 69 78 65 64 48 65 69 67 68  }] 0 $fixedHeigh
3630: 74 5d 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20 24  t] \.    [list $
3640: 70 61 64 78 20 5b 65 78 70 72 20 7b 24 70 61 64  padx [expr {$pad
3650: 79 2b 33 2a 24 66 69 78 65 64 48 65 69 67 68 74  y+3*$fixedHeight
3660: 7d 5d 20 24 66 69 78 65 64 57 69 64 74 68 20 24  }] $fixedWidth $
3670: 66 69 78 65 64 48 65 69 67 68 74 5d 5d 0a 0a 74  fixedHeight]]..t
3680: 65 73 74 20 74 65 78 74 44 69 73 70 2d 32 2e 31  est textDisp-2.1
3690: 35 20 7b 4c 61 79 6f 75 74 44 4c 69 6e 65 2c 20  5 {LayoutDLine, 
36a0: 6a 75 73 74 69 66 69 63 61 74 69 6f 6e 7d 20 7b  justification} {
36b0: 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69 67 75 72  .    .t configur
36c0: 65 20 2d 77 72 61 70 20 63 68 61 72 0a 20 20 20  e -wrap char.   
36d0: 20 2e 74 20 64 65 6c 65 74 65 20 31 2e 30 20 65   .t delete 1.0 e
36e0: 6e 64 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74  nd.    .t insert
36f0: 20 31 2e 30 20 22 5c 6e 61 5c 6e 62 62 5c 6e 63   1.0 "\na\nbb\nc
3700: 63 63 5c 6e 64 64 64 64 22 0a 20 20 20 20 2e 74  cc\ndddd".    .t
3710: 20 74 61 67 20 63 6f 6e 66 69 67 75 72 65 20 78   tag configure x
3720: 20 2d 6a 75 73 74 69 66 79 20 63 65 6e 74 65 72   -justify center
3730: 0a 20 20 20 20 2e 74 20 74 61 67 20 61 64 64 20  .    .t tag add 
3740: 78 20 32 2e 30 20 33 2e 31 0a 20 20 20 20 2e 74  x 2.0 3.1.    .t
3750: 20 74 61 67 20 63 6f 6e 66 69 67 75 72 65 20 79   tag configure y
3760: 20 2d 6a 75 73 74 69 66 79 20 72 69 67 68 74 0a   -justify right.
3770: 20 20 20 20 2e 74 20 74 61 67 20 61 64 64 20 79      .t tag add y
3780: 20 33 2e 30 20 34 2e 30 0a 20 20 20 20 2e 74 20   3.0 4.0.    .t 
3790: 74 61 67 20 6c 6f 77 65 72 20 79 0a 20 20 20 20  tag lower y.    
37a0: 6c 69 73 74 20 5b 2e 74 20 62 62 6f 78 20 32 2e  list [.t bbox 2.
37b0: 30 5d 20 5b 2e 74 20 62 62 6f 78 20 33 2e 30 5d  0] [.t bbox 3.0]
37c0: 20 5b 2e 74 20 62 62 6f 78 20 33 2e 65 6e 64 5d   [.t bbox 3.end]
37d0: 20 5b 2e 74 20 62 62 6f 78 20 34 2e 30 5d 0a 7d   [.t bbox 4.0].}
37e0: 20 5b 6c 69 73 74 20 5c 0a 20 20 20 20 5b 6c 69   [list \.    [li
37f0: 73 74 20 5b 65 78 70 72 20 7b 24 70 61 64 78 2b  st [expr {$padx+
3800: 72 6f 75 6e 64 28 28 28 32 30 2e 30 2d 31 2e 30  round(((20.0-1.0
3810: 29 2a 24 66 69 78 65 64 57 69 64 74 68 29 2f 32  )*$fixedWidth)/2
3820: 2e 30 29 2d 31 7d 5d 20 5b 65 78 70 72 20 7b 24  .0)-1}] [expr {$
3830: 70 61 64 79 2b 24 66 69 78 65 64 48 65 69 67 68  pady+$fixedHeigh
3840: 74 7d 5d 20 24 66 69 78 65 64 57 69 64 74 68 20  t}] $fixedWidth 
3850: 24 66 69 78 65 64 48 65 69 67 68 74 5d 20 5c 0a  $fixedHeight] \.
3860: 20 20 20 20 5b 6c 69 73 74 20 5b 65 78 70 72 20      [list [expr 
3870: 7b 24 70 61 64 78 2b 72 6f 75 6e 64 28 28 28 32  {$padx+round(((2
3880: 30 2e 30 2d 32 2e 30 29 2a 24 66 69 78 65 64 57  0.0-2.0)*$fixedW
3890: 69 64 74 68 29 2f 32 2e 30 29 7d 5d 20 5b 65 78  idth)/2.0)}] [ex
38a0: 70 72 20 7b 24 70 61 64 79 2b 32 2a 24 66 69 78  pr {$pady+2*$fix
38b0: 65 64 48 65 69 67 68 74 7d 5d 20 24 66 69 78 65  edHeight}] $fixe
38c0: 64 57 69 64 74 68 20 24 66 69 78 65 64 48 65 69  dWidth $fixedHei
38d0: 67 68 74 5d 20 5c 0a 20 20 20 20 5b 6c 69 73 74  ght] \.    [list
38e0: 20 5b 65 78 70 72 20 7b 24 70 61 64 78 2b 72 6f   [expr {$padx+ro
38f0: 75 6e 64 28 28 28 32 30 2e 30 2d 32 2e 30 29 2a  und(((20.0-2.0)*
3900: 24 66 69 78 65 64 57 69 64 74 68 29 2f 32 2e 30  $fixedWidth)/2.0
3910: 29 2b 32 2a 24 66 69 78 65 64 57 69 64 74 68 7d  )+2*$fixedWidth}
3920: 5d 20 5b 65 78 70 72 20 7b 24 70 61 64 79 2b 32  ] [expr {$pady+2
3930: 2a 24 66 69 78 65 64 48 65 69 67 68 74 7d 5d 20  *$fixedHeight}] 
3940: 5b 65 78 70 72 20 7b 39 2a 24 66 69 78 65 64 57  [expr {9*$fixedW
3950: 69 64 74 68 7d 5d 20 24 66 69 78 65 64 48 65 69  idth}] $fixedHei
3960: 67 68 74 5d 20 5c 0a 20 20 20 20 5b 6c 69 73 74  ght] \.    [list
3970: 20 24 70 61 64 78 20 5b 65 78 70 72 20 7b 24 70   $padx [expr {$p
3980: 61 64 79 2b 33 2a 24 66 69 78 65 64 48 65 69 67  ady+3*$fixedHeig
3990: 68 74 7d 5d 20 24 66 69 78 65 64 57 69 64 74 68  ht}] $fixedWidth
39a0: 20 24 66 69 78 65 64 48 65 69 67 68 74 5d 5d 0a   $fixedHeight]].
39b0: 0a 74 65 73 74 20 74 65 78 74 44 69 73 70 2d 32  .test textDisp-2
39c0: 2e 31 36 20 7b 4c 61 79 6f 75 74 44 4c 69 6e 65  .16 {LayoutDLine
39d0: 2c 20 6a 75 73 74 69 66 69 63 61 74 69 6f 6e 7d  , justification}
39e0: 20 7b 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69 67   {.    .t config
39f0: 75 72 65 20 2d 77 72 61 70 20 77 6f 72 64 0a 20  ure -wrap word. 
3a00: 20 20 20 2e 74 20 64 65 6c 65 74 65 20 31 2e 30     .t delete 1.0
3a10: 20 65 6e 64 0a 20 20 20 20 2e 74 20 69 6e 73 65   end.    .t inse
3a20: 72 74 20 31 2e 30 20 22 4c 6f 74 73 20 6f 66 20  rt 1.0 "Lots of 
3a30: 6c 6f 6e 67 20 77 6f 72 64 73 2c 20 65 6e 6f 75  long words, enou
3a40: 67 68 20 74 6f 20 66 6f 72 63 65 20 77 6f 72 64  gh to force word
3a50: 20 77 72 61 70 5c 6e 54 68 65 6e 5c 6e 6d 6f 72   wrap\nThen\nmor
3a60: 65 20 6c 69 6e 65 73 22 0a 20 20 20 20 2e 74 20  e lines".    .t 
3a70: 74 61 67 20 63 6f 6e 66 69 67 75 72 65 20 78 20  tag configure x 
3a80: 2d 6a 75 73 74 69 66 79 20 63 65 6e 74 65 72 0a  -justify center.
3a90: 20 20 20 20 2e 74 20 74 61 67 20 61 64 64 20 78      .t tag add x
3aa0: 20 31 2e 31 20 31 2e 32 30 0a 20 20 20 20 2e 74   1.1 1.20.    .t
3ab0: 20 74 61 67 20 61 64 64 20 78 20 31 2e 32 31 20   tag add x 1.21 
3ac0: 31 2e 65 6e 64 0a 20 20 20 20 6c 69 73 74 20 5b  1.end.    list [
3ad0: 2e 74 20 62 62 6f 78 20 31 2e 30 5d 20 5b 2e 74  .t bbox 1.0] [.t
3ae0: 20 62 62 6f 78 20 31 2e 32 30 5d 20 5b 2e 74 20   bbox 1.20] [.t 
3af0: 62 62 6f 78 20 31 2e 34 31 5d 20 5b 2e 74 20 62  bbox 1.41] [.t b
3b00: 62 6f 78 20 32 2e 30 5d 0a 7d 20 5b 6c 69 73 74  box 2.0].} [list
3b10: 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20 24 70 61   \.    [list $pa
3b20: 64 78 20 24 70 61 64 79 20 24 66 69 78 65 64 57  dx $pady $fixedW
3b30: 69 64 74 68 20 24 66 69 78 65 64 48 65 69 67 68  idth $fixedHeigh
3b40: 74 5d 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20 24  t] \.    [list $
3b50: 70 61 64 78 20 5b 65 78 70 72 20 7b 24 70 61 64  padx [expr {$pad
3b60: 79 2b 24 66 69 78 65 64 48 65 69 67 68 74 7d 5d  y+$fixedHeight}]
3b70: 20 24 66 69 78 65 64 57 69 64 74 68 20 24 66 69   $fixedWidth $fi
3b80: 78 65 64 48 65 69 67 68 74 5d 20 5c 0a 20 20 20  xedHeight] \.   
3b90: 20 5b 6c 69 73 74 20 5b 65 78 70 72 20 7b 24 70   [list [expr {$p
3ba0: 61 64 78 2b 38 2a 24 66 69 78 65 64 57 69 64 74  adx+8*$fixedWidt
3bb0: 68 7d 5d 20 5b 65 78 70 72 20 7b 24 70 61 64 79  h}] [expr {$pady
3bc0: 2b 32 2a 24 66 69 78 65 64 48 65 69 67 68 74 7d  +2*$fixedHeight}
3bd0: 5d 20 24 66 69 78 65 64 57 69 64 74 68 20 24 66  ] $fixedWidth $f
3be0: 69 78 65 64 48 65 69 67 68 74 5d 20 5c 0a 20 20  ixedHeight] \.  
3bf0: 20 20 5b 6c 69 73 74 20 24 70 61 64 78 20 5b 65    [list $padx [e
3c00: 78 70 72 20 7b 24 70 61 64 79 2b 33 2a 24 66 69  xpr {$pady+3*$fi
3c10: 78 65 64 48 65 69 67 68 74 7d 5d 20 24 66 69 78  xedHeight}] $fix
3c20: 65 64 57 69 64 74 68 20 24 66 69 78 65 64 48 65  edWidth $fixedHe
3c30: 69 67 68 74 5d 5d 0a 0a 74 65 73 74 20 74 65 78  ight]]..test tex
3c40: 74 44 69 73 70 2d 32 2e 31 37 20 7b 4c 61 79 6f  tDisp-2.17 {Layo
3c50: 75 74 44 4c 69 6e 65 2c 20 6a 75 73 74 69 66 69  utDLine, justifi
3c60: 63 61 74 69 6f 6e 7d 20 7b 0a 20 20 20 20 2e 74  cation} {.    .t
3c70: 20 63 6f 6e 66 69 67 75 72 65 20 2d 77 72 61 70   configure -wrap
3c80: 20 77 6f 72 64 0a 20 20 20 20 2e 74 20 64 65 6c   word.    .t del
3c90: 65 74 65 20 31 2e 30 20 65 6e 64 0a 20 20 20 20  ete 1.0 end.    
3ca0: 2e 74 20 69 6e 73 65 72 74 20 31 2e 30 20 22 4c  .t insert 1.0 "L
3cb0: 6f 74 73 20 6f 66 20 6c 6f 6e 67 20 77 6f 72 64  ots of long word
3cc0: 73 2c 20 65 6e 6f 75 67 68 20 74 6f 20 66 6f 72  s, enough to for
3cd0: 63 65 20 77 6f 72 64 20 77 72 61 70 5c 6e 54 68  ce word wrap\nTh
3ce0: 65 6e 5c 6e 6d 6f 72 65 20 6c 69 6e 65 73 22 0a  en\nmore lines".
3cf0: 20 20 20 20 2e 74 20 74 61 67 20 63 6f 6e 66 69      .t tag confi
3d00: 67 75 72 65 20 78 20 2d 6a 75 73 74 69 66 79 20  gure x -justify 
3d10: 63 65 6e 74 65 72 0a 20 20 20 20 2e 74 20 74 61  center.    .t ta
3d20: 67 20 61 64 64 20 78 20 31 2e 32 30 0a 20 20 20  g add x 1.20.   
3d30: 20 6c 69 73 74 20 5b 2e 74 20 62 62 6f 78 20 31   list [.t bbox 1
3d40: 2e 30 5d 20 5b 2e 74 20 62 62 6f 78 20 31 2e 32  .0] [.t bbox 1.2
3d50: 30 5d 20 5b 2e 74 20 62 62 6f 78 20 31 2e 34 31  0] [.t bbox 1.41
3d60: 5d 20 5b 2e 74 20 62 62 6f 78 20 32 2e 30 5d 0a  ] [.t bbox 2.0].
3d70: 7d 20 5b 6c 69 73 74 20 5c 0a 20 20 20 20 5b 6c  } [list \.    [l
3d80: 69 73 74 20 24 70 61 64 78 20 24 70 61 64 79 20  ist $padx $pady 
3d90: 24 66 69 78 65 64 57 69 64 74 68 20 24 66 69 78  $fixedWidth $fix
3da0: 65 64 48 65 69 67 68 74 5d 20 5c 0a 20 20 20 20  edHeight] \.    
3db0: 5b 6c 69 73 74 20 24 70 61 64 78 20 5b 65 78 70  [list $padx [exp
3dc0: 72 20 7b 24 70 61 64 79 2b 24 66 69 78 65 64 48  r {$pady+$fixedH
3dd0: 65 69 67 68 74 7d 5d 20 24 66 69 78 65 64 57 69  eight}] $fixedWi
3de0: 64 74 68 20 24 66 69 78 65 64 48 65 69 67 68 74  dth $fixedHeight
3df0: 5d 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20 24 70  ] \.    [list $p
3e00: 61 64 78 20 5b 65 78 70 72 20 7b 24 70 61 64 79  adx [expr {$pady
3e10: 2b 32 2a 24 66 69 78 65 64 48 65 69 67 68 74 7d  +2*$fixedHeight}
3e20: 5d 20 24 66 69 78 65 64 57 69 64 74 68 20 24 66  ] $fixedWidth $f
3e30: 69 78 65 64 48 65 69 67 68 74 5d 20 5c 0a 20 20  ixedHeight] \.  
3e40: 20 20 5b 6c 69 73 74 20 24 70 61 64 78 20 5b 65    [list $padx [e
3e50: 78 70 72 20 7b 24 70 61 64 79 2b 33 2a 24 66 69  xpr {$pady+3*$fi
3e60: 78 65 64 48 65 69 67 68 74 7d 5d 20 24 66 69 78  xedHeight}] $fix
3e70: 65 64 57 69 64 74 68 20 24 66 69 78 65 64 48 65  edWidth $fixedHe
3e80: 69 67 68 74 5d 5d 0a 0a 74 65 73 74 20 74 65 78  ight]]..test tex
3e90: 74 44 69 73 70 2d 32 2e 31 38 20 7b 4c 61 79 6f  tDisp-2.18 {Layo
3ea0: 75 74 44 4c 69 6e 65 2c 20 6a 75 73 74 69 66 69  utDLine, justifi
3eb0: 63 61 74 69 6f 6e 7d 20 7b 0a 20 20 20 20 2e 74  cation} {.    .t
3ec0: 20 63 6f 6e 66 69 67 75 72 65 20 2d 77 72 61 70   configure -wrap
3ed0: 20 6e 6f 6e 65 0a 20 20 20 20 2e 74 20 64 65 6c   none.    .t del
3ee0: 65 74 65 20 31 2e 30 20 65 6e 64 0a 20 20 20 20  ete 1.0 end.    
3ef0: 2e 74 20 69 6e 73 65 72 74 20 31 2e 30 20 22 4c  .t insert 1.0 "L
3f00: 6f 74 73 20 6f 66 20 6c 6f 6e 67 20 77 6f 72 64  ots of long word
3f10: 73 2c 20 65 6e 6f 75 67 68 20 74 6f 20 65 78 74  s, enough to ext
3f20: 65 6e 64 20 6f 75 74 20 6f 66 20 74 68 65 20 77  end out of the w
3f30: 69 6e 64 6f 77 5c 6e 22 0a 20 20 20 20 2e 74 20  indow\n".    .t 
3f40: 69 6e 73 65 72 74 20 65 6e 64 20 22 54 68 65 6e  insert end "Then
3f50: 5c 6e 6d 6f 72 65 20 6c 69 6e 65 73 5c 6e 54 68  \nmore lines\nTh
3f60: 61 74 20 61 72 65 20 73 68 6f 72 74 65 72 22 0a  at are shorter".
3f70: 20 20 20 20 2e 74 20 74 61 67 20 63 6f 6e 66 69      .t tag confi
3f80: 67 75 72 65 20 78 20 2d 6a 75 73 74 69 66 79 20  gure x -justify 
3f90: 63 65 6e 74 65 72 0a 20 20 20 20 2e 74 20 74 61  center.    .t ta
3fa0: 67 20 63 6f 6e 66 69 67 75 72 65 20 79 20 2d 6a  g configure y -j
3fb0: 75 73 74 69 66 79 20 72 69 67 68 74 0a 20 20 20  ustify right.   
3fc0: 20 2e 74 20 74 61 67 20 61 64 64 20 78 20 32 2e   .t tag add x 2.
3fd0: 30 0a 20 20 20 20 2e 74 20 74 61 67 20 61 64 64  0.    .t tag add
3fe0: 20 79 20 33 2e 30 0a 20 20 20 20 2e 74 20 78 76   y 3.0.    .t xv
3ff0: 69 65 77 20 73 63 72 6f 6c 6c 20 35 20 75 6e 69  iew scroll 5 uni
4000: 74 73 0a 20 20 20 20 6c 69 73 74 20 5b 2e 74 20  ts.    list [.t 
4010: 62 62 6f 78 20 32 2e 30 5d 20 5b 2e 74 20 62 62  bbox 2.0] [.t bb
4020: 6f 78 20 33 2e 30 5d 0a 7d 20 5b 6c 69 73 74 20  ox 3.0].} [list 
4030: 5c 0a 20 20 20 20 5b 6c 69 73 74 20 5b 65 78 70  \.    [list [exp
4040: 72 20 7b 24 70 61 64 78 2b 72 6f 75 6e 64 28 28  r {$padx+round((
4050: 28 32 30 2e 30 2d 34 2e 30 29 2a 24 66 69 78 65  (20.0-4.0)*$fixe
4060: 64 57 69 64 74 68 29 2f 32 2e 30 29 2d 35 2a 24  dWidth)/2.0)-5*$
4070: 66 69 78 65 64 57 69 64 74 68 7d 5d 20 5b 65 78  fixedWidth}] [ex
4080: 70 72 20 7b 24 70 61 64 79 2b 24 66 69 78 65 64  pr {$pady+$fixed
4090: 48 65 69 67 68 74 7d 5d 20 24 66 69 78 65 64 57  Height}] $fixedW
40a0: 69 64 74 68 20 24 66 69 78 65 64 48 65 69 67 68  idth $fixedHeigh
40b0: 74 5d 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20 5b  t] \.    [list [
40c0: 65 78 70 72 20 7b 24 70 61 64 78 2b 35 2a 24 66  expr {$padx+5*$f
40d0: 69 78 65 64 57 69 64 74 68 7d 5d 20 5b 65 78 70  ixedWidth}] [exp
40e0: 72 20 7b 24 70 61 64 79 2b 32 2a 24 66 69 78 65  r {$pady+2*$fixe
40f0: 64 48 65 69 67 68 74 7d 5d 20 24 66 69 78 65 64  dHeight}] $fixed
4100: 57 69 64 74 68 20 24 66 69 78 65 64 48 65 69 67  Width $fixedHeig
4110: 68 74 5d 5d 0a 2e 74 20 74 61 67 20 64 65 6c 65  ht]]..t tag dele
4120: 74 65 20 78 0a 2e 74 20 74 61 67 20 64 65 6c 65  te x..t tag dele
4130: 74 65 20 79 0a 0a 74 65 73 74 20 74 65 78 74 44  te y..test textD
4140: 69 73 70 2d 32 2e 31 39 20 7b 4c 61 79 6f 75 74  isp-2.19 {Layout
4150: 44 4c 69 6e 65 2c 20 6d 61 72 67 69 6e 73 7d 20  DLine, margins} 
4160: 7b 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69 67 75  {.    .t configu
4170: 72 65 20 2d 77 72 61 70 20 77 6f 72 64 0a 20 20  re -wrap word.  
4180: 20 20 2e 74 20 64 65 6c 65 74 65 20 31 2e 30 20    .t delete 1.0 
4190: 65 6e 64 0a 20 20 20 20 2e 74 20 69 6e 73 65 72  end.    .t inser
41a0: 74 20 31 2e 30 20 22 4c 6f 74 73 20 6f 66 20 6c  t 1.0 "Lots of l
41b0: 6f 6e 67 20 77 6f 72 64 73 2c 20 65 6e 6f 75 67  ong words, enoug
41c0: 68 20 74 6f 20 66 6f 72 63 65 20 77 6f 72 64 20  h to force word 
41d0: 77 72 61 70 5c 6e 54 68 65 6e 5c 6e 6d 6f 72 65  wrap\nThen\nmore
41e0: 20 6c 69 6e 65 73 22 0a 20 20 20 20 2e 74 20 74   lines".    .t t
41f0: 61 67 20 63 6f 6e 66 69 67 75 72 65 20 78 20 2d  ag configure x -
4200: 6c 6d 61 72 67 69 6e 31 20 32 30 20 2d 6c 6d 61  lmargin1 20 -lma
4210: 72 67 69 6e 32 20 34 30 20 2d 72 6d 61 72 67 69  rgin2 40 -rmargi
4220: 6e 20 31 35 0a 20 20 20 20 2e 74 20 74 61 67 20  n 15.    .t tag 
4230: 61 64 64 20 78 20 31 2e 30 20 65 6e 64 0a 20 20  add x 1.0 end.  
4240: 20 20 6c 69 73 74 20 5b 2e 74 20 62 62 6f 78 20    list [.t bbox 
4250: 31 2e 30 5d 20 5b 2e 74 20 62 62 6f 78 20 31 2e  1.0] [.t bbox 1.
4260: 31 32 5d 20 5b 2e 74 20 62 62 6f 78 20 31 2e 31  12] [.t bbox 1.1
4270: 33 5d 20 5b 2e 74 20 62 62 6f 78 20 32 2e 30 5d  3] [.t bbox 2.0]
4280: 0a 7d 20 5b 6c 69 73 74 20 5c 0a 20 20 20 20 5b  .} [list \.    [
4290: 6c 69 73 74 20 5b 65 78 70 72 20 7b 24 70 61 64  list [expr {$pad
42a0: 78 2b 32 30 7d 5d 20 24 70 61 64 79 20 24 66 69  x+20}] $pady $fi
42b0: 78 65 64 57 69 64 74 68 20 24 66 69 78 65 64 48  xedWidth $fixedH
42c0: 65 69 67 68 74 5d 20 5c 0a 20 20 20 20 5b 6c 69  eight] \.    [li
42d0: 73 74 20 5b 65 78 70 72 20 7b 24 70 61 64 78 2b  st [expr {$padx+
42e0: 32 30 2b 31 32 2a 24 66 69 78 65 64 57 69 64 74  20+12*$fixedWidt
42f0: 68 7d 5d 20 24 70 61 64 79 20 5b 65 78 70 72 20  h}] $pady [expr 
4300: 7b 35 2a 24 66 69 78 65 64 57 69 64 74 68 2b 31  {5*$fixedWidth+1
4310: 7d 5d 20 24 66 69 78 65 64 48 65 69 67 68 74 5d  }] $fixedHeight]
4320: 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20 5b 65 78   \.    [list [ex
4330: 70 72 20 7b 24 70 61 64 78 2b 34 30 7d 5d 20 5b  pr {$padx+40}] [
4340: 65 78 70 72 20 7b 24 70 61 64 79 2b 24 66 69 78  expr {$pady+$fix
4350: 65 64 48 65 69 67 68 74 7d 5d 20 24 66 69 78 65  edHeight}] $fixe
4360: 64 57 69 64 74 68 20 24 66 69 78 65 64 48 65 69  dWidth $fixedHei
4370: 67 68 74 5d 20 5c 0a 20 20 20 20 5b 6c 69 73 74  ght] \.    [list
4380: 20 5b 65 78 70 72 20 7b 24 70 61 64 78 2b 32 30   [expr {$padx+20
4390: 7d 5d 20 5b 65 78 70 72 20 7b 24 70 61 64 79 2b  }] [expr {$pady+
43a0: 35 2a 24 66 69 78 65 64 48 65 69 67 68 74 7d 5d  5*$fixedHeight}]
43b0: 20 24 66 69 78 65 64 57 69 64 74 68 20 24 66 69   $fixedWidth $fi
43c0: 78 65 64 48 65 69 67 68 74 5d 5d 0a 0a 74 65 73  xedHeight]]..tes
43d0: 74 20 74 65 78 74 44 69 73 70 2d 32 2e 32 30 20  t textDisp-2.20 
43e0: 7b 4c 61 79 6f 75 74 44 4c 69 6e 65 2c 20 6d 61  {LayoutDLine, ma
43f0: 72 67 69 6e 73 7d 20 7b 0a 20 20 20 20 2e 74 20  rgins} {.    .t 
4400: 63 6f 6e 66 69 67 75 72 65 20 2d 77 72 61 70 20  configure -wrap 
4410: 77 6f 72 64 0a 20 20 20 20 2e 74 20 64 65 6c 65  word.    .t dele
4420: 74 65 20 31 2e 30 20 65 6e 64 0a 20 20 20 20 2e  te 1.0 end.    .
4430: 74 20 69 6e 73 65 72 74 20 31 2e 30 20 22 4c 6f  t insert 1.0 "Lo
4440: 74 73 20 6f 66 20 6c 6f 6e 67 20 77 6f 72 64 73  ts of long words
4450: 2c 20 65 6e 6f 75 67 68 20 74 6f 20 66 6f 72 63  , enough to forc
4460: 65 20 77 6f 72 64 20 77 72 61 70 5c 6e 54 68 65  e word wrap\nThe
4470: 6e 5c 6e 6d 6f 72 65 20 6c 69 6e 65 73 22 0a 20  n\nmore lines". 
4480: 20 20 20 2e 74 20 74 61 67 20 63 6f 6e 66 69 67     .t tag config
4490: 75 72 65 20 78 20 2d 6c 6d 61 72 67 69 6e 31 20  ure x -lmargin1 
44a0: 32 30 20 2d 6c 6d 61 72 67 69 6e 32 20 31 30 20  20 -lmargin2 10 
44b0: 2d 72 6d 61 72 67 69 6e 20 33 0a 20 20 20 20 2e  -rmargin 3.    .
44c0: 74 20 74 61 67 20 63 6f 6e 66 69 67 75 72 65 20  t tag configure 
44d0: 79 20 2d 6c 6d 61 72 67 69 6e 31 20 31 35 20 2d  y -lmargin1 15 -
44e0: 6c 6d 61 72 67 69 6e 32 20 35 20 2d 72 6d 61 72  lmargin2 5 -rmar
44f0: 67 69 6e 20 30 0a 20 20 20 20 2e 74 20 74 61 67  gin 0.    .t tag
4500: 20 72 61 69 73 65 20 79 0a 20 20 20 20 2e 74 20   raise y.    .t 
4510: 74 61 67 20 61 64 64 20 78 20 31 2e 30 20 65 6e  tag add x 1.0 en
4520: 64 0a 20 20 20 20 2e 74 20 74 61 67 20 61 64 64  d.    .t tag add
4530: 20 79 20 31 2e 31 33 0a 20 20 20 20 6c 69 73 74   y 1.13.    list
4540: 20 5b 2e 74 20 62 62 6f 78 20 31 2e 30 5d 20 5b   [.t bbox 1.0] [
4550: 2e 74 20 62 62 6f 78 20 31 2e 31 33 5d 20 5b 2e  .t bbox 1.13] [.
4560: 74 20 62 62 6f 78 20 31 2e 33 30 5d 20 5b 2e 74  t bbox 1.30] [.t
4570: 20 62 62 6f 78 20 32 2e 30 5d 0a 7d 20 5b 6c 69   bbox 2.0].} [li
4580: 73 74 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20 5b  st \.    [list [
4590: 65 78 70 72 20 7b 24 70 61 64 78 2b 32 30 7d 5d  expr {$padx+20}]
45a0: 20 24 70 61 64 79 20 24 66 69 78 65 64 57 69 64   $pady $fixedWid
45b0: 74 68 20 24 66 69 78 65 64 48 65 69 67 68 74 5d  th $fixedHeight]
45c0: 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20 5b 65 78   \.    [list [ex
45d0: 70 72 20 7b 24 70 61 64 78 2b 35 7d 5d 20 5b 65  pr {$padx+5}] [e
45e0: 78 70 72 20 7b 24 70 61 64 79 2b 24 66 69 78 65  xpr {$pady+$fixe
45f0: 64 48 65 69 67 68 74 7d 5d 20 24 66 69 78 65 64  dHeight}] $fixed
4600: 57 69 64 74 68 20 24 66 69 78 65 64 48 65 69 67  Width $fixedHeig
4610: 68 74 5d 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20  ht] \.    [list 
4620: 5b 65 78 70 72 20 7b 24 70 61 64 78 2b 31 30 7d  [expr {$padx+10}
4630: 5d 20 5b 65 78 70 72 20 7b 24 70 61 64 79 2b 32  ] [expr {$pady+2
4640: 2a 24 66 69 78 65 64 48 65 69 67 68 74 7d 5d 20  *$fixedHeight}] 
4650: 24 66 69 78 65 64 57 69 64 74 68 20 24 66 69 78  $fixedWidth $fix
4660: 65 64 48 65 69 67 68 74 5d 20 5c 0a 20 20 20 20  edHeight] \.    
4670: 5b 6c 69 73 74 20 5b 65 78 70 72 20 7b 24 70 61  [list [expr {$pa
4680: 64 78 2b 32 30 7d 5d 20 5b 65 78 70 72 20 7b 24  dx+20}] [expr {$
4690: 70 61 64 79 2b 33 2a 24 66 69 78 65 64 48 65 69  pady+3*$fixedHei
46a0: 67 68 74 7d 5d 20 24 66 69 78 65 64 57 69 64 74  ght}] $fixedWidt
46b0: 68 20 24 66 69 78 65 64 48 65 69 67 68 74 5d 5d  h $fixedHeight]]
46c0: 0a 0a 74 65 73 74 20 74 65 78 74 44 69 73 70 2d  ..test textDisp-
46d0: 32 2e 32 31 20 7b 4c 61 79 6f 75 74 44 4c 69 6e  2.21 {LayoutDLin
46e0: 65 2c 20 6d 61 72 67 69 6e 73 7d 20 7b 0a 20 20  e, margins} {.  
46f0: 20 20 2e 74 20 63 6f 6e 66 69 67 75 72 65 20 2d    .t configure -
4700: 77 72 61 70 20 77 6f 72 64 0a 20 20 20 20 2e 74  wrap word.    .t
4710: 20 64 65 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a   delete 1.0 end.
4720: 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20 31 2e      .t insert 1.
4730: 30 20 22 53 61 6d 70 6c 65 20 74 65 78 74 22 0a  0 "Sample text".
4740: 20 20 20 20 2e 74 20 74 61 67 20 63 6f 6e 66 69      .t tag confi
4750: 67 75 72 65 20 78 20 2d 6c 6d 61 72 67 69 6e 31  gure x -lmargin1
4760: 20 38 30 20 2d 6c 6d 61 72 67 69 6e 32 20 38 30   80 -lmargin2 80
4770: 20 2d 72 6d 61 72 67 69 6e 20 31 30 30 0a 20 20   -rmargin 100.  
4780: 20 20 2e 74 20 74 61 67 20 61 64 64 20 78 20 31    .t tag add x 1
4790: 2e 30 20 65 6e 64 0a 20 20 20 20 6c 69 73 74 20  .0 end.    list 
47a0: 5b 2e 74 20 62 62 6f 78 20 31 2e 30 5d 20 5b 2e  [.t bbox 1.0] [.
47b0: 74 20 62 62 6f 78 20 31 2e 31 5d 20 5b 2e 74 20  t bbox 1.1] [.t 
47c0: 62 62 6f 78 20 31 2e 32 5d 0a 7d 20 5b 6c 69 73  bbox 1.2].} [lis
47d0: 74 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20 5b 65  t \.    [list [e
47e0: 78 70 72 20 7b 24 70 61 64 78 2b 38 30 7d 5d 20  xpr {$padx+80}] 
47f0: 24 70 61 64 79 20 5b 65 78 70 72 20 7b 72 6f 75  $pady [expr {rou
4800: 6e 64 28 28 28 32 30 2e 30 2d 31 2e 30 29 2a 24  nd(((20.0-1.0)*$
4810: 66 69 78 65 64 57 69 64 74 68 29 2a 30 2e 34 34  fixedWidth)*0.44
4820: 34 29 2b 31 7d 5d 20 24 66 69 78 65 64 48 65 69  4)+1}] $fixedHei
4830: 67 68 74 5d 20 5c 0a 20 20 20 20 5b 6c 69 73 74  ght] \.    [list
4840: 20 5b 65 78 70 72 20 7b 24 70 61 64 78 2b 38 30   [expr {$padx+80
4850: 7d 5d 20 5b 65 78 70 72 20 7b 24 70 61 64 79 2b  }] [expr {$pady+
4860: 24 66 69 78 65 64 48 65 69 67 68 74 7d 5d 20 5b  $fixedHeight}] [
4870: 65 78 70 72 20 7b 72 6f 75 6e 64 28 28 28 32 30  expr {round(((20
4880: 2e 30 2d 31 2e 30 29 2a 24 66 69 78 65 64 57 69  .0-1.0)*$fixedWi
4890: 64 74 68 29 2a 30 2e 34 34 34 29 2b 31 7d 5d 20  dth)*0.444)+1}] 
48a0: 24 66 69 78 65 64 48 65 69 67 68 74 5d 20 5c 0a  $fixedHeight] \.
48b0: 20 20 20 20 5b 6c 69 73 74 20 5b 65 78 70 72 20      [list [expr 
48c0: 7b 24 70 61 64 78 2b 38 30 7d 5d 20 5b 65 78 70  {$padx+80}] [exp
48d0: 72 20 7b 24 70 61 64 79 2b 32 2a 24 66 69 78 65  r {$pady+2*$fixe
48e0: 64 48 65 69 67 68 74 7d 5d 20 5b 65 78 70 72 20  dHeight}] [expr 
48f0: 7b 72 6f 75 6e 64 28 28 28 32 30 2e 30 2d 31 2e  {round(((20.0-1.
4900: 30 29 2a 24 66 69 78 65 64 57 69 64 74 68 29 2a  0)*$fixedWidth)*
4910: 30 2e 34 34 34 29 2b 31 7d 5d 20 24 66 69 78 65  0.444)+1}] $fixe
4920: 64 48 65 69 67 68 74 5d 5d 0a 2e 74 20 74 61 67  dHeight]]..t tag
4930: 20 64 65 6c 65 74 65 20 78 0a 2e 74 20 74 61 67   delete x..t tag
4940: 20 64 65 6c 65 74 65 20 79 0a 0a 74 65 73 74 20   delete y..test 
4950: 74 65 78 74 44 69 73 70 2d 32 2e 32 32 20 7b 4c  textDisp-2.22 {L
4960: 61 79 6f 75 74 44 4c 69 6e 65 2c 20 73 70 61 63  ayoutDLine, spac
4970: 69 6e 67 20 6f 70 74 69 6f 6e 73 7d 20 7b 0a 20  ing options} {. 
4980: 20 20 20 2e 74 20 63 6f 6e 66 69 67 75 72 65 20     .t configure 
4990: 2d 77 72 61 70 20 77 6f 72 64 0a 20 20 20 20 2e  -wrap word.    .
49a0: 74 20 64 65 6c 65 74 65 20 31 2e 30 20 65 6e 64  t delete 1.0 end
49b0: 0a 20 20 20 20 2e 74 20 74 61 67 20 64 65 6c 65  .    .t tag dele
49c0: 74 65 20 78 20 79 0a 20 20 20 20 2e 74 20 69 6e  te x y.    .t in
49d0: 73 65 72 74 20 65 6e 64 20 22 53 68 6f 72 74 20  sert end "Short 
49e0: 6c 69 6e 65 5c 6e 4c 69 6e 65 20 32 20 69 73 20  line\nLine 2 is 
49f0: 6c 6f 6e 67 20 65 6e 6f 75 67 68 20 22 0a 20 20  long enough ".  
4a00: 20 20 2e 74 20 69 6e 73 65 72 74 20 65 6e 64 20    .t insert end 
4a10: 22 74 6f 20 77 72 61 70 20 61 72 6f 75 6e 64 20  "to wrap around 
4a20: 61 20 63 6f 75 70 6c 65 20 6f 66 20 74 69 6d 65  a couple of time
4a30: 73 22 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74  s".    .t insert
4a40: 20 65 6e 64 20 22 5c 6e 4c 69 6e 65 20 33 5c 6e   end "\nLine 3\n
4a50: 4c 69 6e 65 20 34 22 0a 20 20 20 20 73 65 74 20  Line 4".    set 
4a60: 69 20 5b 2e 74 20 64 6c 69 6e 65 69 6e 66 6f 20  i [.t dlineinfo 
4a70: 31 2e 30 5d 0a 20 20 20 20 73 65 74 20 62 31 20  1.0].    set b1 
4a80: 5b 65 78 70 72 20 5b 6c 69 6e 64 65 78 20 24 69  [expr [lindex $i
4a90: 20 31 5d 20 2b 20 5b 6c 69 6e 64 65 78 20 24 69   1] + [lindex $i
4aa0: 20 34 5d 5d 0a 20 20 20 20 73 65 74 20 69 20 5b   4]].    set i [
4ab0: 2e 74 20 64 6c 69 6e 65 69 6e 66 6f 20 32 2e 30  .t dlineinfo 2.0
4ac0: 5d 0a 20 20 20 20 73 65 74 20 62 32 20 5b 65 78  ].    set b2 [ex
4ad0: 70 72 20 5b 6c 69 6e 64 65 78 20 24 69 20 31 5d  pr [lindex $i 1]
4ae0: 20 2b 20 5b 6c 69 6e 64 65 78 20 24 69 20 34 5d   + [lindex $i 4]
4af0: 5d 0a 20 20 20 20 73 65 74 20 69 20 5b 2e 74 20  ].    set i [.t 
4b00: 64 6c 69 6e 65 69 6e 66 6f 20 32 2e 65 6e 64 5d  dlineinfo 2.end]
4b10: 0a 20 20 20 20 73 65 74 20 62 33 20 5b 65 78 70  .    set b3 [exp
4b20: 72 20 5b 6c 69 6e 64 65 78 20 24 69 20 31 5d 20  r [lindex $i 1] 
4b30: 2b 20 5b 6c 69 6e 64 65 78 20 24 69 20 34 5d 5d  + [lindex $i 4]]
4b40: 0a 20 20 20 20 73 65 74 20 69 20 5b 2e 74 20 64  .    set i [.t d
4b50: 6c 69 6e 65 69 6e 66 6f 20 33 2e 30 5d 0a 20 20  lineinfo 3.0].  
4b60: 20 20 73 65 74 20 62 34 20 5b 65 78 70 72 20 5b    set b4 [expr [
4b70: 6c 69 6e 64 65 78 20 24 69 20 31 5d 20 2b 20 5b  lindex $i 1] + [
4b80: 6c 69 6e 64 65 78 20 24 69 20 34 5d 5d 0a 20 20  lindex $i 4]].  
4b90: 20 20 2e 74 20 63 6f 6e 66 69 67 75 72 65 20 2d    .t configure -
4ba0: 73 70 61 63 69 6e 67 31 20 32 20 2d 73 70 61 63  spacing1 2 -spac
4bb0: 69 6e 67 32 20 31 20 2d 73 70 61 63 69 6e 67 33  ing2 1 -spacing3
4bc0: 20 33 0a 20 20 20 20 73 65 74 20 69 20 5b 2e 74   3.    set i [.t
4bd0: 20 64 6c 69 6e 65 69 6e 66 6f 20 31 2e 30 5d 0a   dlineinfo 1.0].
4be0: 20 20 20 20 73 65 74 20 62 31 20 5b 65 78 70 72      set b1 [expr
4bf0: 20 5b 6c 69 6e 64 65 78 20 24 69 20 31 5d 20 2b   [lindex $i 1] +
4c00: 20 5b 6c 69 6e 64 65 78 20 24 69 20 34 5d 20 2d   [lindex $i 4] -
4c10: 20 24 62 31 5d 0a 20 20 20 20 73 65 74 20 69 20   $b1].    set i 
4c20: 5b 2e 74 20 64 6c 69 6e 65 69 6e 66 6f 20 32 2e  [.t dlineinfo 2.
4c30: 30 5d 0a 20 20 20 20 73 65 74 20 62 32 20 5b 65  0].    set b2 [e
4c40: 78 70 72 20 5b 6c 69 6e 64 65 78 20 24 69 20 31  xpr [lindex $i 1
4c50: 5d 20 2b 20 5b 6c 69 6e 64 65 78 20 24 69 20 34  ] + [lindex $i 4
4c60: 5d 20 2d 20 24 62 32 5d 0a 20 20 20 20 73 65 74  ] - $b2].    set
4c70: 20 69 20 5b 2e 74 20 64 6c 69 6e 65 69 6e 66 6f   i [.t dlineinfo
4c80: 20 32 2e 65 6e 64 5d 0a 20 20 20 20 73 65 74 20   2.end].    set 
4c90: 62 33 20 5b 65 78 70 72 20 5b 6c 69 6e 64 65 78  b3 [expr [lindex
4ca0: 20 24 69 20 31 5d 20 2b 20 5b 6c 69 6e 64 65 78   $i 1] + [lindex
4cb0: 20 24 69 20 34 5d 20 2d 20 24 62 33 5d 0a 20 20   $i 4] - $b3].  
4cc0: 20 20 73 65 74 20 69 20 5b 2e 74 20 64 6c 69 6e    set i [.t dlin
4cd0: 65 69 6e 66 6f 20 33 2e 30 5d 0a 20 20 20 20 73  einfo 3.0].    s
4ce0: 65 74 20 62 34 20 5b 65 78 70 72 20 5b 6c 69 6e  et b4 [expr [lin
4cf0: 64 65 78 20 24 69 20 31 5d 20 2b 20 5b 6c 69 6e  dex $i 1] + [lin
4d00: 64 65 78 20 24 69 20 34 5d 20 2d 20 24 62 34 5d  dex $i 4] - $b4]
4d10: 0a 20 20 20 20 6c 69 73 74 20 24 62 31 20 24 62  .    list $b1 $b
4d20: 32 20 24 62 33 20 24 62 34 0a 7d 20 5b 6c 69 73  2 $b3 $b4.} [lis
4d30: 74 20 32 20 37 20 31 30 20 31 35 5d 0a 2e 74 20  t 2 7 10 15]..t 
4d40: 63 6f 6e 66 69 67 75 72 65 20 2d 73 70 61 63 69  configure -spaci
4d50: 6e 67 31 20 30 20 2d 73 70 61 63 69 6e 67 32 20  ng1 0 -spacing2 
4d60: 30 20 2d 73 70 61 63 69 6e 67 33 20 30 0a 0a 74  0 -spacing3 0..t
4d70: 65 73 74 20 74 65 78 74 44 69 73 70 2d 32 2e 32  est textDisp-2.2
4d80: 33 20 7b 4c 61 79 6f 75 74 44 4c 69 6e 65 2c 20  3 {LayoutDLine, 
4d90: 73 70 61 63 69 6e 67 20 6f 70 74 69 6f 6e 73 7d  spacing options}
4da0: 20 7b 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69 67   {.    .t config
4db0: 75 72 65 20 2d 77 72 61 70 20 77 6f 72 64 0a 20  ure -wrap word. 
4dc0: 20 20 20 2e 74 20 64 65 6c 65 74 65 20 31 2e 30     .t delete 1.0
4dd0: 20 65 6e 64 0a 20 20 20 20 2e 74 20 74 61 67 20   end.    .t tag 
4de0: 64 65 6c 65 74 65 20 78 20 79 0a 20 20 20 20 2e  delete x y.    .
4df0: 74 20 69 6e 73 65 72 74 20 65 6e 64 20 22 53 68  t insert end "Sh
4e00: 6f 72 74 20 6c 69 6e 65 5c 6e 4c 69 6e 65 20 32  ort line\nLine 2
4e10: 20 69 73 20 6c 6f 6e 67 20 65 6e 6f 75 67 68 20   is long enough 
4e20: 22 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20  ".    .t insert 
4e30: 65 6e 64 20 22 74 6f 20 77 72 61 70 20 61 72 6f  end "to wrap aro
4e40: 75 6e 64 20 61 20 63 6f 75 70 6c 65 20 6f 66 20  und a couple of 
4e50: 74 69 6d 65 73 22 0a 20 20 20 20 2e 74 20 69 6e  times".    .t in
4e60: 73 65 72 74 20 65 6e 64 20 22 5c 6e 4c 69 6e 65  sert end "\nLine
4e70: 20 33 5c 6e 4c 69 6e 65 20 34 22 0a 20 20 20 20   3\nLine 4".    
4e80: 73 65 74 20 69 20 5b 2e 74 20 64 6c 69 6e 65 69  set i [.t dlinei
4e90: 6e 66 6f 20 31 2e 30 5d 0a 20 20 20 20 73 65 74  nfo 1.0].    set
4ea0: 20 62 31 20 5b 65 78 70 72 20 5b 6c 69 6e 64 65   b1 [expr [linde
4eb0: 78 20 24 69 20 31 5d 20 2b 20 5b 6c 69 6e 64 65  x $i 1] + [linde
4ec0: 78 20 24 69 20 34 5d 5d 0a 20 20 20 20 73 65 74  x $i 4]].    set
4ed0: 20 69 20 5b 2e 74 20 64 6c 69 6e 65 69 6e 66 6f   i [.t dlineinfo
4ee0: 20 32 2e 30 5d 0a 20 20 20 20 73 65 74 20 62 32   2.0].    set b2
4ef0: 20 5b 65 78 70 72 20 5b 6c 69 6e 64 65 78 20 24   [expr [lindex $
4f00: 69 20 31 5d 20 2b 20 5b 6c 69 6e 64 65 78 20 24  i 1] + [lindex $
4f10: 69 20 34 5d 5d 0a 20 20 20 20 73 65 74 20 69 20  i 4]].    set i 
4f20: 5b 2e 74 20 64 6c 69 6e 65 69 6e 66 6f 20 32 2e  [.t dlineinfo 2.
4f30: 65 6e 64 5d 0a 20 20 20 20 73 65 74 20 62 33 20  end].    set b3 
4f40: 5b 65 78 70 72 20 5b 6c 69 6e 64 65 78 20 24 69  [expr [lindex $i
4f50: 20 31 5d 20 2b 20 5b 6c 69 6e 64 65 78 20 24 69   1] + [lindex $i
4f60: 20 34 5d 5d 0a 20 20 20 20 73 65 74 20 69 20 5b   4]].    set i [
4f70: 2e 74 20 64 6c 69 6e 65 69 6e 66 6f 20 33 2e 30  .t dlineinfo 3.0
4f80: 5d 0a 20 20 20 20 73 65 74 20 62 34 20 5b 65 78  ].    set b4 [ex
4f90: 70 72 20 5b 6c 69 6e 64 65 78 20 24 69 20 31 5d  pr [lindex $i 1]
4fa0: 20 2b 20 5b 6c 69 6e 64 65 78 20 24 69 20 34 5d   + [lindex $i 4]
4fb0: 5d 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69 67 75  ].    .t configu
4fc0: 72 65 20 2d 73 70 61 63 69 6e 67 31 20 34 20 2d  re -spacing1 4 -
4fd0: 73 70 61 63 69 6e 67 32 20 34 20 2d 73 70 61 63  spacing2 4 -spac
4fe0: 69 6e 67 33 20 34 0a 20 20 20 20 2e 74 20 74 61  ing3 4.    .t ta
4ff0: 67 20 63 6f 6e 66 69 67 75 72 65 20 78 20 2d 73  g configure x -s
5000: 70 61 63 69 6e 67 31 20 31 20 2d 73 70 61 63 69  pacing1 1 -spaci
5010: 6e 67 32 20 32 20 2d 73 70 61 63 69 6e 67 33 20  ng2 2 -spacing3 
5020: 33 0a 20 20 20 20 2e 74 20 74 61 67 20 61 64 64  3.    .t tag add
5030: 20 78 20 31 2e 30 20 65 6e 64 0a 20 20 20 20 2e   x 1.0 end.    .
5040: 74 20 74 61 67 20 63 6f 6e 66 69 67 75 72 65 20  t tag configure 
5050: 79 20 2d 73 70 61 63 69 6e 67 31 20 30 20 2d 73  y -spacing1 0 -s
5060: 70 61 63 69 6e 67 32 20 33 0a 20 20 20 20 2e 74  pacing2 3.    .t
5070: 20 74 61 67 20 61 64 64 20 79 20 32 2e 31 39 20   tag add y 2.19 
5080: 65 6e 64 0a 20 20 20 20 2e 74 20 74 61 67 20 72  end.    .t tag r
5090: 61 69 73 65 20 79 0a 20 20 20 20 73 65 74 20 69  aise y.    set i
50a0: 20 5b 2e 74 20 64 6c 69 6e 65 69 6e 66 6f 20 31   [.t dlineinfo 1
50b0: 2e 30 5d 0a 20 20 20 20 73 65 74 20 62 31 20 5b  .0].    set b1 [
50c0: 65 78 70 72 20 5b 6c 69 6e 64 65 78 20 24 69 20  expr [lindex $i 
50d0: 31 5d 20 2b 20 5b 6c 69 6e 64 65 78 20 24 69 20  1] + [lindex $i 
50e0: 34 5d 20 2d 20 24 62 31 5d 0a 20 20 20 20 73 65  4] - $b1].    se
50f0: 74 20 69 20 5b 2e 74 20 64 6c 69 6e 65 69 6e 66  t i [.t dlineinf
5100: 6f 20 32 2e 30 5d 0a 20 20 20 20 73 65 74 20 62  o 2.0].    set b
5110: 32 20 5b 65 78 70 72 20 5b 6c 69 6e 64 65 78 20  2 [expr [lindex 
5120: 24 69 20 31 5d 20 2b 20 5b 6c 69 6e 64 65 78 20  $i 1] + [lindex 
5130: 24 69 20 34 5d 20 2d 20 24 62 32 5d 0a 20 20 20  $i 4] - $b2].   
5140: 20 73 65 74 20 69 20 5b 2e 74 20 64 6c 69 6e 65   set i [.t dline
5150: 69 6e 66 6f 20 32 2e 65 6e 64 5d 0a 20 20 20 20  info 2.end].    
5160: 73 65 74 20 62 33 20 5b 65 78 70 72 20 5b 6c 69  set b3 [expr [li
5170: 6e 64 65 78 20 24 69 20 31 5d 20 2b 20 5b 6c 69  ndex $i 1] + [li
5180: 6e 64 65 78 20 24 69 20 34 5d 20 2d 20 24 62 33  ndex $i 4] - $b3
5190: 5d 0a 20 20 20 20 73 65 74 20 69 20 5b 2e 74 20  ].    set i [.t 
51a0: 64 6c 69 6e 65 69 6e 66 6f 20 33 2e 30 5d 0a 20  dlineinfo 3.0]. 
51b0: 20 20 20 73 65 74 20 62 34 20 5b 65 78 70 72 20     set b4 [expr 
51c0: 5b 6c 69 6e 64 65 78 20 24 69 20 31 5d 20 2b 20  [lindex $i 1] + 
51d0: 5b 6c 69 6e 64 65 78 20 24 69 20 34 5d 20 2d 20  [lindex $i 4] - 
51e0: 24 62 34 5d 0a 20 20 20 20 6c 69 73 74 20 24 62  $b4].    list $b
51f0: 31 20 24 62 32 20 24 62 33 20 24 62 34 0a 7d 20  1 $b2 $b3 $b4.} 
5200: 5b 6c 69 73 74 20 31 20 35 20 31 33 20 31 36 5d  [list 1 5 13 16]
5210: 0a 2e 74 20 63 6f 6e 66 69 67 75 72 65 20 2d 73  ..t configure -s
5220: 70 61 63 69 6e 67 31 20 30 20 2d 73 70 61 63 69  pacing1 0 -spaci
5230: 6e 67 32 20 30 20 2d 73 70 61 63 69 6e 67 33 20  ng2 0 -spacing3 
5240: 30 0a 0a 74 65 73 74 20 74 65 78 74 44 69 73 70  0..test textDisp
5250: 2d 32 2e 32 34 20 7b 4c 61 79 6f 75 74 44 4c 69  -2.24 {LayoutDLi
5260: 6e 65 2c 20 74 61 62 73 2c 20 73 61 76 69 6e 67  ne, tabs, saving
5270: 20 66 72 6f 6d 20 66 69 72 73 74 20 63 68 75 6e   from first chun
5280: 6b 7d 20 7b 0a 20 20 20 20 2e 74 20 64 65 6c 65  k} {.    .t dele
5290: 74 65 20 31 2e 30 20 65 6e 64 0a 20 20 20 20 2e  te 1.0 end.    .
52a0: 74 20 74 61 67 20 64 65 6c 65 74 65 20 78 20 79  t tag delete x y
52b0: 0a 20 20 20 20 2e 74 20 74 61 67 20 63 6f 6e 66  .    .t tag conf
52c0: 69 67 75 72 65 20 78 20 2d 74 61 62 73 20 37 30  igure x -tabs 70
52d0: 0a 20 20 20 20 2e 74 20 74 61 67 20 63 6f 6e 66  .    .t tag conf
52e0: 69 67 75 72 65 20 79 20 2d 74 61 62 73 20 38 30  igure y -tabs 80
52f0: 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20 31  .    .t insert 1
5300: 2e 30 20 22 61 62 5c 74 63 64 65 22 0a 20 20 20  .0 "ab\tcde".   
5310: 20 2e 74 20 74 61 67 20 61 64 64 20 78 20 31 2e   .t tag add x 1.
5320: 30 20 65 6e 64 0a 20 20 20 20 2e 74 20 74 61 67  0 end.    .t tag
5330: 20 61 64 64 20 79 20 31 2e 31 20 65 6e 64 0a 20   add y 1.1 end. 
5340: 20 20 20 6c 69 6e 64 65 78 20 5b 2e 74 20 62 62     lindex [.t bb
5350: 6f 78 20 31 2e 33 5d 20 30 0a 7d 20 5b 65 78 70  ox 1.3] 0.} [exp
5360: 72 20 7b 24 70 61 64 78 2b 37 30 7d 5d 0a 0a 74  r {$padx+70}]..t
5370: 65 73 74 20 74 65 78 74 44 69 73 70 2d 32 2e 32  est textDisp-2.2
5380: 35 20 7b 4c 61 79 6f 75 74 44 4c 69 6e 65 2c 20  5 {LayoutDLine, 
5390: 74 61 62 73 2c 20 62 72 65 61 6b 69 6e 67 20 63  tabs, breaking c
53a0: 68 75 6e 6b 73 20 61 74 20 74 61 62 73 7d 20 7b  hunks at tabs} {
53b0: 0a 20 20 20 20 2e 74 20 64 65 6c 65 74 65 20 31  .    .t delete 1
53c0: 2e 30 20 65 6e 64 0a 20 20 20 20 2e 74 20 74 61  .0 end.    .t ta
53d0: 67 20 64 65 6c 65 74 65 20 78 0a 20 20 20 20 2e  g delete x.    .
53e0: 74 20 74 61 67 20 63 6f 6e 66 69 67 75 72 65 20  t tag configure 
53f0: 78 20 2d 74 61 62 73 20 5b 6c 69 73 74 20 33 30  x -tabs [list 30
5400: 20 36 30 20 39 30 20 31 32 30 5d 0a 20 20 20 20   60 90 120].    
5410: 2e 74 20 69 6e 73 65 72 74 20 31 2e 30 20 22 61  .t insert 1.0 "a
5420: 5c 74 62 5c 74 63 5c 74 64 5c 74 65 22 0a 20 20  \tb\tc\td\te".  
5430: 20 20 2e 74 20 6d 61 72 6b 20 73 65 74 20 64 75    .t mark set du
5440: 6d 6d 79 31 20 31 2e 31 0a 20 20 20 20 2e 74 20  mmy1 1.1.    .t 
5450: 6d 61 72 6b 20 73 65 74 20 64 75 6d 6d 79 32 20  mark set dummy2 
5460: 31 2e 32 0a 20 20 20 20 2e 74 20 74 61 67 20 61  1.2.    .t tag a
5470: 64 64 20 78 20 31 2e 30 20 65 6e 64 0a 20 20 20  dd x 1.0 end.   
5480: 20 6c 69 73 74 20 5b 6c 69 6e 64 65 78 20 5b 2e   list [lindex [.
5490: 74 20 62 62 6f 78 20 31 2e 32 5d 20 30 5d 20 5b  t bbox 1.2] 0] [
54a0: 6c 69 6e 64 65 78 20 5b 2e 74 20 62 62 6f 78 20  lindex [.t bbox 
54b0: 31 2e 34 5d 20 30 5d 20 5c 0a 09 20 20 20 20 5b  1.4] 0] \..    [
54c0: 6c 69 6e 64 65 78 20 5b 2e 74 20 62 62 6f 78 20  lindex [.t bbox 
54d0: 31 2e 36 5d 20 30 5d 20 5b 6c 69 6e 64 65 78 20  1.6] 0] [lindex 
54e0: 5b 2e 74 20 62 62 6f 78 20 31 2e 38 5d 20 30 5d  [.t bbox 1.8] 0]
54f0: 0a 7d 20 5b 6c 69 73 74 20 5b 65 78 70 72 20 7b  .} [list [expr {
5500: 24 70 61 64 78 2b 33 30 7d 5d 20 5b 65 78 70 72  $padx+30}] [expr
5510: 20 7b 24 70 61 64 78 2b 36 30 7d 5d 20 5b 65 78   {$padx+60}] [ex
5520: 70 72 20 7b 24 70 61 64 78 2b 39 30 7d 5d 20 5b  pr {$padx+90}] [
5530: 65 78 70 72 20 7b 24 70 61 64 78 2b 31 32 30 7d  expr {$padx+120}
5540: 5d 5d 0a 0a 23 20 2d 74 61 62 73 20 61 6e 64 20  ]]..# -tabs and 
5550: 2d 6a 75 73 74 69 66 79 20 72 69 67 68 74 20 73  -justify right s
5560: 65 74 20 74 68 65 20 74 61 62 73 20 66 72 6f 6d  et the tabs from
5570: 20 74 68 65 20 72 69 67 68 74 20 73 69 64 65 2e   the right side.
5580: 0a 23 20 54 68 69 6e 6b 20 61 62 6f 75 74 20 68  .# Think about h
5590: 6f 77 20 61 20 72 69 67 68 74 2d 74 6f 2d 6c 65  ow a right-to-le
55a0: 66 74 20 6c 61 6e 67 75 61 67 65 20 77 6f 75 6c  ft language woul
55b0: 64 20 77 61 6e 74 20 74 68 65 69 72 20 74 61 62  d want their tab
55c0: 73 20 73 65 74 2e 0a 74 65 73 74 20 74 65 78 74  s set..test text
55d0: 44 69 73 70 2d 32 2e 32 36 20 7b 4c 61 79 6f 75  Disp-2.26 {Layou
55e0: 74 44 4c 69 6e 65 2c 20 74 61 62 73 2c 20 62 72  tDLine, tabs, br
55f0: 65 61 6b 69 6e 67 20 63 68 75 6e 6b 73 20 61 74  eaking chunks at
5600: 20 74 61 62 73 7d 20 7b 0a 20 20 20 20 2e 74 20   tabs} {.    .t 
5610: 64 65 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a 20  delete 1.0 end. 
5620: 20 20 20 2e 74 20 74 61 67 20 64 65 6c 65 74 65     .t tag delete
5630: 20 78 0a 20 20 20 20 2e 74 20 74 61 67 20 63 6f   x.    .t tag co
5640: 6e 66 69 67 75 72 65 20 78 20 2d 74 61 62 73 20  nfigure x -tabs 
5650: 5b 6c 69 73 74 20 33 30 20 36 30 20 39 30 20 31  [list 30 60 90 1
5660: 32 30 5d 20 2d 6a 75 73 74 69 66 79 20 72 69 67  20] -justify rig
5670: 68 74 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74  ht.    .t insert
5680: 20 31 2e 30 20 22 61 5c 74 62 5c 74 63 5c 74 64   1.0 "a\tb\tc\td
5690: 5c 74 65 22 0a 20 20 20 20 2e 74 20 6d 61 72 6b  \te".    .t mark
56a0: 20 73 65 74 20 64 75 6d 6d 79 31 20 31 2e 31 0a   set dummy1 1.1.
56b0: 20 20 20 20 2e 74 20 6d 61 72 6b 20 73 65 74 20      .t mark set 
56c0: 64 75 6d 6d 79 32 20 31 2e 32 0a 20 20 20 20 2e  dummy2 1.2.    .
56d0: 74 20 74 61 67 20 61 64 64 20 78 20 31 2e 30 20  t tag add x 1.0 
56e0: 65 6e 64 0a 20 20 20 20 23 20 62 20 63 20 64 20  end.    # b c d 
56f0: 65 0a 20 20 20 20 6c 69 73 74 20 5b 6c 69 6e 64  e.    list [lind
5700: 65 78 20 5b 2e 74 20 62 62 6f 78 20 31 2e 32 5d  ex [.t bbox 1.2]
5710: 20 30 5d 20 5b 6c 69 6e 64 65 78 20 5b 2e 74 20   0] [lindex [.t 
5720: 62 62 6f 78 20 31 2e 34 5d 20 30 5d 20 5c 0a 09  bbox 1.4] 0] \..
5730: 20 20 20 20 5b 6c 69 6e 64 65 78 20 5b 2e 74 20      [lindex [.t 
5740: 62 62 6f 78 20 31 2e 36 5d 20 30 5d 20 5b 6c 69  bbox 1.6] 0] [li
5750: 6e 64 65 78 20 5b 2e 74 20 62 62 6f 78 20 31 2e  ndex [.t bbox 1.
5760: 38 5d 20 30 5d 0a 7d 20 5b 6c 69 73 74 20 5b 65  8] 0].} [list [e
5770: 78 70 72 20 7b 24 70 61 64 78 2b 31 39 2a 24 66  xpr {$padx+19*$f
5780: 69 78 65 64 57 69 64 74 68 2d 39 30 7d 5d 20 5b  ixedWidth-90}] [
5790: 65 78 70 72 20 7b 24 70 61 64 78 2b 31 39 2a 24  expr {$padx+19*$
57a0: 66 69 78 65 64 57 69 64 74 68 2d 36 30 7d 5d 20  fixedWidth-60}] 
57b0: 5b 65 78 70 72 20 7b 24 70 61 64 78 2b 31 39 2a  [expr {$padx+19*
57c0: 24 66 69 78 65 64 57 69 64 74 68 2d 33 30 7d 5d  $fixedWidth-30}]
57d0: 20 5b 65 78 70 72 20 7b 24 70 61 64 78 2b 31 39   [expr {$padx+19
57e0: 2a 24 66 69 78 65 64 57 69 64 74 68 7d 5d 5d 0a  *$fixedWidth}]].
57f0: 0a 74 65 73 74 20 74 65 78 74 44 69 73 70 2d 32  .test textDisp-2
5800: 2e 32 37 20 7b 4c 61 79 6f 75 74 44 4c 69 6e 65  .27 {LayoutDLine
5810: 2c 20 74 61 62 73 2c 20 63 61 6c 6c 69 6e 67 20  , tabs, calling 
5820: 41 64 6a 75 73 74 46 6f 72 54 61 62 7d 20 7b 0a  AdjustForTab} {.
5830: 20 20 20 20 2e 74 20 64 65 6c 65 74 65 20 31 2e      .t delete 1.
5840: 30 20 65 6e 64 0a 20 20 20 20 2e 74 20 74 61 67  0 end.    .t tag
5850: 20 64 65 6c 65 74 65 20 78 0a 20 20 20 20 2e 74   delete x.    .t
5860: 20 74 61 67 20 63 6f 6e 66 69 67 75 72 65 20 78   tag configure x
5870: 20 2d 74 61 62 73 20 5b 6c 69 73 74 20 33 30 20   -tabs [list 30 
5880: 36 30 5d 0a 20 20 20 20 2e 74 20 69 6e 73 65 72  60].    .t inser
5890: 74 20 31 2e 30 20 22 61 5c 74 62 5c 74 63 64 22  t 1.0 "a\tb\tcd"
58a0: 0a 20 20 20 20 2e 74 20 74 61 67 20 61 64 64 20  .    .t tag add 
58b0: 78 20 31 2e 30 20 65 6e 64 0a 20 20 20 20 6c 69  x 1.0 end.    li
58c0: 73 74 20 5b 6c 69 6e 64 65 78 20 5b 2e 74 20 62  st [lindex [.t b
58d0: 62 6f 78 20 31 2e 32 5d 20 30 5d 20 5b 6c 69 6e  box 1.2] 0] [lin
58e0: 64 65 78 20 5b 2e 74 20 62 62 6f 78 20 31 2e 34  dex [.t bbox 1.4
58f0: 5d 20 30 5d 0a 7d 20 5b 6c 69 73 74 20 5b 65 78  ] 0].} [list [ex
5900: 70 72 20 7b 24 70 61 64 78 2b 33 30 7d 5d 20 5b  pr {$padx+30}] [
5910: 65 78 70 72 20 7b 24 70 61 64 78 2b 36 30 7d 5d  expr {$padx+60}]
5920: 5d 0a 0a 74 65 73 74 20 74 65 78 74 44 69 73 70  ]..test textDisp
5930: 2d 32 2e 32 38 20 7b 4c 61 79 6f 75 74 44 4c 69  -2.28 {LayoutDLi
5940: 6e 65 2c 20 74 61 62 73 2c 20 72 75 6e 6e 69 6e  ne, tabs, runnin
5950: 67 20 6f 75 74 20 6f 66 20 73 70 61 63 65 20 69  g out of space i
5960: 6e 20 64 6c 69 6e 65 7d 20 7b 0a 20 20 20 20 2e  n dline} {.    .
5970: 74 20 64 65 6c 65 74 65 20 31 2e 30 20 65 6e 64  t delete 1.0 end
5980: 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20 31  .    .t insert 1
5990: 2e 30 20 22 61 5c 74 62 5c 74 63 5c 74 64 22 0a  .0 "a\tb\tc\td".
59a0: 20 20 20 20 2e 74 20 62 62 6f 78 20 31 2e 36 0a      .t bbox 1.6.
59b0: 7d 20 5b 6c 69 73 74 20 24 70 61 64 78 20 5b 65  } [list $padx [e
59c0: 78 70 72 20 7b 24 70 61 64 79 2b 24 66 69 78 65  xpr {$pady+$fixe
59d0: 64 48 65 69 67 68 74 7d 5d 20 24 66 69 78 65 64  dHeight}] $fixed
59e0: 57 69 64 74 68 20 24 66 69 78 65 64 48 65 69 67  Width $fixedHeig
59f0: 68 74 5d 0a 0a 74 65 73 74 20 74 65 78 74 44 69  ht]..test textDi
5a00: 73 70 2d 32 2e 32 39 20 7b 4c 61 79 6f 75 74 44  sp-2.29 {LayoutD
5a10: 4c 69 6e 65 2c 20 74 61 62 73 2c 20 72 75 6e 6e  Line, tabs, runn
5a20: 69 6e 67 20 6f 75 74 20 6f 66 20 73 70 61 63 65  ing out of space
5a30: 20 69 6e 20 64 6c 69 6e 65 7d 20 7b 0a 20 20 20   in dline} {.   
5a40: 20 2e 74 20 64 65 6c 65 74 65 20 31 2e 30 20 65   .t delete 1.0 e
5a50: 6e 64 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74  nd.    .t insert
5a60: 20 31 2e 30 20 22 61 5c 74 78 5c 74 61 62 63 64   1.0 "a\tx\tabcd
5a70: 22 0a 20 20 20 20 2e 74 20 62 62 6f 78 20 31 2e  ".    .t bbox 1.
5a80: 34 0a 7d 20 5b 6c 69 73 74 20 5b 65 78 70 72 20  4.} [list [expr 
5a90: 7b 24 70 61 64 78 2b 31 36 2a 24 66 69 78 65 64  {$padx+16*$fixed
5aa0: 57 69 64 74 68 7d 5d 20 24 70 61 64 79 20 24 66  Width}] $pady $f
5ab0: 69 78 65 64 57 69 64 74 68 20 24 66 69 78 65 64  ixedWidth $fixed
5ac0: 48 65 69 67 68 74 5d 0a 0a 74 65 73 74 20 74 65  Height]..test te
5ad0: 78 74 44 69 73 70 2d 32 2e 33 30 20 7b 4c 61 79  xtDisp-2.30 {Lay
5ae0: 6f 75 74 44 4c 69 6e 65 2c 20 74 61 62 73 2c 20  outDLine, tabs, 
5af0: 72 75 6e 6e 69 6e 67 20 6f 75 74 20 6f 66 20 73  running out of s
5b00: 70 61 63 65 20 69 6e 20 64 6c 69 6e 65 7d 20 7b  pace in dline} {
5b10: 0a 20 20 20 20 2e 74 20 64 65 6c 65 74 65 20 31  .    .t delete 1
5b20: 2e 30 20 65 6e 64 0a 20 20 20 20 2e 74 20 69 6e  .0 end.    .t in
5b30: 73 65 72 74 20 31 2e 30 20 22 61 5c 74 78 5c 74  sert 1.0 "a\tx\t
5b40: 61 62 63 22 0a 20 20 20 20 2e 74 20 62 62 6f 78  abc".    .t bbox
5b50: 20 31 2e 34 0a 7d 20 5b 6c 69 73 74 20 5b 65 78   1.4.} [list [ex
5b60: 70 72 20 7b 24 70 61 64 78 2b 31 36 2a 24 66 69  pr {$padx+16*$fi
5b70: 78 65 64 57 69 64 74 68 7d 5d 20 24 70 61 64 79  xedWidth}] $pady
5b80: 20 24 66 69 78 65 64 57 69 64 74 68 20 24 66 69   $fixedWidth $fi
5b90: 78 65 64 48 65 69 67 68 74 5d 0a 0a 74 65 73 74  xedHeight]..test
5ba0: 20 74 65 78 74 44 69 73 70 2d 33 2e 31 20 7b 64   textDisp-3.1 {d
5bb0: 69 66 66 65 72 65 6e 74 20 63 68 61 72 61 63 74  ifferent charact
5bc0: 65 72 20 73 69 7a 65 73 7d 20 7b 0a 20 20 20 20  er sizes} {.    
5bd0: 2e 74 20 63 6f 6e 66 69 67 75 72 65 20 2d 77 72  .t configure -wr
5be0: 61 70 20 77 6f 72 64 0a 20 20 20 20 2e 74 20 64  ap word.    .t d
5bf0: 65 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a 20 20  elete 1.0 end.  
5c00: 20 20 2e 74 20 69 6e 73 65 72 74 20 65 6e 64 20    .t insert end 
5c10: 22 53 6f 6d 65 20 73 61 6d 70 6c 65 20 74 65 78  "Some sample tex
5c20: 74 2c 20 69 6e 63 6c 75 64 69 6e 67 20 62 6f 74  t, including bot
5c30: 68 20 6c 61 72 67 65 5c 6e 22 0a 20 20 20 20 2e  h large\n".    .
5c40: 74 20 69 6e 73 65 72 74 20 65 6e 64 20 22 63 68  t insert end "ch
5c50: 61 72 61 63 74 65 72 73 20 61 6e 64 5c 6e 73 6d  aracters and\nsm
5c60: 61 6c 6c 5c 6e 22 0a 20 20 20 20 2e 74 20 69 6e  all\n".    .t in
5c70: 73 65 72 74 20 65 6e 64 20 22 61 62 63 5c 6e 64  sert end "abc\nd
5c80: 5c 6e 65 5c 6e 66 67 68 69 6a 22 0a 20 20 20 20  \ne\nfghij".    
5c90: 2e 74 20 74 61 67 20 61 64 64 20 62 69 67 66 69  .t tag add bigfi
5ca0: 78 20 31 2e 35 20 31 2e 31 30 0a 20 20 20 20 2e  x 1.5 1.10.    .
5cb0: 74 20 74 61 67 20 61 64 64 20 62 69 67 66 69 78  t tag add bigfix
5cc0: 20 32 2e 31 31 20 32 2e 31 34 0a 20 20 20 20 6c   2.11 2.14.    l
5cd0: 69 73 74 20 5b 2e 74 20 62 62 6f 78 20 31 2e 31  ist [.t bbox 1.1
5ce0: 5d 20 5b 2e 74 20 62 62 6f 78 20 31 2e 36 5d 20  ] [.t bbox 1.6] 
5cf0: 5b 2e 74 20 64 6c 69 6e 65 69 6e 66 6f 20 31 2e  [.t dlineinfo 1.
5d00: 30 5d 20 5b 2e 74 20 64 6c 69 6e 65 69 6e 66 6f  0] [.t dlineinfo
5d10: 20 33 2e 30 5d 0a 7d 20 5b 6c 69 73 74 20 5c 0a   3.0].} [list \.
5d20: 20 20 20 20 5b 6c 69 73 74 20 5b 65 78 70 72 20      [list [expr 
5d30: 7b 24 70 61 64 78 2b 24 66 69 78 65 64 57 69 64  {$padx+$fixedWid
5d40: 74 68 7d 5d 20 5b 65 78 70 72 20 7b 24 70 61 64  th}] [expr {$pad
5d50: 79 2b 24 62 69 67 46 69 78 65 64 41 73 63 65 6e  y+$bigFixedAscen
5d60: 74 44 69 66 66 7d 5d 20 24 66 69 78 65 64 57 69  tDiff}] $fixedWi
5d70: 64 74 68 20 24 66 69 78 65 64 48 65 69 67 68 74  dth $fixedHeight
5d80: 5d 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20 5b 65  ] \.    [list [e
5d90: 78 70 72 20 7b 24 70 61 64 78 2b 35 2a 24 66 69  xpr {$padx+5*$fi
5da0: 78 65 64 57 69 64 74 68 2b 24 62 69 67 46 69 78  xedWidth+$bigFix
5db0: 65 64 57 69 64 74 68 7d 5d 20 24 70 61 64 79 20  edWidth}] $pady 
5dc0: 24 62 69 67 46 69 78 65 64 57 69 64 74 68 20 24  $bigFixedWidth $
5dd0: 62 69 67 46 69 78 65 64 48 65 69 67 68 74 5d 20  bigFixedHeight] 
5de0: 5c 0a 20 20 20 20 5b 6c 69 73 74 20 24 70 61 64  \.    [list $pad
5df0: 78 20 24 70 61 64 79 20 5b 65 78 70 72 20 7b 37  x $pady [expr {7
5e00: 2a 24 66 69 78 65 64 57 69 64 74 68 2b 35 2a 24  *$fixedWidth+5*$
5e10: 62 69 67 46 69 78 65 64 57 69 64 74 68 7d 5d 20  bigFixedWidth}] 
5e20: 24 62 69 67 46 69 78 65 64 48 65 69 67 68 74 20  $bigFixedHeight 
5e30: 24 62 69 67 46 69 78 65 64 41 73 63 65 6e 74 5d  $bigFixedAscent]
5e40: 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20 24 70 61   \.    [list $pa
5e50: 64 78 20 5b 65 78 70 72 20 7b 24 70 61 64 79 2b  dx [expr {$pady+
5e60: 32 2a 24 66 69 78 65 64 48 65 69 67 68 74 2b 32  2*$fixedHeight+2
5e70: 2a 24 62 69 67 46 69 78 65 64 48 65 69 67 68 74  *$bigFixedHeight
5e80: 7d 5d 20 5b 65 78 70 72 20 7b 35 2a 24 66 69 78  }] [expr {5*$fix
5e90: 65 64 57 69 64 74 68 7d 5d 20 24 66 69 78 65 64  edWidth}] $fixed
5ea0: 48 65 69 67 68 74 20 24 66 69 78 65 64 41 73 63  Height $fixedAsc
5eb0: 65 6e 74 5d 5d 0a 0a 2e 74 20 63 6f 6e 66 69 67  ent]]...t config
5ec0: 75 72 65 20 2d 77 72 61 70 20 63 68 61 72 0a 0a  ure -wrap char..
5ed0: 74 65 73 74 20 74 65 78 74 44 69 73 70 2d 34 2e  test textDisp-4.
5ee0: 31 20 7b 55 70 64 61 74 65 44 69 73 70 6c 61 79  1 {UpdateDisplay
5ef0: 49 6e 66 6f 2c 20 62 61 73 69 63 7d 20 7b 0a 20  Info, basic} {. 
5f00: 20 20 20 2e 74 20 64 65 6c 65 74 65 20 31 2e 30     .t delete 1.0
5f10: 20 65 6e 64 0a 20 20 20 20 2e 74 20 69 6e 73 65   end.    .t inse
5f20: 72 74 20 65 6e 64 20 22 4c 69 6e 65 20 31 5c 6e  rt end "Line 1\n
5f30: 4c 69 6e 65 20 32 5c 6e 4c 69 6e 65 20 33 5c 6e  Line 2\nLine 3\n
5f40: 22 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20 20  ".    update.   
5f50: 20 2e 74 20 64 65 6c 65 74 65 20 32 2e 30 20 32   .t delete 2.0 2
5f60: 2e 65 6e 64 0a 20 20 20 20 75 70 64 61 74 65 0a  .end.    update.
5f70: 20 20 20 20 73 65 74 20 72 65 73 20 24 74 6b 5f      set res $tk_
5f80: 74 65 78 74 52 65 6c 61 79 6f 75 74 0a 20 20 20  textRelayout.   
5f90: 20 2e 74 20 69 6e 73 65 72 74 20 32 2e 30 20 22   .t insert 2.0 "
5fa0: 4e 65 77 20 4c 69 6e 65 20 32 22 0a 20 20 20 20  New Line 2".    
5fb0: 75 70 64 61 74 65 0a 20 20 20 20 6c 61 70 70 65  update.    lappe
5fc0: 6e 64 20 72 65 73 20 5b 2e 74 20 62 62 6f 78 20  nd res [.t bbox 
5fd0: 31 2e 30 5d 20 5b 2e 74 20 62 62 6f 78 20 32 2e  1.0] [.t bbox 2.
5fe0: 30 5d 20 5b 2e 74 20 62 62 6f 78 20 33 2e 30 5d  0] [.t bbox 3.0]
5ff0: 20 24 74 6b 5f 74 65 78 74 52 65 6c 61 79 6f 75   $tk_textRelayou
6000: 74 0a 7d 20 5b 6c 69 73 74 20 32 2e 30 20 5c 0a  t.} [list 2.0 \.
6010: 20 20 20 20 5b 6c 69 73 74 20 24 70 61 64 78 20      [list $padx 
6020: 24 70 61 64 79 20 24 66 69 78 65 64 57 69 64 74  $pady $fixedWidt
6030: 68 20 24 66 69 78 65 64 48 65 69 67 68 74 5d 20  h $fixedHeight] 
6040: 5c 0a 20 20 20 20 5b 6c 69 73 74 20 24 70 61 64  \.    [list $pad
6050: 78 20 5b 65 78 70 72 20 7b 24 70 61 64 79 2b 24  x [expr {$pady+$
6060: 66 69 78 65 64 48 65 69 67 68 74 7d 5d 20 24 66  fixedHeight}] $f
6070: 69 78 65 64 57 69 64 74 68 20 24 66 69 78 65 64  ixedWidth $fixed
6080: 48 65 69 67 68 74 5d 20 5c 0a 20 20 20 20 5b 6c  Height] \.    [l
6090: 69 73 74 20 24 70 61 64 78 20 5b 65 78 70 72 20  ist $padx [expr 
60a0: 7b 24 70 61 64 79 2b 32 2a 24 66 69 78 65 64 48  {$pady+2*$fixedH
60b0: 65 69 67 68 74 7d 5d 20 24 66 69 78 65 64 57 69  eight}] $fixedWi
60c0: 64 74 68 20 24 66 69 78 65 64 48 65 69 67 68 74  dth $fixedHeight
60d0: 5d 20 32 2e 30 5d 0a 0a 74 65 73 74 20 74 65 78  ] 2.0]..test tex
60e0: 74 44 69 73 70 2d 34 2e 32 20 7b 55 70 64 61 74  tDisp-4.2 {Updat
60f0: 65 44 69 73 70 6c 61 79 49 6e 66 6f 2c 20 72 65  eDisplayInfo, re
6100: 2d 75 73 65 20 74 61 69 6c 20 6f 66 20 74 65 78  -use tail of tex
6110: 74 20 6c 69 6e 65 7d 20 7b 0a 20 20 20 20 2e 74  t line} {.    .t
6120: 20 64 65 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a   delete 1.0 end.
6130: 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20 65 6e      .t insert en
6140: 64 20 22 4c 69 6e 65 20 31 5c 6e 4c 69 6e 65 20  d "Line 1\nLine 
6150: 32 20 69 73 20 73 6f 20 6c 6f 6e 67 20 74 68 61  2 is so long tha
6160: 74 20 69 74 20 77 72 61 70 73 20 61 72 6f 75 6e  t it wraps aroun
6170: 64 5c 6e 4c 69 6e 65 20 33 22 0a 20 20 20 20 75  d\nLine 3".    u
6180: 70 64 61 74 65 0a 20 20 20 20 2e 74 20 6d 61 72  pdate.    .t mar
6190: 6b 20 73 65 74 20 78 20 32 2e 32 31 0a 20 20 20  k set x 2.21.   
61a0: 20 2e 74 20 64 65 6c 65 74 65 20 32 2e 32 0a 20   .t delete 2.2. 
61b0: 20 20 20 75 70 64 61 74 65 0a 20 20 20 20 73 65     update.    se
61c0: 74 20 72 65 73 20 24 74 6b 5f 74 65 78 74 52 65  t res $tk_textRe
61d0: 6c 61 79 6f 75 74 0a 20 20 20 20 2e 74 20 69 6e  layout.    .t in
61e0: 73 65 72 74 20 32 2e 30 20 58 0a 20 20 20 20 75  sert 2.0 X.    u
61f0: 70 64 61 74 65 0a 20 20 20 20 6c 61 70 70 65 6e  pdate.    lappen
6200: 64 20 72 65 73 20 5b 2e 74 20 62 62 6f 78 20 32  d res [.t bbox 2
6210: 2e 30 5d 20 5b 2e 74 20 62 62 6f 78 20 78 5d 20  .0] [.t bbox x] 
6220: 5b 2e 74 20 62 62 6f 78 20 33 2e 30 5d 20 24 74  [.t bbox 3.0] $t
6230: 6b 5f 74 65 78 74 52 65 6c 61 79 6f 75 74 0a 7d  k_textRelayout.}
6240: 20 5b 6c 69 73 74 20 32 2e 30 20 32 2e 32 30 20   [list 2.0 2.20 
6250: 5c 0a 20 20 20 20 5b 6c 69 73 74 20 24 70 61 64  \.    [list $pad
6260: 78 20 5b 65 78 70 72 20 7b 24 70 61 64 79 2b 24  x [expr {$pady+$
6270: 66 69 78 65 64 48 65 69 67 68 74 7d 5d 20 24 66  fixedHeight}] $f
6280: 69 78 65 64 57 69 64 74 68 20 24 66 69 78 65 64  ixedWidth $fixed
6290: 48 65 69 67 68 74 5d 20 5c 0a 20 20 20 20 5b 6c  Height] \.    [l
62a0: 69 73 74 20 5b 65 78 70 72 20 7b 24 70 61 64 78  ist [expr {$padx
62b0: 2b 24 66 69 78 65 64 57 69 64 74 68 7d 5d 20 5b  +$fixedWidth}] [
62c0: 65 78 70 72 20 7b 24 70 61 64 79 2b 32 2a 24 66  expr {$pady+2*$f
62d0: 69 78 65 64 48 65 69 67 68 74 7d 5d 20 24 66 69  ixedHeight}] $fi
62e0: 78 65 64 57 69 64 74 68 20 24 66 69 78 65 64 48  xedWidth $fixedH
62f0: 65 69 67 68 74 5d 20 5c 0a 20 20 20 20 5b 6c 69  eight] \.    [li
6300: 73 74 20 24 70 61 64 78 20 5b 65 78 70 72 20 7b  st $padx [expr {
6310: 24 70 61 64 79 2b 33 2a 24 66 69 78 65 64 48 65  $pady+3*$fixedHe
6320: 69 67 68 74 7d 5d 20 24 66 69 78 65 64 57 69 64  ight}] $fixedWid
6330: 74 68 20 24 66 69 78 65 64 48 65 69 67 68 74 5d  th $fixedHeight]
6340: 20 5c 0a 20 20 20 20 7b 32 2e 30 20 32 2e 32 30   \.    {2.0 2.20
6350: 7d 5d 0a 0a 74 65 73 74 20 74 65 78 74 44 69 73  }]..test textDis
6360: 70 2d 34 2e 33 20 7b 55 70 64 61 74 65 44 69 73  p-4.3 {UpdateDis
6370: 70 6c 61 79 49 6e 66 6f 2c 20 74 61 69 6c 20 6f  playInfo, tail o
6380: 66 20 74 65 78 74 20 6c 69 6e 65 20 73 68 69 66  f text line shif
6390: 74 73 7d 20 7b 0a 20 20 20 20 2e 74 20 64 65 6c  ts} {.    .t del
63a0: 65 74 65 20 31 2e 30 20 65 6e 64 0a 20 20 20 20  ete 1.0 end.    
63b0: 2e 74 20 69 6e 73 65 72 74 20 65 6e 64 20 22 4c  .t insert end "L
63c0: 69 6e 65 20 31 5c 6e 4c 69 6e 65 20 32 20 69 73  ine 1\nLine 2 is
63d0: 20 73 6f 20 6c 6f 6e 67 20 74 68 61 74 20 69 74   so long that it
63e0: 20 77 72 61 70 73 20 61 72 6f 75 6e 64 5c 6e 4c   wraps around\nL
63f0: 69 6e 65 20 33 22 0a 20 20 20 20 75 70 64 61 74  ine 3".    updat
6400: 65 0a 20 20 20 20 2e 74 20 6d 61 72 6b 20 73 65  e.    .t mark se
6410: 74 20 78 20 32 2e 32 31 0a 20 20 20 20 2e 74 20  t x 2.21.    .t 
6420: 64 65 6c 65 74 65 20 32 2e 32 0a 20 20 20 20 75  delete 2.2.    u
6430: 70 64 61 74 65 0a 20 20 20 20 6c 69 73 74 20 5b  pdate.    list [
6440: 2e 74 20 62 62 6f 78 20 32 2e 30 5d 20 5b 2e 74  .t bbox 2.0] [.t
6450: 20 62 62 6f 78 20 78 5d 20 5b 2e 74 20 62 62 6f   bbox x] [.t bbo
6460: 78 20 33 2e 30 5d 20 24 74 6b 5f 74 65 78 74 52  x 3.0] $tk_textR
6470: 65 6c 61 79 6f 75 74 0a 7d 20 5b 6c 69 73 74 20  elayout.} [list 
6480: 5c 0a 20 20 20 20 5b 6c 69 73 74 20 24 70 61 64  \.    [list $pad
6490: 78 20 5b 65 78 70 72 20 7b 24 70 61 64 79 2b 24  x [expr {$pady+$
64a0: 66 69 78 65 64 48 65 69 67 68 74 7d 5d 20 24 66  fixedHeight}] $f
64b0: 69 78 65 64 57 69 64 74 68 20 24 66 69 78 65 64  ixedWidth $fixed
64c0: 48 65 69 67 68 74 5d 20 5c 0a 20 20 20 20 5b 6c  Height] \.    [l
64d0: 69 73 74 20 24 70 61 64 78 20 5b 65 78 70 72 20  ist $padx [expr 
64e0: 7b 24 70 61 64 79 2b 32 2a 24 66 69 78 65 64 48  {$pady+2*$fixedH
64f0: 65 69 67 68 74 7d 5d 20 24 66 69 78 65 64 57 69  eight}] $fixedWi
6500: 64 74 68 20 24 66 69 78 65 64 48 65 69 67 68 74  dth $fixedHeight
6510: 5d 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20 24 70  ] \.    [list $p
6520: 61 64 78 20 5b 65 78 70 72 20 7b 24 70 61 64 79  adx [expr {$pady
6530: 2b 33 2a 24 66 69 78 65 64 48 65 69 67 68 74 7d  +3*$fixedHeight}
6540: 5d 20 24 66 69 78 65 64 57 69 64 74 68 20 24 66  ] $fixedWidth $f
6550: 69 78 65 64 48 65 69 67 68 74 5d 20 5c 0a 20 20  ixedHeight] \.  
6560: 20 20 7b 32 2e 30 20 32 2e 32 30 7d 5d 0a 2e 74    {2.0 2.20}]..t
6570: 20 6d 61 72 6b 20 75 6e 73 65 74 20 78 0a 0a 74   mark unset x..t
6580: 65 73 74 20 74 65 78 74 44 69 73 70 2d 34 2e 34  est textDisp-4.4
6590: 20 7b 55 70 64 61 74 65 44 69 73 70 6c 61 79 49   {UpdateDisplayI
65a0: 6e 66 6f 2c 20 77 72 61 70 2d 6d 6f 64 65 20 22  nfo, wrap-mode "
65b0: 6e 6f 6e 65 22 7d 20 7b 0a 20 20 20 20 2e 74 20  none"} {.    .t 
65c0: 63 6f 6e 66 69 67 75 72 65 20 2d 77 72 61 70 20  configure -wrap 
65d0: 6e 6f 6e 65 0a 20 20 20 20 2e 74 20 64 65 6c 65  none.    .t dele
65e0: 74 65 20 31 2e 30 20 65 6e 64 0a 20 20 20 20 2e  te 1.0 end.    .
65f0: 74 20 69 6e 73 65 72 74 20 65 6e 64 20 22 4c 69  t insert end "Li
6600: 6e 65 20 31 5c 6e 4c 69 6e 65 20 32 20 69 73 20  ne 1\nLine 2 is 
6610: 73 6f 20 6c 6f 6e 67 20 74 68 61 74 20 69 74 20  so long that it 
6620: 77 72 61 70 73 20 61 72 6f 75 6e 64 5c 6e 4c 69  wraps around\nLi
6630: 6e 65 20 33 22 0a 20 20 20 20 75 70 64 61 74 65  ne 3".    update
6640: 0a 20 20 20 20 6c 69 73 74 20 5b 2e 74 20 62 62  .    list [.t bb
6650: 6f 78 20 32 2e 30 5d 20 5b 2e 74 20 62 62 6f 78  ox 2.0] [.t bbox
6660: 20 32 2e 32 35 5d 20 5b 2e 74 20 62 62 6f 78 20   2.25] [.t bbox 
6670: 33 2e 30 5d 20 24 74 6b 5f 74 65 78 74 52 65 6c  3.0] $tk_textRel
6680: 61 79 6f 75 74 0a 7d 20 5b 6c 69 73 74 20 5c 0a  ayout.} [list \.
6690: 20 20 20 20 5b 6c 69 73 74 20 24 70 61 64 78 20      [list $padx 
66a0: 5b 65 78 70 72 20 7b 24 70 61 64 79 2b 24 66 69  [expr {$pady+$fi
66b0: 78 65 64 48 65 69 67 68 74 7d 5d 20 24 66 69 78  xedHeight}] $fix
66c0: 65 64 57 69 64 74 68 20 24 66 69 78 65 64 48 65  edWidth $fixedHe
66d0: 69 67 68 74 5d 20 7b 7d 20 5c 0a 20 20 20 20 5b  ight] {} \.    [
66e0: 6c 69 73 74 20 24 70 61 64 78 20 5b 65 78 70 72  list $padx [expr
66f0: 20 7b 24 70 61 64 79 2b 32 2a 24 66 69 78 65 64   {$pady+2*$fixed
6700: 48 65 69 67 68 74 7d 5d 20 24 66 69 78 65 64 57  Height}] $fixedW
6710: 69 64 74 68 20 24 66 69 78 65 64 48 65 69 67 68  idth $fixedHeigh
6720: 74 5d 20 5c 0a 20 20 20 20 7b 31 2e 30 20 32 2e  t] \.    {1.0 2.
6730: 30 20 33 2e 30 7d 5d 0a 0a 74 65 73 74 20 74 65  0 3.0}]..test te
6740: 78 74 44 69 73 70 2d 34 2e 35 20 7b 55 70 64 61  xtDisp-4.5 {Upda
6750: 74 65 44 69 73 70 6c 61 79 49 6e 66 6f 2c 20 74  teDisplayInfo, t
6760: 69 6e 79 20 77 69 6e 64 6f 77 7d 20 7b 0a 20 20  iny window} {.  
6770: 20 20 69 66 20 7b 24 74 63 6c 5f 70 6c 61 74 66    if {$tcl_platf
6780: 6f 72 6d 28 70 6c 61 74 66 6f 72 6d 29 20 3d 3d  orm(platform) ==
6790: 20 22 77 69 6e 64 6f 77 73 22 7d 20 7b 0a 09 77   "windows"} {..w
67a0: 6d 20 6f 76 65 72 72 69 64 65 72 65 64 69 72 65  m overrideredire
67b0: 63 74 20 2e 20 31 0a 20 20 20 20 7d 0a 20 20 20  ct . 1.    }.   
67c0: 20 77 6d 20 67 65 6f 6d 20 2e 20 31 30 33 78 24   wm geom . 103x$
67d0: 68 65 69 67 68 74 0a 20 20 20 20 75 70 64 61 74  height.    updat
67e0: 65 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69 67 75  e.    .t configu
67f0: 72 65 20 2d 77 72 61 70 20 6e 6f 6e 65 0a 20 20  re -wrap none.  
6800: 20 20 2e 74 20 64 65 6c 65 74 65 20 31 2e 30 20    .t delete 1.0 
6810: 65 6e 64 0a 20 20 20 20 2e 74 20 69 6e 73 65 72  end.    .t inser
6820: 74 20 65 6e 64 20 22 4c 69 6e 65 20 31 5c 6e 4c  t end "Line 1\nL
6830: 69 6e 65 20 32 20 69 73 20 73 6f 20 6c 6f 6e 67  ine 2 is so long
6840: 20 74 68 61 74 20 69 74 20 77 72 61 70 73 20 61   that it wraps a
6850: 72 6f 75 6e 64 5c 6e 4c 69 6e 65 20 33 22 0a 20  round\nLine 3". 
6860: 20 20 20 75 70 64 61 74 65 0a 20 20 20 20 6c 69     update.    li
6870: 73 74 20 5b 2e 74 20 62 62 6f 78 20 32 2e 30 5d  st [.t bbox 2.0]
6880: 20 5b 2e 74 20 62 62 6f 78 20 32 2e 31 5d 20 5b   [.t bbox 2.1] [
6890: 2e 74 20 62 62 6f 78 20 33 2e 30 5d 20 24 74 6b  .t bbox 3.0] $tk
68a0: 5f 74 65 78 74 52 65 6c 61 79 6f 75 74 0a 7d 20  _textRelayout.} 
68b0: 5b 6c 69 73 74 20 5c 0a 20 20 20 20 5b 6c 69 73  [list \.    [lis
68c0: 74 20 24 70 61 64 78 20 5b 65 78 70 72 20 7b 24  t $padx [expr {$
68d0: 70 61 64 79 2b 24 66 69 78 65 64 48 65 69 67 68  pady+$fixedHeigh
68e0: 74 7d 5d 20 31 20 24 66 69 78 65 64 48 65 69 67  t}] 1 $fixedHeig
68f0: 68 74 5d 20 5c 0a 20 20 20 20 7b 7d 20 5c 0a 20  ht] \.    {} \. 
6900: 20 20 20 5b 6c 69 73 74 20 24 70 61 64 78 20 5b     [list $padx [
6910: 65 78 70 72 20 7b 24 70 61 64 79 2b 32 2a 24 66  expr {$pady+2*$f
6920: 69 78 65 64 48 65 69 67 68 74 7d 5d 20 31 20 24  ixedHeight}] 1 $
6930: 66 69 78 65 64 48 65 69 67 68 74 5d 20 5c 0a 20  fixedHeight] \. 
6940: 20 20 20 7b 31 2e 30 20 32 2e 30 20 33 2e 30 7d     {1.0 2.0 3.0}
6950: 5d 0a 69 66 20 7b 24 74 63 6c 5f 70 6c 61 74 66  ].if {$tcl_platf
6960: 6f 72 6d 28 70 6c 61 74 66 6f 72 6d 29 20 3d 3d  orm(platform) ==
6970: 20 22 77 69 6e 64 6f 77 73 22 7d 20 7b 0a 20 20   "windows"} {.  
6980: 20 20 77 6d 20 6f 76 65 72 72 69 64 65 72 65 64    wm overridered
6990: 69 72 65 63 74 20 2e 20 30 0a 7d 0a 0a 74 65 73  irect . 0.}..tes
69a0: 74 20 74 65 78 74 44 69 73 70 2d 34 2e 36 20 7b  t textDisp-4.6 {
69b0: 55 70 64 61 74 65 44 69 73 70 6c 61 79 49 6e 66  UpdateDisplayInf
69c0: 6f 2c 20 74 69 6e 79 20 77 69 6e 64 6f 77 7d 20  o, tiny window} 
69d0: 7b 0a 20 20 20 20 23 20 54 68 69 73 20 74 65 73  {.    # This tes
69e0: 74 20 77 61 73 20 66 61 69 6c 69 6e 67 20 6f 6e  t was failing on
69f0: 20 57 69 6e 64 6f 77 73 20 62 65 63 61 75 73 65   Windows because
6a00: 20 74 68 65 20 74 69 74 6c 65 20 62 61 72 20 6f   the title bar o
6a10: 6e 20 2e 0a 20 20 20 20 23 20 77 61 73 20 61 20  n ..    # was a 
6a20: 63 65 72 74 61 69 6e 20 6d 69 6e 69 6d 75 6d 20  certain minimum 
6a30: 73 69 7a 65 20 61 6e 64 20 69 74 20 77 61 73 20  size and it was 
6a40: 69 6e 74 65 72 66 65 72 69 6e 67 20 77 69 74 68  interfering with
6a50: 20 74 68 65 20 73 69 7a 65 0a 20 20 20 20 23 20   the size.    # 
6a60: 72 65 71 75 65 73 74 65 64 2e 20 20 54 68 65 20  requested.  The 
6a70: 22 6f 76 65 72 72 69 64 65 72 65 64 69 72 65 63  "overrideredirec
6a80: 74 22 20 67 65 74 73 20 72 69 64 20 6f 66 20 74  t" gets rid of t
6a90: 68 65 20 74 69 74 6c 65 62 61 72 20 73 6f 0a 20  he titlebar so. 
6aa0: 20 20 20 23 20 74 68 65 20 74 6f 70 6c 65 76 65     # the topleve
6ab0: 6c 20 63 61 6e 20 73 68 72 69 6e 6b 20 74 6f 20  l can shrink to 
6ac0: 74 68 65 20 61 70 70 72 6f 70 72 69 61 74 65 20  the appropriate 
6ad0: 73 69 7a 65 2e 20 20 4f 6e 20 55 6e 69 78 2c 20  size.  On Unix, 
6ae0: 73 65 74 74 69 6e 67 0a 20 20 20 20 23 20 74 68  setting.    # th
6af0: 65 20 6f 76 65 72 72 69 64 65 72 65 64 69 72 65  e overrideredire
6b00: 63 74 20 6f 6e 20 22 2e 22 20 63 6f 6e 66 75 73  ct on "." confus
6b10: 65 73 20 74 68 65 20 77 69 6e 64 6f 77 20 6d 61  es the window ma
6b20: 6e 61 67 65 72 20 61 6e 64 0a 20 20 20 20 23 20  nager and.    # 
6b30: 63 61 75 73 65 73 20 73 75 62 73 65 71 75 65 6e  causes subsequen
6b40: 74 20 74 65 73 74 73 20 74 6f 20 66 61 69 6c 2e  t tests to fail.
6b50: 0a 0a 20 20 20 20 69 66 20 7b 24 74 63 6c 5f 70  ..    if {$tcl_p
6b60: 6c 61 74 66 6f 72 6d 28 70 6c 61 74 66 6f 72 6d  latform(platform
6b70: 29 20 3d 3d 20 22 77 69 6e 64 6f 77 73 22 7d 20  ) == "windows"} 
6b80: 7b 0a 09 77 6d 20 6f 76 65 72 72 69 64 65 72 65  {..wm overridere
6b90: 64 69 72 65 63 74 20 2e 20 31 0a 20 20 20 20 7d  direct . 1.    }
6ba0: 0a 20 20 20 20 66 72 61 6d 65 20 2e 66 32 20 2d  .    frame .f2 -
6bb0: 77 69 64 74 68 20 32 30 20 2d 68 65 69 67 68 74  width 20 -height
6bc0: 20 31 30 30 0a 20 20 20 20 70 61 63 6b 20 2e 66   100.    pack .f
6bd0: 32 20 2d 62 65 66 6f 72 65 20 2e 66 0a 20 20 20  2 -before .f.   
6be0: 20 77 6d 20 67 65 6f 6d 20 2e 20 31 30 33 78 31   wm geom . 103x1
6bf0: 30 33 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20  03.    update.  
6c00: 20 20 2e 74 20 63 6f 6e 66 69 67 75 72 65 20 2d    .t configure -
6c10: 77 72 61 70 20 6e 6f 6e 65 20 2d 62 6f 72 64 65  wrap none -borde
6c20: 72 77 69 64 74 68 20 32 0a 20 20 20 20 2e 74 20  rwidth 2.    .t 
6c30: 64 65 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a 20  delete 1.0 end. 
6c40: 20 20 20 2e 74 20 69 6e 73 65 72 74 20 65 6e 64     .t insert end
6c50: 20 22 4c 69 6e 65 20 31 5c 6e 4c 69 6e 65 20 32   "Line 1\nLine 2
6c60: 20 69 73 20 73 6f 20 6c 6f 6e 67 20 74 68 61 74   is so long that
6c70: 20 69 74 20 77 72 61 70 73 20 61 72 6f 75 6e 64   it wraps around
6c80: 5c 6e 4c 69 6e 65 20 33 22 0a 20 20 20 20 75 70  \nLine 3".    up
6c90: 64 61 74 65 0a 20 20 20 20 73 65 74 20 78 20 5b  date.    set x [
6ca0: 6c 69 73 74 20 5b 2e 74 20 62 62 6f 78 20 31 2e  list [.t bbox 1.
6cb0: 30 5d 20 5b 2e 74 20 62 62 6f 78 20 32 2e 30 5d  0] [.t bbox 2.0]
6cc0: 20 24 74 6b 5f 74 65 78 74 52 65 6c 61 79 6f 75   $tk_textRelayou
6cd0: 74 5d 0a 20 20 20 20 77 6d 20 6f 76 65 72 72 69  t].    wm overri
6ce0: 64 65 72 65 64 69 72 65 63 74 20 2e 20 30 0a 20  deredirect . 0. 
6cf0: 20 20 20 75 70 64 61 74 65 0a 20 20 20 20 73 65     update.    se
6d00: 74 20 78 0a 7d 20 5b 6c 69 73 74 20 5b 6c 69 73  t x.} [list [lis
6d10: 74 20 24 70 61 64 78 20 24 70 61 64 79 20 31 20  t $padx $pady 1 
6d20: 31 5d 20 7b 7d 20 31 2e 30 5d 0a 63 61 74 63 68  1] {} 1.0].catch
6d30: 20 7b 64 65 73 74 72 6f 79 20 2e 66 32 7d 0a 2e   {destroy .f2}..
6d40: 74 20 63 6f 6e 66 69 67 75 72 65 20 2d 62 6f 72  t configure -bor
6d50: 64 65 72 77 69 64 74 68 20 30 20 2d 77 72 61 70  derwidth 0 -wrap
6d60: 20 63 68 61 72 0a 77 6d 20 67 65 6f 6d 20 2e 20   char.wm geom . 
6d70: 7b 7d 0a 75 70 64 61 74 65 0a 0a 73 65 74 20 62  {}.update..set b
6d80: 77 20 5b 2e 74 20 63 67 65 74 20 2d 62 6f 72 64  w [.t cget -bord
6d90: 65 72 77 69 64 74 68 5d 0a 73 65 74 20 70 78 20  erwidth].set px 
6da0: 5b 2e 74 20 63 67 65 74 20 2d 70 61 64 78 5d 0a  [.t cget -padx].
6db0: 73 65 74 20 70 79 20 5b 2e 74 20 63 67 65 74 20  set py [.t cget 
6dc0: 2d 70 61 64 79 5d 0a 73 65 74 20 68 6c 74 68 20  -pady].set hlth 
6dd0: 5b 2e 74 20 63 67 65 74 20 2d 68 69 67 68 6c 69  [.t cget -highli
6de0: 67 68 74 74 68 69 63 6b 6e 65 73 73 5d 0a 73 65  ghtthickness].se
6df0: 74 20 70 61 64 78 20 5b 65 78 70 72 20 7b 24 62  t padx [expr {$b
6e00: 77 2b 24 70 78 2b 24 68 6c 74 68 7d 5d 0a 73 65  w+$px+$hlth}].se
6e10: 74 20 70 61 64 79 20 5b 65 78 70 72 20 7b 24 62  t pady [expr {$b
6e20: 77 2b 24 70 79 2b 24 68 6c 74 68 7d 5d 0a 0a 74  w+$py+$hlth}]..t
6e30: 65 73 74 20 74 65 78 74 44 69 73 70 2d 34 2e 37  est textDisp-4.7
6e40: 20 7b 55 70 64 61 74 65 44 69 73 70 6c 61 79 49   {UpdateDisplayI
6e50: 6e 66 6f 2c 20 66 69 6c 6c 69 6e 67 20 69 6e 20  nfo, filling in 
6e60: 65 78 74 72 61 20 76 65 72 74 69 63 61 6c 20 73  extra vertical s
6e70: 70 61 63 65 7d 20 7b 0a 20 20 20 20 23 20 54 68  pace} {.    # Th
6e80: 69 73 20 74 65 73 74 20 77 61 73 20 66 61 69 6c  is test was fail
6e90: 69 6e 67 20 6f 6e 20 57 69 6e 64 6f 77 73 20 62  ing on Windows b
6ea0: 65 63 61 75 73 65 20 74 68 65 20 74 69 74 6c 65  ecause the title
6eb0: 20 62 61 72 20 6f 6e 20 2e 0a 20 20 20 20 23 20   bar on ..    # 
6ec0: 77 61 73 20 61 20 63 65 72 74 61 69 6e 20 6d 69  was a certain mi
6ed0: 6e 69 6d 75 6d 20 73 69 7a 65 20 61 6e 64 20 69  nimum size and i
6ee0: 74 20 77 61 73 20 69 6e 74 65 72 66 65 72 69 6e  t was interferin
6ef0: 67 20 77 69 74 68 20 74 68 65 20 73 69 7a 65 0a  g with the size.
6f00: 20 20 20 20 23 20 72 65 71 75 65 73 74 65 64 2e      # requested.
6f10: 20 20 54 68 65 20 22 6f 76 65 72 72 69 64 65 72    The "overrider
6f20: 65 64 69 72 65 63 74 22 20 67 65 74 73 20 72 69  edirect" gets ri
6f30: 64 20 6f 66 20 74 68 65 20 74 69 74 6c 65 62 61  d of the titleba
6f40: 72 20 73 6f 0a 20 20 20 20 23 20 74 68 65 20 74  r so.    # the t
6f50: 6f 70 6c 65 76 65 6c 20 63 61 6e 20 73 68 72 69  oplevel can shri
6f60: 6e 6b 20 74 6f 20 74 68 65 20 61 70 70 72 6f 70  nk to the approp
6f70: 72 69 61 74 65 20 73 69 7a 65 2e 20 20 4f 6e 20  riate size.  On 
6f80: 55 6e 69 78 2c 20 73 65 74 74 69 6e 67 0a 20 20  Unix, setting.  
6f90: 20 20 23 20 74 68 65 20 6f 76 65 72 72 69 64 65    # the override
6fa0: 72 65 64 69 72 65 63 74 20 6f 6e 20 22 2e 22 20  redirect on "." 
6fb0: 63 6f 6e 66 75 73 65 73 20 74 68 65 20 77 69 6e  confuses the win
6fc0: 64 6f 77 20 6d 61 6e 61 67 65 72 20 61 6e 64 0a  dow manager and.
6fd0: 20 20 20 20 23 20 63 61 75 73 65 73 20 73 75 62      # causes sub
6fe0: 73 65 71 75 65 6e 74 20 74 65 73 74 73 20 74 6f  sequent tests to
6ff0: 20 66 61 69 6c 2e 0a 0a 20 20 20 20 69 66 20 7b   fail...    if {
7000: 24 74 63 6c 5f 70 6c 61 74 66 6f 72 6d 28 70 6c  $tcl_platform(pl
7010: 61 74 66 6f 72 6d 29 20 3d 3d 20 22 77 69 6e 64  atform) == "wind
7020: 6f 77 73 22 7d 20 7b 0a 09 77 6d 20 6f 76 65 72  ows"} {..wm over
7030: 72 69 64 65 72 65 64 69 72 65 63 74 20 2e 20 31  rideredirect . 1
7040: 0a 20 20 20 20 7d 0a 20 20 20 20 2e 74 20 64 65  .    }.    .t de
7050: 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a 20 20 20  lete 1.0 end.   
7060: 20 2e 74 20 69 6e 73 65 72 74 20 65 6e 64 20 22   .t insert end "
7070: 31 5c 6e 32 5c 6e 33 5c 6e 34 5c 6e 35 5c 6e 36  1\n2\n3\n4\n5\n6
7080: 5c 6e 37 5c 6e 38 5c 6e 39 5c 6e 31 30 5c 6e 31  \n7\n8\n9\n10\n1
7090: 31 5c 6e 31 32 5c 6e 31 33 5c 6e 31 34 5c 6e 31  1\n12\n13\n14\n1
70a0: 35 5c 6e 31 36 5c 6e 31 37 22 0a 20 20 20 20 2e  5\n16\n17".    .
70b0: 74 20 79 76 69 65 77 20 31 2e 30 0a 20 20 20 20  t yview 1.0.    
70c0: 75 70 64 61 74 65 0a 20 20 20 20 2e 74 20 79 76  update.    .t yv
70d0: 69 65 77 20 31 36 2e 30 0a 20 20 20 20 75 70 64  iew 16.0.    upd
70e0: 61 74 65 0a 20 20 20 20 73 65 74 20 78 20 5b 6c  ate.    set x [l
70f0: 69 73 74 20 5b 2e 74 20 69 6e 64 65 78 20 40 30  ist [.t index @0
7100: 2c 30 5d 20 24 74 6b 5f 74 65 78 74 52 65 6c 61  ,0] $tk_textRela
7110: 79 6f 75 74 20 24 74 6b 5f 74 65 78 74 52 65 64  yout $tk_textRed
7120: 72 61 77 5d 0a 20 20 20 20 77 6d 20 6f 76 65 72  raw].    wm over
7130: 72 69 64 65 72 65 64 69 72 65 63 74 20 2e 20 30  rideredirect . 0
7140: 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20 20 20  .    update.    
7150: 73 65 74 20 78 0a 7d 20 7b 38 2e 30 20 7b 31 36  set x.} {8.0 {16
7160: 2e 30 20 31 37 2e 30 20 31 35 2e 30 20 31 34 2e  .0 17.0 15.0 14.
7170: 30 20 31 33 2e 30 20 31 32 2e 30 20 31 31 2e 30  0 13.0 12.0 11.0
7180: 20 31 30 2e 30 20 39 2e 30 20 38 2e 30 7d 20 7b   10.0 9.0 8.0} {
7190: 38 2e 30 20 39 2e 30 20 31 30 2e 30 20 31 31 2e  8.0 9.0 10.0 11.
71a0: 30 20 31 32 2e 30 20 31 33 2e 30 20 31 34 2e 30  0 12.0 13.0 14.0
71b0: 20 31 35 2e 30 20 31 36 2e 30 20 31 37 2e 30 7d   15.0 16.0 17.0}
71c0: 7d 0a 0a 74 65 73 74 20 74 65 78 74 44 69 73 70  }..test textDisp
71d0: 2d 34 2e 38 20 7b 55 70 64 61 74 65 44 69 73 70  -4.8 {UpdateDisp
71e0: 6c 61 79 49 6e 66 6f 2c 20 66 69 6c 6c 69 6e 67  layInfo, filling
71f0: 20 69 6e 20 65 78 74 72 61 20 76 65 72 74 69 63   in extra vertic
7200: 61 6c 20 73 70 61 63 65 7d 20 7b 0a 20 20 20 20  al space} {.    
7210: 2e 74 20 64 65 6c 65 74 65 20 31 2e 30 20 65 6e  .t delete 1.0 en
7220: 64 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20  d.    .t insert 
7230: 65 6e 64 20 22 31 5c 6e 32 5c 6e 33 5c 6e 34 5c  end "1\n2\n3\n4\
7240: 6e 35 5c 6e 36 5c 6e 37 5c 6e 38 5c 6e 39 5c 6e  n5\n6\n7\n8\n9\n
7250: 31 30 5c 6e 31 31 5c 6e 31 32 5c 6e 31 33 5c 6e  10\n11\n12\n13\n
7260: 31 34 5c 6e 31 35 5c 6e 31 36 5c 6e 31 37 22 0a  14\n15\n16\n17".
7270: 20 20 20 20 2e 74 20 79 76 69 65 77 20 31 36 2e      .t yview 16.
7280: 30 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20 20  0.    update.   
7290: 20 2e 74 20 64 65 6c 65 74 65 20 35 2e 30 20 31   .t delete 5.0 1
72a0: 34 2e 30 0a 20 20 20 20 75 70 64 61 74 65 0a 20  4.0.    update. 
72b0: 20 20 20 73 65 74 20 78 20 5b 6c 69 73 74 20 5b     set x [list [
72c0: 2e 74 20 69 6e 64 65 78 20 40 30 2c 30 5d 20 24  .t index @0,0] $
72d0: 74 6b 5f 74 65 78 74 52 65 6c 61 79 6f 75 74 20  tk_textRelayout 
72e0: 24 74 6b 5f 74 65 78 74 52 65 64 72 61 77 5d 0a  $tk_textRedraw].
72f0: 7d 20 7b 31 2e 30 20 7b 35 2e 30 20 34 2e 30 20  } {1.0 {5.0 4.0 
7300: 33 2e 30 20 32 2e 30 20 31 2e 30 7d 20 7b 31 2e  3.0 2.0 1.0} {1.
7310: 30 20 32 2e 30 20 33 2e 30 20 34 2e 30 20 35 2e  0 2.0 3.0 4.0 5.
7320: 30 20 65 6f 66 7d 7d 0a 0a 74 65 73 74 20 74 65  0 eof}}..test te
7330: 78 74 44 69 73 70 2d 34 2e 39 20 7b 55 70 64 61  xtDisp-4.9 {Upda
7340: 74 65 44 69 73 70 6c 61 79 49 6e 66 6f 2c 20 66  teDisplayInfo, f
7350: 69 6c 6c 69 6e 67 20 69 6e 20 65 78 74 72 61 20  illing in extra 
7360: 76 65 72 74 69 63 61 6c 20 73 70 61 63 65 7d 20  vertical space} 
7370: 7b 0a 20 20 20 20 2e 74 20 64 65 6c 65 74 65 20  {.    .t delete 
7380: 31 2e 30 20 65 6e 64 0a 20 20 20 20 2e 74 20 69  1.0 end.    .t i
7390: 6e 73 65 72 74 20 65 6e 64 20 22 31 5c 6e 32 5c  nsert end "1\n2\
73a0: 6e 33 5c 6e 34 5c 6e 35 5c 6e 36 5c 6e 37 5c 6e  n3\n4\n5\n6\n7\n
73b0: 38 5c 6e 39 5c 6e 31 30 5c 6e 31 31 5c 6e 31 32  8\n9\n10\n11\n12
73c0: 5c 6e 31 33 5c 6e 31 34 5c 6e 31 35 5c 6e 31 36  \n13\n14\n15\n16
73d0: 5c 6e 31 37 22 0a 20 20 20 20 2e 74 20 79 76 69  \n17".    .t yvi
73e0: 65 77 20 31 36 2e 30 0a 20 20 20 20 75 70 64 61  ew 16.0.    upda
73f0: 74 65 0a 20 20 20 20 2e 74 20 64 65 6c 65 74 65  te.    .t delete
7400: 20 31 35 2e 30 20 65 6e 64 0a 20 20 20 20 6c 69   15.0 end.    li
7410: 73 74 20 5b 2e 74 20 62 62 6f 78 20 37 2e 30 5d  st [.t bbox 7.0]
7420: 20 5b 2e 74 20 62 62 6f 78 20 31 32 2e 30 5d 0a   [.t bbox 12.0].
7430: 7d 20 5b 6c 69 73 74 20 5c 0a 20 20 20 20 5b 6c  } [list \.    [l
7440: 69 73 74 20 24 70 61 64 78 20 5b 65 78 70 72 20  ist $padx [expr 
7450: 7b 24 70 61 64 79 2b 24 66 69 78 65 64 48 65 69  {$pady+$fixedHei
7460: 67 68 74 7d 5d 20 24 66 69 78 65 64 57 69 64 74  ght}] $fixedWidt
7470: 68 20 24 66 69 78 65 64 48 65 69 67 68 74 5d 20  h $fixedHeight] 
7480: 5c 0a 20 20 20 20 5b 6c 69 73 74 20 24 70 61 64  \.    [list $pad
7490: 78 20 5b 65 78 70 72 20 7b 24 70 61 64 79 2b 36  x [expr {$pady+6
74a0: 2a 24 66 69 78 65 64 48 65 69 67 68 74 7d 5d 20  *$fixedHeight}] 
74b0: 24 66 69 78 65 64 57 69 64 74 68 20 24 66 69 78  $fixedWidth $fix
74c0: 65 64 48 65 69 67 68 74 5d 5d 0a 0a 74 65 73 74  edHeight]]..test
74d0: 20 74 65 78 74 44 69 73 70 2d 34 2e 31 30 20 7b   textDisp-4.10 {
74e0: 55 70 64 61 74 65 44 69 73 70 6c 61 79 49 6e 66  UpdateDisplayInf
74f0: 6f 2c 20 66 69 6c 6c 69 6e 67 20 69 6e 20 65 78  o, filling in ex
7500: 74 72 61 20 76 65 72 74 69 63 61 6c 20 73 70 61  tra vertical spa
7510: 63 65 7d 20 7b 0a 20 20 20 20 2e 74 20 64 65 6c  ce} {.    .t del
7520: 65 74 65 20 31 2e 30 20 65 6e 64 0a 20 20 20 20  ete 1.0 end.    
7530: 2e 74 20 69 6e 73 65 72 74 20 65 6e 64 20 22 31  .t insert end "1
7540: 5c 6e 32 5c 6e 33 5c 6e 34 5c 6e 35 5c 6e 4c 69  \n2\n3\n4\n5\nLi
7550: 6e 65 20 36 20 69 73 20 73 75 63 68 20 61 20 6c  ne 6 is such a l
7560: 6f 6e 67 20 6c 69 6e 65 20 74 68 61 74 20 69 74  ong line that it
7570: 20 77 72 61 70 73 20 61 72 6f 75 6e 64 2e 5c 6e   wraps around.\n
7580: 37 5c 6e 38 5c 6e 39 5c 6e 31 30 5c 6e 31 31 5c  7\n8\n9\n10\n11\
7590: 6e 31 32 5c 6e 31 33 5c 6e 31 34 5c 6e 31 35 5c  n12\n13\n14\n15\
75a0: 6e 31 36 5c 6e 31 37 22 0a 20 20 20 20 2e 74 20  n16\n17".    .t 
75b0: 79 76 69 65 77 20 65 6e 64 0a 20 20 20 20 75 70  yview end.    up
75c0: 64 61 74 65 0a 20 20 20 20 2e 74 20 64 65 6c 65  date.    .t dele
75d0: 74 65 20 31 33 2e 30 20 65 6e 64 0a 20 20 20 20  te 13.0 end.    
75e0: 75 70 64 61 74 65 0a 20 20 20 20 6c 69 73 74 20  update.    list 
75f0: 5b 2e 74 20 69 6e 64 65 78 20 40 30 2c 30 5d 20  [.t index @0,0] 
7600: 24 74 6b 5f 74 65 78 74 52 65 6c 61 79 6f 75 74  $tk_textRelayout
7610: 20 24 74 6b 5f 74 65 78 74 52 65 64 72 61 77 0a   $tk_textRedraw.
7620: 20 20 20 20 23 20 4e 6f 74 65 2c 20 74 68 65 20      # Note, the 
7630: 72 65 73 75 6c 74 73 20 6f 66 20 6f 6c 64 20 74  results of old t
7640: 65 78 74 20 77 69 64 67 65 74 20 69 6d 70 6c 65  ext widget imple
7650: 6d 65 6e 74 61 74 69 6f 6e 20 61 72 65 20 77 72  mentation are wr
7660: 6f 6e 67 2c 20 62 65 63 61 75 73 65 20 69 74 20  ong, because it 
7670: 69 73 0a 20 20 20 20 23 20 6e 6f 74 20 64 65 6c  is.    # not del
7680: 65 74 69 6e 67 20 74 68 65 20 6c 61 73 74 20 6c  eting the last l
7690: 69 6e 65 2c 20 74 68 69 73 20 69 73 20 61 20 62  ine, this is a b
76a0: 75 67 2c 20 73 6f 20 74 68 65 20 72 65 73 75 6c  ug, so the resul
76b0: 74 73 20 68 61 76 65 20 62 65 65 6e 20 63 68 61  ts have been cha
76c0: 6e 67 65 64 2e 0a 7d 20 7b 36 2e 30 20 7b 31 33  nged..} {6.0 {13
76d0: 2e 30 20 37 2e 30 20 36 2e 34 30 20 36 2e 32 30  .0 7.0 6.40 6.20
76e0: 20 36 2e 30 7d 20 7b 36 2e 30 20 36 2e 32 30 20   6.0} {6.0 6.20 
76f0: 36 2e 34 30 20 37 2e 30 20 31 33 2e 30 7d 7d 0a  6.40 7.0 13.0}}.
7700: 0a 74 65 73 74 20 74 65 78 74 44 69 73 70 2d 34  .test textDisp-4
7710: 2e 31 31 20 7b 55 70 64 61 74 65 44 69 73 70 6c  .11 {UpdateDispl
7720: 61 79 49 6e 66 6f 2c 20 66 69 6c 6c 69 6e 67 20  ayInfo, filling 
7730: 69 6e 20 65 78 74 72 61 20 76 65 72 74 69 63 61  in extra vertica
7740: 6c 20 73 70 61 63 65 7d 20 7b 0a 20 20 20 20 2e  l space} {.    .
7750: 74 20 64 65 6c 65 74 65 20 31 2e 30 20 65 6e 64  t delete 1.0 end
7760: 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20 65  .    .t insert e
7770: 6e 64 20 22 31 5c 6e 32 5c 6e 33 5c 6e 34 5c 6e  nd "1\n2\n3\n4\n
7780: 35 5c 6e 4c 69 6e 65 20 36 20 69 73 20 73 75 63  5\nLine 6 is suc
7790: 68 20 61 20 6c 6f 6e 67 20 6c 69 6e 65 20 74 68  h a long line th
77a0: 61 74 20 69 74 20 77 72 61 70 73 20 61 72 6f 75  at it wraps arou
77b0: 6e 64 2c 20 6e 6f 74 20 6f 6e 63 65 20 62 75 74  nd, not once but
77c0: 20 72 65 61 6c 6c 79 20 71 75 69 74 65 20 61 20   really quite a 
77d0: 66 65 77 20 74 69 6d 65 73 2e 5c 6e 37 5c 6e 38  few times.\n7\n8
77e0: 5c 6e 39 5c 6e 31 30 5c 6e 31 31 5c 6e 31 32 5c  \n9\n10\n11\n12\
77f0: 6e 31 33 5c 6e 31 34 5c 6e 31 35 5c 6e 31 36 5c  n13\n14\n15\n16\
7800: 6e 31 37 22 0a 20 20 20 20 2e 74 20 79 76 69 65  n17".    .t yvie
7810: 77 20 65 6e 64 0a 20 20 20 20 75 70 64 61 74 65  w end.    update
7820: 0a 20 20 20 20 2e 74 20 64 65 6c 65 74 65 20 31  .    .t delete 1
7830: 34 2e 30 20 65 6e 64 0a 20 20 20 20 75 70 64 61  4.0 end.    upda
7840: 74 65 0a 20 20 20 20 6c 69 73 74 20 5b 2e 74 20  te.    list [.t 
7850: 69 6e 64 65 78 20 40 30 2c 30 5d 20 24 74 6b 5f  index @0,0] $tk_
7860: 74 65 78 74 52 65 6c 61 79 6f 75 74 20 24 74 6b  textRelayout $tk
7870: 5f 74 65 78 74 52 65 64 72 61 77 0a 7d 20 7b 36  _textRedraw.} {6
7880: 2e 36 30 20 7b 31 34 2e 30 20 37 2e 30 20 36 2e  .60 {14.0 7.0 6.
7890: 38 30 20 36 2e 36 30 7d 20 7b 36 2e 36 30 20 36  80 6.60} {6.60 6
78a0: 2e 38 30 20 37 2e 30 20 31 34 2e 30 7d 7d 0a 0a  .80 7.0 14.0}}..
78b0: 74 65 73 74 20 74 65 78 74 44 69 73 70 2d 34 2e  test textDisp-4.
78c0: 31 32 20 7b 55 70 64 61 74 65 44 69 73 70 6c 61  12 {UpdateDispla
78d0: 79 49 6e 66 6f 2c 20 66 69 6c 6c 69 6e 67 20 69  yInfo, filling i
78e0: 6e 20 65 78 74 72 61 20 76 65 72 74 69 63 61 6c  n extra vertical
78f0: 20 73 70 61 63 65 7d 20 7b 0a 20 20 20 20 2e 74   space} {.    .t
7900: 20 64 65 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a   delete 1.0 end.
7910: 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20 65 6e      .t insert en
7920: 64 20 22 31 5c 6e 32 5c 6e 33 5c 6e 34 5c 6e 35  d "1\n2\n3\n4\n5
7930: 5c 6e 37 5c 6e 38 5c 6e 39 5c 6e 31 30 5c 6e 31  \n7\n8\n9\n10\n1
7940: 31 5c 6e 31 32 5c 6e 31 33 5c 6e 31 34 5c 6e 31  1\n12\n13\n14\n1
7950: 35 5c 6e 31 36 22 0a 20 20 20 20 62 75 74 74 6f  5\n16".    butto
7960: 6e 20 2e 62 20 2d 74 65 78 74 20 22 54 65 73 74  n .b -text "Test
7970: 22 20 2d 62 64 20 32 20 2d 68 69 67 68 6c 69 67  " -bd 2 -highlig
7980: 68 74 74 68 69 63 6b 6e 65 73 73 20 32 0a 20 20  htthickness 2.  
7990: 20 20 2e 74 20 77 69 6e 64 6f 77 20 63 72 65 61    .t window crea
79a0: 74 65 20 33 2e 65 6e 64 20 2d 77 69 6e 64 6f 77  te 3.end -window
79b0: 20 2e 62 0a 20 20 20 20 2e 74 20 79 76 69 65 77   .b.    .t yview
79c0: 20 6d 6f 76 65 74 6f 20 31 0a 20 20 20 20 75 70   moveto 1.    up
79d0: 64 61 74 65 0a 20 20 20 20 2e 74 20 79 76 69 65  date.    .t yvie
79e0: 77 20 6d 6f 76 65 74 6f 20 30 0a 20 20 20 20 75  w moveto 0.    u
79f0: 70 64 61 74 65 0a 20 20 20 20 2e 74 20 79 76 69  pdate.    .t yvi
7a00: 65 77 20 6d 6f 76 65 74 6f 20 31 0a 20 20 20 20  ew moveto 1.    
7a10: 75 70 64 61 74 65 0a 20 20 20 20 77 69 6e 66 6f  update.    winfo
7a20: 20 69 73 6d 61 70 70 65 64 20 2e 62 0a 7d 20 7b   ismapped .b.} {
7a30: 30 7d 0a 2e 74 20 63 6f 6e 66 69 67 75 72 65 20  0}..t configure 
7a40: 2d 77 72 61 70 20 77 6f 72 64 0a 2e 74 20 64 65  -wrap word..t de
7a50: 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a 2e 74 20  lete 1.0 end..t 
7a60: 69 6e 73 65 72 74 20 65 6e 64 20 22 4c 69 6e 65  insert end "Line
7a70: 20 31 5c 6e 4c 69 6e 65 20 32 5c 6e 4c 69 6e 65   1\nLine 2\nLine
7a80: 20 33 5c 6e 4c 69 6e 65 20 34 5c 6e 4c 69 6e 65   3\nLine 4\nLine
7a90: 20 35 5c 6e 4c 69 6e 65 20 36 5c 6e 4c 69 6e 65   5\nLine 6\nLine
7aa0: 20 37 5c 6e 22 0a 2e 74 20 69 6e 73 65 72 74 20   7\n"..t insert 
7ab0: 65 6e 64 20 22 4c 69 6e 65 20 38 5c 6e 4c 69 6e  end "Line 8\nLin
7ac0: 65 20 39 5c 6e 4c 69 6e 65 20 31 30 5c 6e 4c 69  e 9\nLine 10\nLi
7ad0: 6e 65 20 31 31 5c 6e 4c 69 6e 65 20 31 32 5c 6e  ne 11\nLine 12\n
7ae0: 4c 69 6e 65 20 31 33 5c 6e 22 0a 2e 74 20 69 6e  Line 13\n"..t in
7af0: 73 65 72 74 20 65 6e 64 20 22 4c 69 6e 65 20 31  sert end "Line 1
7b00: 34 5c 6e 4c 69 6e 65 20 31 35 5c 6e 4c 69 6e 65  4\nLine 15\nLine
7b10: 20 31 36 22 0a 2e 74 20 74 61 67 20 64 65 6c 65   16"..t tag dele
7b20: 74 65 20 78 0a 2e 74 20 74 61 67 20 63 6f 6e 66  te x..t tag conf
7b30: 69 67 75 72 65 20 78 20 2d 72 65 6c 69 65 66 20  igure x -relief 
7b40: 72 61 69 73 65 64 20 2d 62 6f 72 64 65 72 77 69  raised -borderwi
7b50: 64 74 68 20 32 20 2d 62 61 63 6b 67 72 6f 75 6e  dth 2 -backgroun
7b60: 64 20 77 68 69 74 65 0a 0a 74 65 73 74 20 74 65  d white..test te
7b70: 78 74 44 69 73 70 2d 34 2e 31 33 20 7b 55 70 64  xtDisp-4.13 {Upd
7b80: 61 74 65 44 69 73 70 6c 61 79 49 6e 66 6f 2c 20  ateDisplayInfo, 
7b90: 73 70 65 63 69 61 6c 20 68 61 6e 64 6c 69 6e 67  special handling
7ba0: 20 66 6f 72 20 74 6f 70 2f 62 6f 74 74 6f 6d 20   for top/bottom 
7bb0: 6c 69 6e 65 73 7d 20 7b 0a 20 20 20 20 2e 74 20  lines} {.    .t 
7bc0: 74 61 67 20 61 64 64 20 78 20 31 2e 30 20 65 6e  tag add x 1.0 en
7bd0: 64 0a 20 20 20 20 2e 74 20 79 76 69 65 77 20 31  d.    .t yview 1
7be0: 2e 30 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20  .0.    update.  
7bf0: 20 20 2e 74 20 79 76 69 65 77 20 73 63 72 6f 6c    .t yview scrol
7c00: 6c 20 33 20 75 6e 69 74 73 0a 20 20 20 20 75 70  l 3 units.    up
7c10: 64 61 74 65 0a 20 20 20 20 6c 69 73 74 20 24 74  date.    list $t
7c20: 6b 5f 74 65 78 74 52 65 6c 61 79 6f 75 74 20 24  k_textRelayout $
7c30: 74 6b 5f 74 65 78 74 52 65 64 72 61 77 0a 7d 20  tk_textRedraw.} 
7c40: 7b 7b 31 31 2e 30 20 31 32 2e 30 20 31 33 2e 30  {{11.0 12.0 13.0
7c50: 7d 20 7b 34 2e 30 20 31 30 2e 30 20 31 31 2e 30  } {4.0 10.0 11.0
7c60: 20 31 32 2e 30 20 31 33 2e 30 7d 7d 0a 0a 74 65   12.0 13.0}}..te
7c70: 73 74 20 74 65 78 74 44 69 73 70 2d 34 2e 31 34  st textDisp-4.14
7c80: 20 7b 55 70 64 61 74 65 44 69 73 70 6c 61 79 49   {UpdateDisplayI
7c90: 6e 66 6f 2c 20 73 70 65 63 69 61 6c 20 68 61 6e  nfo, special han
7ca0: 64 6c 69 6e 67 20 66 6f 72 20 74 6f 70 2f 62 6f  dling for top/bo
7cb0: 74 74 6f 6d 20 6c 69 6e 65 73 7d 20 7b 0a 20 20  ttom lines} {.  
7cc0: 20 20 2e 74 20 74 61 67 20 72 65 6d 6f 76 65 20    .t tag remove 
7cd0: 78 20 31 2e 30 20 65 6e 64 0a 20 20 20 20 2e 74  x 1.0 end.    .t
7ce0: 20 79 76 69 65 77 20 31 2e 30 0a 20 20 20 20 75   yview 1.0.    u
7cf0: 70 64 61 74 65 0a 20 20 20 20 2e 74 20 79 76 69  pdate.    .t yvi
7d00: 65 77 20 73 63 72 6f 6c 6c 20 33 20 75 6e 69 74  ew scroll 3 unit
7d10: 73 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20 20  s.    update.   
7d20: 20 6c 69 73 74 20 24 74 6b 5f 74 65 78 74 52 65   list $tk_textRe
7d30: 6c 61 79 6f 75 74 20 24 74 6b 5f 74 65 78 74 52  layout $tk_textR
7d40: 65 64 72 61 77 0a 20 20 20 20 23 20 4e 4f 54 45  edraw.    # NOTE
7d50: 3a 20 6f 6c 64 20 69 6d 70 6c 65 6d 65 6e 74 61  : old implementa
7d60: 74 69 6f 6e 20 67 69 76 65 73 20 74 68 65 20 66  tion gives the f
7d70: 6f 6c 6c 6f 77 69 6e 67 20 72 65 73 75 6c 74 3a  ollowing result:
7d80: 0a 20 20 20 20 23 20 20 20 20 20 7b 31 31 2e 30  .    #     {11.0
7d90: 20 31 32 2e 30 20 31 33 2e 30 7d 20 7b 31 31 2e   12.0 13.0} {11.
7da0: 30 20 31 32 2e 30 20 31 33 2e 30 7d 0a 20 20 20  0 12.0 13.0}.   
7db0: 20 23 20 62 75 74 20 72 65 76 69 73 65 64 20 69   # but revised i
7dc0: 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 68 61  mplementation ha
7dd0: 73 20 61 20 73 6f 70 68 69 73 74 69 63 61 74 65  s a sophisticate
7de0: 64 20 6c 69 6e 65 20 63 61 63 68 69 6e 67 2c 20  d line caching, 
7df0: 73 6f 0a 20 20 20 20 23 20 74 68 65 20 6e 65 77  so.    # the new
7e00: 20 72 65 73 75 6c 74 20 69 73 20 65 6d 70 74 79   result is empty
7e10: 2e 0a 7d 20 7b 7b 7d 20 7b 7d 7d 0a 0a 74 65 73  ..} {{} {}}..tes
7e20: 74 20 74 65 78 74 44 69 73 70 2d 34 2e 31 35 20  t textDisp-4.15 
7e30: 7b 55 70 64 61 74 65 44 69 73 70 6c 61 79 49 6e  {UpdateDisplayIn
7e40: 66 6f 2c 20 73 70 65 63 69 61 6c 20 68 61 6e 64  fo, special hand
7e50: 6c 69 6e 67 20 66 6f 72 20 74 6f 70 2f 62 6f 74  ling for top/bot
7e60: 74 6f 6d 20 6c 69 6e 65 73 7d 20 7b 0a 20 20 20  tom lines} {.   
7e70: 20 2e 74 20 74 61 67 20 61 64 64 20 78 20 31 2e   .t tag add x 1.
7e80: 30 20 65 6e 64 0a 20 20 20 20 2e 74 20 79 76 69  0 end.    .t yvi
7e90: 65 77 20 34 2e 30 0a 20 20 20 20 75 70 64 61 74  ew 4.0.    updat
7ea0: 65 0a 20 20 20 20 2e 74 20 79 76 69 65 77 20 73  e.    .t yview s
7eb0: 63 72 6f 6c 6c 20 2d 32 20 75 6e 69 74 73 0a 20  croll -2 units. 
7ec0: 20 20 20 75 70 64 61 74 65 0a 20 20 20 20 6c 69     update.    li
7ed0: 73 74 20 24 74 6b 5f 74 65 78 74 52 65 6c 61 79  st $tk_textRelay
7ee0: 6f 75 74 20 24 74 6b 5f 74 65 78 74 52 65 64 72  out $tk_textRedr
7ef0: 61 77 0a 7d 20 7b 7b 32 2e 30 20 33 2e 30 7d 20  aw.} {{2.0 3.0} 
7f00: 7b 32 2e 30 20 33 2e 30 20 34 2e 30 20 31 31 2e  {2.0 3.0 4.0 11.
7f10: 30 7d 7d 0a 0a 74 65 73 74 20 74 65 78 74 44 69  0}}..test textDi
7f20: 73 70 2d 34 2e 31 36 20 7b 55 70 64 61 74 65 44  sp-4.16 {UpdateD
7f30: 69 73 70 6c 61 79 49 6e 66 6f 2c 20 73 70 65 63  isplayInfo, spec
7f40: 69 61 6c 20 68 61 6e 64 6c 69 6e 67 20 66 6f 72  ial handling for
7f50: 20 74 6f 70 2f 62 6f 74 74 6f 6d 20 6c 69 6e 65   top/bottom line
7f60: 73 7d 20 7b 0a 20 20 20 20 2e 74 20 74 61 67 20  s} {.    .t tag 
7f70: 72 65 6d 6f 76 65 20 78 20 31 2e 30 20 65 6e 64  remove x 1.0 end
7f80: 0a 20 20 20 20 2e 74 20 79 76 69 65 77 20 34 2e  .    .t yview 4.
7f90: 30 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20 20  0.    update.   
7fa0: 20 2e 74 20 79 76 69 65 77 20 73 63 72 6f 6c 6c   .t yview scroll
7fb0: 20 2d 32 20 75 6e 69 74 73 0a 20 20 20 20 75 70   -2 units.    up
7fc0: 64 61 74 65 0a 20 20 20 20 6c 69 73 74 20 24 74  date.    list $t
7fd0: 6b 5f 74 65 78 74 52 65 6c 61 79 6f 75 74 20 24  k_textRelayout $
7fe0: 74 6b 5f 74 65 78 74 52 65 64 72 61 77 0a 20 20  tk_textRedraw.  
7ff0: 20 20 23 20 4e 4f 54 45 3a 20 6f 6c 64 20 69 6d    # NOTE: old im
8000: 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 67 69 76  plementation giv
8010: 65 73 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  es the following
8020: 20 72 65 73 75 6c 74 3a 0a 20 20 20 20 23 20 20   result:.    #  
8030: 20 20 20 7b 32 2e 30 20 33 2e 30 7d 20 7b 32 2e     {2.0 3.0} {2.
8040: 30 20 33 2e 30 7d 0a 20 20 20 20 23 20 62 75 74  0 3.0}.    # but
8050: 20 72 65 76 69 73 65 64 20 69 6d 70 6c 65 6d 65   revised impleme
8060: 6e 74 61 74 69 6f 6e 20 68 61 73 20 61 20 73 6f  ntation has a so
8070: 70 68 69 73 74 69 63 61 74 65 64 20 6c 69 6e 65  phisticated line
8080: 20 63 61 63 68 69 6e 67 2c 20 73 6f 0a 20 20 20   caching, so.   
8090: 20 23 20 74 68 65 20 6e 65 77 20 72 65 73 75 6c   # the new resul
80a0: 74 20 69 73 20 65 6d 70 74 79 2e 0a 7d 20 7b 7b  t is empty..} {{
80b0: 7d 20 7b 7d 7d 0a 0a 74 65 73 74 20 74 65 78 74  } {}}..test text
80c0: 44 69 73 70 2d 34 2e 31 37 20 7b 55 70 64 61 74  Disp-4.17 {Updat
80d0: 65 44 69 73 70 6c 61 79 49 6e 66 6f 2c 20 68 6f  eDisplayInfo, ho
80e0: 72 69 7a 6f 6e 74 61 6c 20 73 63 72 6f 6c 6c 69  rizontal scrolli
80f0: 6e 67 7d 20 7b 0a 20 20 20 20 2e 74 20 63 6f 6e  ng} {.    .t con
8100: 66 69 67 75 72 65 20 2d 77 72 61 70 20 6e 6f 6e  figure -wrap non
8110: 65 0a 20 20 20 20 2e 74 20 64 65 6c 65 74 65 20  e.    .t delete 
8120: 31 2e 30 20 65 6e 64 0a 20 20 20 20 2e 74 20 69  1.0 end.    .t i
8130: 6e 73 65 72 74 20 65 6e 64 20 22 53 68 6f 72 74  nsert end "Short
8140: 20 6c 69 6e 65 20 31 5c 6e 4c 69 6e 65 20 32 20   line 1\nLine 2 
8150: 69 73 20 6c 6f 6e 67 20 65 6e 6f 75 67 68 20 74  is long enough t
8160: 6f 20 73 63 72 6f 6c 6c 20 68 6f 72 69 7a 6f 6e  o scroll horizon
8170: 74 61 6c 6c 79 22 0a 20 20 20 20 2e 74 20 69 6e  tally".    .t in
8180: 73 65 72 74 20 65 6e 64 20 22 5c 6e 4c 69 6e 65  sert end "\nLine
8190: 20 33 5c 6e 4c 69 6e 65 20 34 22 0a 20 20 20 20   3\nLine 4".    
81a0: 75 70 64 61 74 65 0a 20 20 20 20 2e 74 20 78 76  update.    .t xv
81b0: 69 65 77 20 73 63 72 6f 6c 6c 20 33 20 75 6e 69  iew scroll 3 uni
81c0: 74 73 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20  ts.    update.  
81d0: 20 20 6c 69 73 74 20 24 74 6b 5f 74 65 78 74 52    list $tk_textR
81e0: 65 6c 61 79 6f 75 74 20 24 74 6b 5f 74 65 78 74  elayout $tk_text
81f0: 52 65 64 72 61 77 20 5b 2e 74 20 62 62 6f 78 20  Redraw [.t bbox 
8200: 32 2e 30 5d 20 5b 2e 74 20 62 62 6f 78 20 32 2e  2.0] [.t bbox 2.
8210: 35 5d 20 5c 0a 09 20 20 20 20 5b 2e 74 20 62 62  5] \..    [.t bb
8220: 6f 78 20 32 2e 32 33 5d 0a 7d 20 5b 6c 69 73 74  ox 2.23].} [list
8230: 20 7b 7d 20 7b 31 2e 30 20 32 2e 30 20 33 2e 30   {} {1.0 2.0 3.0
8240: 20 34 2e 30 7d 20 7b 7d 20 5c 0a 20 20 20 20 5b   4.0} {} \.    [
8250: 6c 69 73 74 20 5b 65 78 70 72 20 7b 24 70 61 64  list [expr {$pad
8260: 78 2b 32 2a 24 66 69 78 65 64 57 69 64 74 68 7d  x+2*$fixedWidth}
8270: 5d 20 5b 65 78 70 72 20 7b 24 70 61 64 79 2b 24  ] [expr {$pady+$
8280: 66 69 78 65 64 48 65 69 67 68 74 7d 5d 20 24 66  fixedHeight}] $f
8290: 69 78 65 64 57 69 64 74 68 20 24 66 69 78 65 64  ixedWidth $fixed
82a0: 48 65 69 67 68 74 5d 20 7b 7d 5d 0a 0a 74 65 73  Height] {}]..tes
82b0: 74 20 74 65 78 74 44 69 73 70 2d 34 2e 31 38 20  t textDisp-4.18 
82c0: 7b 55 70 64 61 74 65 44 69 73 70 6c 61 79 49 6e  {UpdateDisplayIn
82d0: 66 6f 2c 20 68 6f 72 69 7a 6f 6e 74 61 6c 20 73  fo, horizontal s
82e0: 63 72 6f 6c 6c 69 6e 67 7d 20 7b 0a 20 20 20 20  crolling} {.    
82f0: 2e 74 20 63 6f 6e 66 69 67 75 72 65 20 2d 77 72  .t configure -wr
8300: 61 70 20 6e 6f 6e 65 0a 20 20 20 20 2e 74 20 64  ap none.    .t d
8310: 65 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a 20 20  elete 1.0 end.  
8320: 20 20 2e 74 20 69 6e 73 65 72 74 20 65 6e 64 20    .t insert end 
8330: 22 53 68 6f 72 74 20 6c 69 6e 65 20 31 5c 6e 4c  "Short line 1\nL
8340: 69 6e 65 20 32 20 69 73 20 6c 6f 6e 67 20 65 6e  ine 2 is long en
8350: 6f 75 67 68 20 74 6f 20 73 63 72 6f 6c 6c 20 68  ough to scroll h
8360: 6f 72 69 7a 6f 6e 74 61 6c 6c 79 22 0a 20 20 20  orizontally".   
8370: 20 2e 74 20 69 6e 73 65 72 74 20 65 6e 64 20 22   .t insert end "
8380: 5c 6e 4c 69 6e 65 20 33 5c 6e 4c 69 6e 65 20 34  \nLine 3\nLine 4
8390: 22 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20 20  ".    update.   
83a0: 20 2e 74 20 78 76 69 65 77 20 73 63 72 6f 6c 6c   .t xview scroll
83b0: 20 31 30 30 20 75 6e 69 74 73 0a 20 20 20 20 75   100 units.    u
83c0: 70 64 61 74 65 0a 20 20 20 20 6c 69 73 74 20 24  pdate.    list $
83d0: 74 6b 5f 74 65 78 74 52 65 6c 61 79 6f 75 74 20  tk_textRelayout 
83e0: 24 74 6b 5f 74 65 78 74 52 65 64 72 61 77 20 5b  $tk_textRedraw [
83f0: 2e 74 20 62 62 6f 78 20 32 2e 32 35 5d 0a 7d 20  .t bbox 2.25].} 
8400: 5b 6c 69 73 74 20 7b 7d 20 7b 31 2e 30 20 32 2e  [list {} {1.0 2.
8410: 30 20 33 2e 30 20 34 2e 30 7d 20 5c 0a 20 20 20  0 3.0 4.0} \.   
8420: 20 5b 6c 69 73 74 20 5b 65 78 70 72 20 7b 24 70   [list [expr {$p
8430: 61 64 78 2b 24 66 69 78 65 64 57 69 64 74 68 7d  adx+$fixedWidth}
8440: 5d 20 5b 65 78 70 72 20 7b 24 70 61 64 79 2b 24  ] [expr {$pady+$
8450: 66 69 78 65 64 48 65 69 67 68 74 7d 5d 20 24 66  fixedHeight}] $f
8460: 69 78 65 64 57 69 64 74 68 20 24 66 69 78 65 64  ixedWidth $fixed
8470: 48 65 69 67 68 74 5d 5d 0a 0a 74 65 73 74 20 74  Height]]..test t
8480: 65 78 74 44 69 73 70 2d 34 2e 31 39 20 7b 55 70  extDisp-4.19 {Up
8490: 64 61 74 65 44 69 73 70 6c 61 79 49 6e 66 6f 2c  dateDisplayInfo,
84a0: 20 68 6f 72 69 7a 6f 6e 74 61 6c 20 73 63 72 6f   horizontal scro
84b0: 6c 6c 69 6e 67 7d 20 7b 0a 20 20 20 20 2e 74 20  lling} {.    .t 
84c0: 63 6f 6e 66 69 67 75 72 65 20 2d 77 72 61 70 20  configure -wrap 
84d0: 6e 6f 6e 65 0a 20 20 20 20 2e 74 20 64 65 6c 65  none.    .t dele
84e0: 74 65 20 31 2e 30 20 65 6e 64 0a 20 20 20 20 2e  te 1.0 end.    .
84f0: 74 20 69 6e 73 65 72 74 20 65 6e 64 20 22 53 68  t insert end "Sh
8500: 6f 72 74 20 6c 69 6e 65 20 31 5c 6e 4c 69 6e 65  ort line 1\nLine
8510: 20 32 20 69 73 20 6c 6f 6e 67 20 65 6e 6f 75 67   2 is long enoug
8520: 68 20 74 6f 20 73 63 72 6f 6c 6c 20 68 6f 72 69  h to scroll hori
8530: 7a 6f 6e 74 61 6c 6c 79 22 0a 20 20 20 20 2e 74  zontally".    .t
8540: 20 69 6e 73 65 72 74 20 65 6e 64 20 22 5c 6e 4c   insert end "\nL
8550: 69 6e 65 20 33 5c 6e 4c 69 6e 65 20 34 22 0a 20  ine 3\nLine 4". 
8560: 20 20 20 75 70 64 61 74 65 0a 20 20 20 20 2e 74     update.    .t
8570: 20 78 76 69 65 77 20 6d 6f 76 65 74 6f 20 30 0a   xview moveto 0.
8580: 20 20 20 20 2e 74 20 78 76 69 65 77 20 73 63 72      .t xview scr
8590: 6f 6c 6c 20 31 30 20 75 6e 69 74 73 0a 20 20 20  oll 10 units.   
85a0: 20 75 70 64 61 74 65 0a 20 20 20 20 6c 69 73 74   update.    list
85b0: 20 24 74 6b 5f 74 65 78 74 52 65 6c 61 79 6f 75   $tk_textRelayou
85c0: 74 20 24 74 6b 5f 74 65 78 74 52 65 64 72 61 77  t $tk_textRedraw
85d0: 20 5b 2e 74 20 62 62 6f 78 20 32 2e 35 5d 20 5b   [.t bbox 2.5] [
85e0: 2e 74 20 62 62 6f 78 20 32 2e 31 31 5d 0a 7d 20  .t bbox 2.11].} 
85f0: 5b 6c 69 73 74 20 7b 7d 20 7b 31 2e 30 20 32 2e  [list {} {1.0 2.
8600: 30 20 33 2e 30 20 34 2e 30 7d 20 7b 7d 20 5c 0a  0 3.0 4.0} {} \.
8610: 20 20 20 20 5b 6c 69 73 74 20 5b 65 78 70 72 20      [list [expr 
8620: 7b 24 70 61 64 78 2b 24 66 69 78 65 64 57 69 64  {$padx+$fixedWid
8630: 74 68 7d 5d 20 5b 65 78 70 72 20 7b 24 70 61 64  th}] [expr {$pad
8640: 79 2b 24 66 69 78 65 64 48 65 69 67 68 74 7d 5d  y+$fixedHeight}]
8650: 20 24 66 69 78 65 64 57 69 64 74 68 20 24 66 69   $fixedWidth $fi
8660: 78 65 64 48 65 69 67 68 74 5d 5d 0a 0a 74 65 73  xedHeight]]..tes
8670: 74 20 74 65 78 74 44 69 73 70 2d 34 2e 32 30 20  t textDisp-4.20 
8680: 7b 55 70 64 61 74 65 44 69 73 70 6c 61 79 49 6e  {UpdateDisplayIn
8690: 66 6f 2c 20 68 6f 72 69 7a 6f 6e 74 61 6c 20 73  fo, horizontal s
86a0: 63 72 6f 6c 6c 69 6e 67 7d 20 7b 0a 20 20 20 20  crolling} {.    
86b0: 2e 74 20 63 6f 6e 66 69 67 75 72 65 20 2d 77 72  .t configure -wr
86c0: 61 70 20 6e 6f 6e 65 0a 20 20 20 20 2e 74 20 64  ap none.    .t d
86d0: 65 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a 20 20  elete 1.0 end.  
86e0: 20 20 2e 74 20 69 6e 73 65 72 74 20 65 6e 64 20    .t insert end 
86f0: 22 53 68 6f 72 74 20 6c 69 6e 65 20 31 5c 6e 4c  "Short line 1\nL
8700: 69 6e 65 20 32 20 69 73 20 6c 6f 6e 67 20 65 6e  ine 2 is long en
8710: 6f 75 67 68 20 74 6f 20 73 63 72 6f 6c 6c 20 68  ough to scroll h
8720: 6f 72 69 7a 6f 6e 74 61 6c 6c 79 22 0a 20 20 20  orizontally".   
8730: 20 2e 74 20 69 6e 73 65 72 74 20 65 6e 64 20 22   .t insert end "
8740: 5c 6e 4c 69 6e 65 20 33 5c 6e 4c 69 6e 65 20 34  \nLine 3\nLine 4
8750: 22 0a 20 20 20 20 2e 74 20 78 76 69 65 77 20 6d  ".    .t xview m
8760: 6f 76 65 74 6f 20 30 2e 30 0a 20 20 20 20 2e 74  oveto 0.0.    .t
8770: 20 78 76 69 65 77 20 73 63 72 6f 6c 6c 20 31 30   xview scroll 10
8780: 30 20 75 6e 69 74 73 0a 20 20 20 20 75 70 64 61  0 units.    upda
8790: 74 65 0a 20 20 20 20 2e 74 20 64 65 6c 65 74 65  te.    .t delete
87a0: 20 32 2e 33 30 20 32 2e 34 34 0a 20 20 20 20 75   2.30 2.44.    u
87b0: 70 64 61 74 65 0a 20 20 20 20 6c 69 73 74 20 24  pdate.    list $
87c0: 74 6b 5f 74 65 78 74 52 65 6c 61 79 6f 75 74 20  tk_textRelayout 
87d0: 24 74 6b 5f 74 65 78 74 52 65 64 72 61 77 20 5b  $tk_textRedraw [
87e0: 2e 74 20 62 62 6f 78 20 32 2e 32 35 5d 0a 7d 20  .t bbox 2.25].} 
87f0: 5b 6c 69 73 74 20 32 2e 30 20 7b 31 2e 30 20 32  [list 2.0 {1.0 2
8800: 2e 30 20 33 2e 30 20 34 2e 30 7d 20 5c 0a 20 20  .0 3.0 4.0} \.  
8810: 20 20 5b 6c 69 73 74 20 5b 65 78 70 72 20 7b 24    [list [expr {$
8820: 70 61 64 78 2b 31 35 2a 24 66 69 78 65 64 57 69  padx+15*$fixedWi
8830: 64 74 68 7d 5d 20 5b 65 78 70 72 20 7b 24 70 61  dth}] [expr {$pa
8840: 64 79 2b 24 66 69 78 65 64 48 65 69 67 68 74 7d  dy+$fixedHeight}
8850: 5d 20 24 66 69 78 65 64 57 69 64 74 68 20 24 66  ] $fixedWidth $f
8860: 69 78 65 64 48 65 69 67 68 74 5d 5d 0a 0a 74 65  ixedHeight]]..te
8870: 73 74 20 74 65 78 74 44 69 73 70 2d 34 2e 32 31  st textDisp-4.21
8880: 20 7b 55 70 64 61 74 65 44 69 73 70 6c 61 79 49   {UpdateDisplayI
8890: 6e 66 6f 2c 20 68 6f 72 69 7a 6f 6e 74 61 6c 20  nfo, horizontal 
88a0: 73 63 72 6f 6c 6c 69 6e 67 7d 20 7b 0a 20 20 20  scrolling} {.   
88b0: 20 2e 74 20 63 6f 6e 66 69 67 75 72 65 20 2d 77   .t configure -w
88c0: 72 61 70 20 6e 6f 6e 65 0a 20 20 20 20 2e 74 20  rap none.    .t 
88d0: 64 65 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a 20  delete 1.0 end. 
88e0: 20 20 20 2e 74 20 69 6e 73 65 72 74 20 65 6e 64     .t insert end
88f0: 20 22 53 68 6f 72 74 20 6c 69 6e 65 20 31 5c 6e   "Short line 1\n
8900: 4c 69 6e 65 20 32 20 69 73 20 6c 6f 6e 67 20 65  Line 2 is long e
8910: 6e 6f 75 67 68 20 74 6f 20 73 63 72 6f 6c 6c 20  nough to scroll 
8920: 68 6f 72 69 7a 6f 6e 74 61 6c 6c 79 22 0a 20 20  horizontally".  
8930: 20 20 2e 74 20 69 6e 73 65 72 74 20 65 6e 64 20    .t insert end 
8940: 22 5c 6e 4c 69 6e 65 20 33 5c 6e 4c 69 6e 65 20  "\nLine 3\nLine 
8950: 34 22 0a 20 20 20 20 2e 74 20 78 76 69 65 77 20  4".    .t xview 
8960: 6d 6f 76 65 74 6f 20 2e 39 0a 20 20 20 20 75 70  moveto .9.    up
8970: 64 61 74 65 0a 20 20 20 20 2e 74 20 78 76 69 65  date.    .t xvie
8980: 77 20 6d 6f 76 65 74 6f 20 2e 36 0a 20 20 20 20  w moveto .6.    
8990: 75 70 64 61 74 65 0a 20 20 20 20 6c 69 73 74 20  update.    list 
89a0: 24 74 6b 5f 74 65 78 74 52 65 6c 61 79 6f 75 74  $tk_textRelayout
89b0: 20 24 74 6b 5f 74 65 78 74 52 65 64 72 61 77 0a   $tk_textRedraw.
89c0: 7d 20 7b 7b 7d 20 7b 7d 7d 0a 0a 74 65 73 74 20  } {{} {}}..test 
89d0: 74 65 78 74 44 69 73 70 2d 34 2e 32 32 20 7b 55  textDisp-4.22 {U
89e0: 70 64 61 74 65 44 69 73 70 6c 61 79 49 6e 66 6f  pdateDisplayInfo
89f0: 2c 20 6e 6f 20 68 6f 72 69 7a 6f 6e 74 61 6c 20  , no horizontal 
8a00: 73 63 72 6f 6c 6c 69 6e 67 20 65 78 63 65 70 74  scrolling except
8a10: 20 66 6f 72 20 2d 77 72 61 70 20 6e 6f 6e 65 7d   for -wrap none}
8a20: 20 7b 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69 67   {.    .t config
8a30: 75 72 65 20 2d 77 72 61 70 20 6e 6f 6e 65 0a 20  ure -wrap none. 
8a40: 20 20 20 2e 74 20 64 65 6c 65 74 65 20 31 2e 30     .t delete 1.0
8a50: 20 65 6e 64 0a 20 20 20 20 2e 74 20 69 6e 73 65   end.    .t inse
8a60: 72 74 20 65 6e 64 20 22 53 68 6f 72 74 20 6c 69  rt end "Short li
8a70: 6e 65 20 31 5c 6e 4c 69 6e 65 20 32 20 69 73 20  ne 1\nLine 2 is 
8a80: 6c 6f 6e 67 20 65 6e 6f 75 67 68 20 74 6f 20 73  long enough to s
8a90: 63 72 6f 6c 6c 20 68 6f 72 69 7a 6f 6e 74 61 6c  croll horizontal
8aa0: 6c 79 22 0a 20 20 20 20 2e 74 20 69 6e 73 65 72  ly".    .t inser
8ab0: 74 20 65 6e 64 20 22 5c 6e 4c 69 6e 65 20 33 5c  t end "\nLine 3\
8ac0: 6e 4c 69 6e 65 20 34 22 0a 20 20 20 20 2e 74 20  nLine 4".    .t 
8ad0: 78 76 69 65 77 20 73 63 72 6f 6c 6c 20 32 35 20  xview scroll 25 
8ae0: 75 6e 69 74 73 0a 20 20 20 20 75 70 64 61 74 65  units.    update
8af0: 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69 67 75 72  .    .t configur
8b00: 65 20 2d 77 72 61 70 20 77 6f 72 64 0a 20 20 20  e -wrap word.   
8b10: 20 6c 69 73 74 20 5b 2e 74 20 62 62 6f 78 20 32   list [.t bbox 2
8b20: 2e 30 5d 20 5b 2e 74 20 62 62 6f 78 20 32 2e 31  .0] [.t bbox 2.1
8b30: 36 5d 0a 7d 20 5b 6c 69 73 74 20 5c 0a 20 20 20  6].} [list \.   
8b40: 20 5b 6c 69 73 74 20 24 70 61 64 78 20 5b 65 78   [list $padx [ex
8b50: 70 72 20 7b 24 70 61 64 79 2b 24 66 69 78 65 64  pr {$pady+$fixed
8b60: 48 65 69 67 68 74 7d 5d 20 24 66 69 78 65 64 57  Height}] $fixedW
8b70: 69 64 74 68 20 24 66 69 78 65 64 48 65 69 67 68  idth $fixedHeigh
8b80: 74 5d 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20 5b  t] \.    [list [
8b90: 65 78 70 72 20 7b 24 70 61 64 78 2b 24 66 69 78  expr {$padx+$fix
8ba0: 65 64 57 69 64 74 68 7d 5d 20 5b 65 78 70 72 20  edWidth}] [expr 
8bb0: 7b 24 70 61 64 79 2b 32 2a 24 66 69 78 65 64 48  {$pady+2*$fixedH
8bc0: 65 69 67 68 74 7d 5d 20 24 66 69 78 65 64 57 69  eight}] $fixedWi
8bd0: 64 74 68 20 24 66 69 78 65 64 48 65 69 67 68 74  dth $fixedHeight
8be0: 5d 5d 0a 0a 74 65 73 74 20 74 65 78 74 44 69 73  ]]..test textDis
8bf0: 70 2d 34 2e 32 33 20 7b 55 70 64 61 74 65 44 69  p-4.23 {UpdateDi
8c00: 73 70 6c 61 79 49 6e 66 6f 2c 20 6e 6f 20 68 6f  splayInfo, no ho
8c10: 72 69 7a 6f 6e 74 61 6c 20 73 63 72 6f 6c 6c 69  rizontal scrolli
8c20: 6e 67 20 65 78 63 65 70 74 20 66 6f 72 20 2d 77  ng except for -w
8c30: 72 61 70 20 6e 6f 6e 65 7d 20 7b 0a 20 20 20 20  rap none} {.    
8c40: 2e 74 20 63 6f 6e 66 69 67 75 72 65 20 2d 77 72  .t configure -wr
8c50: 61 70 20 6e 6f 6e 65 0a 20 20 20 20 2e 74 20 64  ap none.    .t d
8c60: 65 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a 20 20  elete 1.0 end.  
8c70: 20 20 2e 74 20 69 6e 73 65 72 74 20 65 6e 64 20    .t insert end 
8c80: 22 53 68 6f 72 74 20 6c 69 6e 65 20 31 5c 6e 4c  "Short line 1\nL
8c90: 69 6e 65 20 32 20 69 73 20 6c 6f 6e 67 20 65 6e  ine 2 is long en
8ca0: 6f 75 67 68 20 74 6f 20 73 63 72 6f 6c 6c 20 68  ough to scroll h
8cb0: 6f 72 69 7a 6f 6e 74 61 6c 6c 79 22 0a 20 20 20  orizontally".   
8cc0: 20 2e 74 20 69 6e 73 65 72 74 20 65 6e 64 20 22   .t insert end "
8cd0: 5c 6e 4c 69 6e 65 20 33 5c 6e 4c 69 6e 65 20 34  \nLine 3\nLine 4
8ce0: 22 0a 20 20 20 20 2e 74 20 78 76 69 65 77 20 73  ".    .t xview s
8cf0: 63 72 6f 6c 6c 20 32 35 20 75 6e 69 74 73 0a 20  croll 25 units. 
8d00: 20 20 20 75 70 64 61 74 65 0a 20 20 20 20 2e 74     update.    .t
8d10: 20 63 6f 6e 66 69 67 75 72 65 20 2d 77 72 61 70   configure -wrap
8d20: 20 63 68 61 72 0a 20 20 20 20 6c 69 73 74 20 5b   char.    list [
8d30: 2e 74 20 62 62 6f 78 20 32 2e 30 5d 20 5b 2e 74  .t bbox 2.0] [.t
8d40: 20 62 62 6f 78 20 32 2e 31 36 5d 0a 7d 20 5b 6c   bbox 2.16].} [l
8d50: 69 73 74 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20  ist \.    [list 
8d60: 24 70 61 64 78 20 5b 65 78 70 72 20 7b 24 70 61  $padx [expr {$pa
8d70: 64 79 2b 24 66 69 78 65 64 48 65 69 67 68 74 7d  dy+$fixedHeight}
8d80: 5d 20 24 66 69 78 65 64 57 69 64 74 68 20 24 66  ] $fixedWidth $f
8d90: 69 78 65 64 48 65 69 67 68 74 5d 20 5c 0a 20 20  ixedHeight] \.  
8da0: 20 20 5b 6c 69 73 74 20 5b 65 78 70 72 20 7b 24    [list [expr {$
8db0: 70 61 64 78 2b 31 36 2a 24 66 69 78 65 64 57 69  padx+16*$fixedWi
8dc0: 64 74 68 7d 5d 20 5b 65 78 70 72 20 7b 24 70 61  dth}] [expr {$pa
8dd0: 64 79 2b 24 66 69 78 65 64 48 65 69 67 68 74 7d  dy+$fixedHeight}
8de0: 5d 20 24 66 69 78 65 64 57 69 64 74 68 20 24 66  ] $fixedWidth $f
8df0: 69 78 65 64 48 65 69 67 68 74 5d 5d 0a 0a 74 65  ixedHeight]]..te
8e00: 73 74 20 74 65 78 74 44 69 73 70 2d 35 2e 31 20  st textDisp-5.1 
8e10: 7b 44 69 73 70 6c 61 79 44 4c 69 6e 65 2c 20 68  {DisplayDLine, h
8e20: 61 6e 64 6c 69 6e 67 20 6f 66 20 73 70 61 63 69  andling of spaci
8e30: 6e 67 7d 20 7b 0a 20 20 20 20 2e 74 20 63 6f 6e  ng} {.    .t con
8e40: 66 69 67 75 72 65 20 2d 77 72 61 70 20 63 68 61  figure -wrap cha
8e50: 72 0a 20 20 20 20 2e 74 20 64 65 6c 65 74 65 20  r.    .t delete 
8e60: 31 2e 30 20 65 6e 64 0a 20 20 20 20 2e 74 20 69  1.0 end.    .t i
8e70: 6e 73 65 72 74 20 31 2e 30 20 22 61 62 63 64 65  nsert 1.0 "abcde
8e80: 66 67 68 69 6a 6b 6c 5c 6e 6d 6e 6f 70 71 72 73  fghijkl\nmnopqrs
8e90: 74 75 76 77 7a 79 7a 22 0a 20 20 20 20 2e 74 20  tuvwzyz".    .t 
8ea0: 74 61 67 20 63 6f 6e 66 69 67 75 72 65 20 73 70  tag configure sp
8eb0: 61 63 69 6e 67 20 2d 73 70 61 63 69 6e 67 31 20  acing -spacing1 
8ec0: 38 20 2d 73 70 61 63 69 6e 67 33 20 32 0a 20 20  8 -spacing3 2.  
8ed0: 20 20 2e 74 20 74 61 67 20 61 64 64 20 73 70 61    .t tag add spa
8ee0: 63 69 6e 67 20 31 2e 30 20 65 6e 64 0a 20 20 20  cing 1.0 end.   
8ef0: 20 66 72 61 6d 65 20 2e 74 2e 66 31 20 2d 77 69   frame .t.f1 -wi
8f00: 64 74 68 20 31 30 20 2d 68 65 69 67 68 74 20 34  dth 10 -height 4
8f10: 20 2d 62 67 20 62 6c 61 63 6b 0a 20 20 20 20 66   -bg black.    f
8f20: 72 61 6d 65 20 2e 74 2e 66 32 20 2d 77 69 64 74  rame .t.f2 -widt
8f30: 68 20 31 30 20 2d 68 65 69 67 68 74 20 34 20 2d  h 10 -height 4 -
8f40: 62 67 20 62 6c 61 63 6b 0a 20 20 20 20 66 72 61  bg black.    fra
8f50: 6d 65 20 2e 74 2e 66 33 20 2d 77 69 64 74 68 20  me .t.f3 -width 
8f60: 31 30 20 2d 68 65 69 67 68 74 20 34 20 2d 62 67  10 -height 4 -bg
8f70: 20 62 6c 61 63 6b 0a 20 20 20 20 66 72 61 6d 65   black.    frame
8f80: 20 2e 74 2e 66 34 20 2d 77 69 64 74 68 20 31 30   .t.f4 -width 10
8f90: 20 2d 68 65 69 67 68 74 20 34 20 2d 62 67 20 62   -height 4 -bg b
8fa0: 6c 61 63 6b 0a 20 20 20 20 2e 74 20 77 69 6e 64  lack.    .t wind
8fb0: 6f 77 20 63 72 65 61 74 65 20 31 2e 33 20 2d 77  ow create 1.3 -w
8fc0: 69 6e 64 6f 77 20 2e 74 2e 66 31 20 2d 61 6c 69  indow .t.f1 -ali
8fd0: 67 6e 20 74 6f 70 0a 20 20 20 20 2e 74 20 77 69  gn top.    .t wi
8fe0: 6e 64 6f 77 20 63 72 65 61 74 65 20 31 2e 37 20  ndow create 1.7 
8ff0: 2d 77 69 6e 64 6f 77 20 2e 74 2e 66 32 20 2d 61  -window .t.f2 -a
9000: 6c 69 67 6e 20 63 65 6e 74 65 72 0a 20 20 20 20  lign center.    
9010: 2e 74 20 77 69 6e 64 6f 77 20 63 72 65 61 74 65  .t window create
9020: 20 32 2e 31 20 2d 77 69 6e 64 6f 77 20 2e 74 2e   2.1 -window .t.
9030: 66 33 20 2d 61 6c 69 67 6e 20 62 6f 74 74 6f 6d  f3 -align bottom
9040: 0a 20 20 20 20 2e 74 20 77 69 6e 64 6f 77 20 63  .    .t window c
9050: 72 65 61 74 65 20 32 2e 31 30 20 2d 77 69 6e 64  reate 2.10 -wind
9060: 6f 77 20 2e 74 2e 66 34 20 2d 61 6c 69 67 6e 20  ow .t.f4 -align 
9070: 62 61 73 65 6c 69 6e 65 0a 20 20 20 20 75 70 64  baseline.    upd
9080: 61 74 65 0a 20 20 20 20 6c 69 73 74 20 5b 77 69  ate.    list [wi
9090: 6e 66 6f 20 67 65 6f 6d 65 74 72 79 20 2e 74 2e  nfo geometry .t.
90a0: 66 31 5d 20 5b 77 69 6e 66 6f 20 67 65 6f 6d 65  f1] [winfo geome
90b0: 74 72 79 20 2e 74 2e 66 32 5d 20 5c 0a 09 20 20  try .t.f2] \..  
90c0: 20 20 5b 77 69 6e 66 6f 20 67 65 6f 6d 65 74 72    [winfo geometr
90d0: 79 20 2e 74 2e 66 33 5d 20 5b 77 69 6e 66 6f 20  y .t.f3] [winfo 
90e0: 67 65 6f 6d 65 74 72 79 20 2e 74 2e 66 34 5d 0a  geometry .t.f4].
90f0: 7d 20 5b 6c 69 73 74 20 31 30 78 34 2b 5b 65 78  } [list 10x4+[ex
9100: 70 72 20 7b 24 70 61 64 78 2b 33 2a 24 66 69 78  pr {$padx+3*$fix
9110: 65 64 57 69 64 74 68 7d 5d 2b 5b 65 78 70 72 20  edWidth}]+[expr 
9120: 7b 24 70 61 64 79 2b 38 7d 5d 20 31 30 78 34 2b  {$pady+8}] 10x4+
9130: 5b 65 78 70 72 20 7b 24 70 61 64 78 2b 36 2a 24  [expr {$padx+6*$
9140: 66 69 78 65 64 57 69 64 74 68 2b 31 30 7d 5d 2b  fixedWidth+10}]+
9150: 5b 65 78 70 72 20 7b 24 70 61 64 79 2b 38 2b 28  [expr {$pady+8+(
9160: 28 24 66 69 78 65 64 48 65 69 67 68 74 2d 34 29  ($fixedHeight-4)
9170: 2f 32 29 7d 5d 20 31 30 78 34 2b 5b 65 78 70 72  /2)}] 10x4+[expr
9180: 20 7b 24 70 61 64 78 2b 24 66 69 78 65 64 57 69   {$padx+$fixedWi
9190: 64 74 68 7d 5d 2b 5b 65 78 70 72 20 7b 24 70 61  dth}]+[expr {$pa
91a0: 64 79 2b 38 2a 32 2b 32 2d 34 2b 32 2a 24 66 69  dy+8*2+2-4+2*$fi
91b0: 78 65 64 48 65 69 67 68 74 7d 5d 20 31 30 78 34  xedHeight}] 10x4
91c0: 2b 5b 65 78 70 72 20 7b 24 70 61 64 78 2b 39 2a  +[expr {$padx+9*
91d0: 24 66 69 78 65 64 57 69 64 74 68 2b 31 30 7d 5d  $fixedWidth+10}]
91e0: 2b 5b 65 78 70 72 20 7b 24 70 61 64 79 2b 32 2a  +[expr {$pady+2*
91f0: 38 2b 32 2d 34 2b 24 66 69 78 65 64 48 65 69 67  8+2-4+$fixedHeig
9200: 68 74 2b 24 66 69 78 65 64 41 73 63 65 6e 74 7d  ht+$fixedAscent}
9210: 5d 5d 0a 2e 74 20 74 61 67 20 64 65 6c 65 74 65  ]]..t tag delete
9220: 20 73 70 61 63 69 6e 67 0a 0a 23 20 41 6c 74 68   spacing..# Alth
9230: 6f 75 67 68 20 74 68 65 20 66 6f 6c 6c 6f 77 69  ough the followi
9240: 6e 67 20 74 65 73 74 20 70 72 6f 64 75 63 65 73  ng test produces
9250: 20 61 20 75 73 65 66 75 6c 20 72 65 73 75 6c 74   a useful result
9260: 2c 20 69 74 73 20 6d 61 69 6e 0a 23 20 65 66 66  , its main.# eff
9270: 65 63 74 20 69 73 20 74 6f 20 70 72 6f 64 75 63  ect is to produc
9280: 65 20 61 20 63 6f 72 65 20 64 75 6d 70 20 69 66  e a core dump if
9290: 20 54 6b 20 64 6f 65 73 6e 27 74 20 68 61 6e 64   Tk doesn't hand
92a0: 6c 65 20 64 69 73 70 6c 61 79 0a 23 20 72 65 6c  le display.# rel
92b0: 61 79 6f 75 74 20 74 68 61 74 20 6f 63 63 75 72  ayout that occur
92c0: 73 20 64 75 72 69 6e 67 20 72 65 64 69 73 70 6c  s during redispl
92d0: 61 79 2e 0a 0a 74 65 73 74 20 74 65 78 74 44 69  ay...test textDi
92e0: 73 70 2d 35 2e 32 20 7b 44 69 73 70 6c 61 79 44  sp-5.2 {DisplayD
92f0: 4c 69 6e 65 2c 20 6c 69 6e 65 20 72 65 73 69 7a  Line, line resiz
9300: 65 73 20 64 75 72 69 6e 67 20 64 69 73 70 6c 61  es during displa
9310: 79 7d 20 7b 0a 20 20 20 20 2e 74 20 64 65 6c 65  y} {.    .t dele
9320: 74 65 20 31 2e 30 20 65 6e 64 0a 20 20 20 20 66  te 1.0 end.    f
9330: 72 61 6d 65 20 2e 74 2e 66 20 2d 77 69 64 74 68  rame .t.f -width
9340: 20 32 30 20 2d 68 65 69 67 68 74 20 32 30 20 2d   20 -height 20 -
9350: 62 64 20 32 20 2d 72 65 6c 69 65 66 20 72 61 69  bd 2 -relief rai
9360: 73 65 64 0a 20 20 20 20 62 69 6e 64 20 2e 74 2e  sed.    bind .t.
9370: 66 20 3c 43 6f 6e 66 69 67 75 72 65 3e 20 7b 2e  f <Configure> {.
9380: 74 2e 66 20 63 6f 6e 66 69 67 75 72 65 20 2d 77  t.f configure -w
9390: 69 64 74 68 20 33 30 20 2d 68 65 69 67 68 74 20  idth 30 -height 
93a0: 33 30 7d 0a 20 20 20 20 2e 74 20 77 69 6e 64 6f  30}.    .t windo
93b0: 77 20 63 72 65 61 74 65 20 69 6e 73 65 72 74 20  w create insert 
93c0: 2d 77 69 6e 64 6f 77 20 2e 74 2e 66 0a 20 20 20  -window .t.f.   
93d0: 20 75 70 64 61 74 65 0a 20 20 20 20 6c 69 73 74   update.    list
93e0: 20 5b 77 69 6e 66 6f 20 77 69 64 74 68 20 2e 74   [winfo width .t
93f0: 2e 66 5d 20 5b 77 69 6e 66 6f 20 68 65 69 67 68  .f] [winfo heigh
9400: 74 20 2e 74 2e 66 5d 0a 7d 20 5b 6c 69 73 74 20  t .t.f].} [list 
9410: 33 30 20 33 30 5d 0a 0a 2e 74 20 63 6f 6e 66 69  30 30]...t confi
9420: 67 75 72 65 20 2d 77 72 61 70 20 63 68 61 72 0a  gure -wrap char.
9430: 74 65 73 74 20 74 65 78 74 44 69 73 70 2d 36 2e  test textDisp-6.
9440: 31 20 7b 73 63 72 6f 6c 6c 69 6e 67 20 69 6e 20  1 {scrolling in 
9450: 44 69 73 70 6c 61 79 54 65 78 74 2c 20 73 63 72  DisplayText, scr
9460: 6f 6c 6c 20 75 70 7d 20 7b 0a 20 20 20 20 2e 74  oll up} {.    .t
9470: 20 64 65 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a   delete 1.0 end.
9480: 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20 31 2e      .t insert 1.
9490: 30 20 22 4c 69 6e 65 20 31 22 0a 20 20 20 20 66  0 "Line 1".    f
94a0: 6f 72 65 61 63 68 20 69 20 7b 32 20 33 20 34 20  oreach i {2 3 4 
94b0: 35 20 36 20 37 20 38 20 39 20 31 30 20 31 31 20  5 6 7 8 9 10 11 
94c0: 31 32 20 31 33 20 31 34 20 31 35 7d 20 7b 0a 09  12 13 14 15} {..
94d0: 2e 74 20 69 6e 73 65 72 74 20 65 6e 64 20 22 5c  .t insert end "\
94e0: 6e 4c 69 6e 65 20 24 69 22 0a 20 20 20 20 7d 0a  nLine $i".    }.
94f0: 20 20 20 20 75 70 64 61 74 65 0a 20 20 20 20 2e      update.    .
9500: 74 20 64 65 6c 65 74 65 20 32 2e 30 20 33 2e 30  t delete 2.0 3.0
9510: 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20 20 20  .    update.    
9520: 6c 69 73 74 20 24 74 6b 5f 74 65 78 74 52 65 6c  list $tk_textRel
9530: 61 79 6f 75 74 20 24 74 6b 5f 74 65 78 74 52 65  ayout $tk_textRe
9540: 64 72 61 77 0a 7d 20 7b 7b 32 2e 30 20 31 30 2e  draw.} {{2.0 10.
9550: 30 7d 20 7b 32 2e 30 20 31 30 2e 30 7d 7d 0a 74  0} {2.0 10.0}}.t
9560: 65 73 74 20 74 65 78 74 44 69 73 70 2d 36 2e 32  est textDisp-6.2
9570: 20 7b 73 63 72 6f 6c 6c 69 6e 67 20 69 6e 20 44   {scrolling in D
9580: 69 73 70 6c 61 79 54 65 78 74 2c 20 73 63 72 6f  isplayText, scro
9590: 6c 6c 20 64 6f 77 6e 7d 20 7b 0a 20 20 20 20 2e  ll down} {.    .
95a0: 74 20 64 65 6c 65 74 65 20 31 2e 30 20 65 6e 64  t delete 1.0 end
95b0: 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20 31  .    .t insert 1
95c0: 2e 30 20 22 4c 69 6e 65 20 31 22 0a 20 20 20 20  .0 "Line 1".    
95d0: 66 6f 72 65 61 63 68 20 69 20 7b 32 20 33 20 34  foreach i {2 3 4
95e0: 20 35 20 36 20 37 20 38 20 39 20 31 30 20 31 31   5 6 7 8 9 10 11
95f0: 20 31 32 20 31 33 20 31 34 20 31 35 7d 20 7b 0a   12 13 14 15} {.
9600: 09 2e 74 20 69 6e 73 65 72 74 20 65 6e 64 20 22  ..t insert end "
9610: 5c 6e 4c 69 6e 65 20 24 69 22 0a 20 20 20 20 7d  \nLine $i".    }
9620: 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20 20 20  .    update.    
9630: 2e 74 20 69 6e 73 65 72 74 20 32 2e 30 20 22 4e  .t insert 2.0 "N
9640: 65 77 20 4c 69 6e 65 20 32 5c 6e 22 0a 20 20 20  ew Line 2\n".   
9650: 20 75 70 64 61 74 65 0a 20 20 20 20 6c 69 73 74   update.    list
9660: 20 24 74 6b 5f 74 65 78 74 52 65 6c 61 79 6f 75   $tk_textRelayou
9670: 74 20 24 74 6b 5f 74 65 78 74 52 65 64 72 61 77  t $tk_textRedraw
9680: 0a 7d 20 7b 7b 32 2e 30 20 33 2e 30 7d 20 7b 32  .} {{2.0 3.0} {2
9690: 2e 30 20 33 2e 30 7d 7d 0a 74 65 73 74 20 74 65  .0 3.0}}.test te
96a0: 78 74 44 69 73 70 2d 36 2e 33 20 7b 73 63 72 6f  xtDisp-6.3 {scro
96b0: 6c 6c 69 6e 67 20 69 6e 20 44 69 73 70 6c 61 79  lling in Display
96c0: 54 65 78 74 2c 20 6d 75 6c 74 69 70 6c 65 20 73  Text, multiple s
96d0: 63 72 6f 6c 6c 73 7d 20 7b 0a 20 20 20 20 2e 74  crolls} {.    .t
96e0: 20 63 6f 6e 66 69 67 75 72 65 20 2d 77 72 61 70   configure -wrap
96f0: 20 63 68 61 72 0a 20 20 20 20 2e 74 20 64 65 6c   char.    .t del
9700: 65 74 65 20 31 2e 30 20 65 6e 64 0a 20 20 20 20  ete 1.0 end.    
9710: 2e 74 20 69 6e 73 65 72 74 20 31 2e 30 20 22 4c  .t insert 1.0 "L
9720: 69 6e 65 20 31 22 0a 20 20 20 20 66 6f 72 65 61  ine 1".    forea
9730: 63 68 20 69 20 7b 32 20 33 20 34 20 35 20 36 20  ch i {2 3 4 5 6 
9740: 37 20 38 20 39 20 31 30 20 31 31 20 31 32 20 31  7 8 9 10 11 12 1
9750: 33 20 31 34 20 31 35 7d 20 7b 0a 09 2e 74 20 69  3 14 15} {...t i
9760: 6e 73 65 72 74 20 65 6e 64 20 22 5c 6e 4c 69 6e  nsert end "\nLin
9770: 65 20 24 69 22 0a 20 20 20 20 7d 0a 20 20 20 20  e $i".    }.    
9780: 75 70 64 61 74 65 0a 20 20 20 20 2e 74 20 69 6e  update.    .t in
9790: 73 65 72 74 20 32 2e 65 6e 64 20 22 69 73 20 73  sert 2.end "is s
97a0: 6f 20 6c 6f 6e 67 20 74 68 61 74 20 69 74 20 77  o long that it w
97b0: 72 61 70 73 22 0a 20 20 20 20 2e 74 20 69 6e 73  raps".    .t ins
97c0: 65 72 74 20 34 2e 65 6e 64 20 22 69 73 20 73 6f  ert 4.end "is so
97d0: 20 6c 6f 6e 67 20 74 68 61 74 20 69 74 20 77 72   long that it wr
97e0: 61 70 73 22 0a 20 20 20 20 75 70 64 61 74 65 0a  aps".    update.
97f0: 20 20 20 20 6c 69 73 74 20 24 74 6b 5f 74 65 78      list $tk_tex
9800: 74 52 65 6c 61 79 6f 75 74 20 24 74 6b 5f 74 65  tRelayout $tk_te
9810: 78 74 52 65 64 72 61 77 0a 7d 20 7b 7b 32 2e 30  xtRedraw.} {{2.0
9820: 20 32 2e 32 30 20 34 2e 30 20 34 2e 32 30 7d 20   2.20 4.0 4.20} 
9830: 7b 32 2e 30 20 32 2e 32 30 20 34 2e 30 20 34 2e  {2.0 2.20 4.0 4.
9840: 32 30 7d 7d 0a 74 65 73 74 20 74 65 78 74 44 69  20}}.test textDi
9850: 73 70 2d 36 2e 34 20 7b 73 63 72 6f 6c 6c 69 6e  sp-6.4 {scrollin
9860: 67 20 69 6e 20 44 69 73 70 6c 61 79 54 65 78 74  g in DisplayText
9870: 2c 20 73 63 72 6f 6c 6c 73 20 69 6e 74 65 72 66  , scrolls interf
9880: 65 72 65 7d 20 7b 0a 20 20 20 20 2e 74 20 63 6f  ere} {.    .t co
9890: 6e 66 69 67 75 72 65 20 2d 77 72 61 70 20 63 68  nfigure -wrap ch
98a0: 61 72 0a 20 20 20 20 2e 74 20 64 65 6c 65 74 65  ar.    .t delete
98b0: 20 31 2e 30 20 65 6e 64 0a 20 20 20 20 2e 74 20   1.0 end.    .t 
98c0: 69 6e 73 65 72 74 20 31 2e 30 20 22 4c 69 6e 65  insert 1.0 "Line
98d0: 20 31 22 0a 20 20 20 20 66 6f 72 65 61 63 68 20   1".    foreach 
98e0: 69 20 7b 32 20 33 20 34 20 35 20 36 20 37 20 38  i {2 3 4 5 6 7 8
98f0: 20 39 20 31 30 20 31 31 20 31 32 20 31 33 20 31   9 10 11 12 13 1
9900: 34 20 31 35 7d 20 7b 0a 09 2e 74 20 69 6e 73 65  4 15} {...t inse
9910: 72 74 20 65 6e 64 20 22 5c 6e 4c 69 6e 65 20 24  rt end "\nLine $
9920: 69 22 0a 20 20 20 20 7d 0a 20 20 20 20 75 70 64  i".    }.    upd
9930: 61 74 65 0a 20 20 20 20 2e 74 20 69 6e 73 65 72  ate.    .t inser
9940: 74 20 32 2e 65 6e 64 20 22 69 73 20 73 6f 20 6c  t 2.end "is so l
9950: 6f 6e 67 20 74 68 61 74 20 69 74 20 77 72 61 70  ong that it wrap
9960: 73 20 61 72 6f 75 6e 64 2c 20 6e 6f 74 20 6f 6e  s around, not on
9970: 63 65 20 62 75 74 20 74 68 72 65 65 20 74 69 6d  ce but three tim
9980: 65 73 22 0a 20 20 20 20 2e 74 20 69 6e 73 65 72  es".    .t inser
9990: 74 20 34 2e 65 6e 64 20 22 69 73 20 73 6f 20 6c  t 4.end "is so l
99a0: 6f 6e 67 20 74 68 61 74 20 69 74 20 77 72 61 70  ong that it wrap
99b0: 73 22 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20  s".    update.  
99c0: 20 20 6c 69 73 74 20 24 74 6b 5f 74 65 78 74 52    list $tk_textR
99d0: 65 6c 61 79 6f 75 74 20 24 74 6b 5f 74 65 78 74  elayout $tk_text
99e0: 52 65 64 72 61 77 0a 7d 20 7b 7b 32 2e 30 20 32  Redraw.} {{2.0 2
99f0: 2e 32 30 20 32 2e 34 30 20 32 2e 36 30 20 34 2e  .20 2.40 2.60 4.
9a00: 30 20 34 2e 32 30 7d 20 7b 32 2e 30 20 32 2e 32  0 4.20} {2.0 2.2
9a10: 30 20 32 2e 34 30 20 32 2e 36 30 20 34 2e 30 20  0 2.40 2.60 4.0 
9a20: 34 2e 32 30 20 36 2e 30 7d 7d 0a 74 65 73 74 20  4.20 6.0}}.test 
9a30: 74 65 78 74 44 69 73 70 2d 36 2e 35 20 7b 73 63  textDisp-6.5 {sc
9a40: 72 6f 6c 6c 69 6e 67 20 69 6e 20 44 69 73 70 6c  rolling in Displ
9a50: 61 79 54 65 78 74 2c 20 73 63 72 6f 6c 6c 20 73  ayText, scroll s
9a60: 6f 75 72 63 65 20 6f 62 73 63 75 72 65 64 7d 20  ource obscured} 
9a70: 7b 6e 6f 6e 50 6f 72 74 61 62 6c 65 7d 20 7b 0a  {nonPortable} {.
9a80: 20 20 20 20 2e 74 20 63 6f 6e 66 69 67 75 72 65      .t configure
9a90: 20 2d 77 72 61 70 20 63 68 61 72 0a 20 20 20 20   -wrap char.    
9aa0: 66 72 61 6d 65 20 2e 66 32 20 2d 62 67 20 72 65  frame .f2 -bg re
9ab0: 64 0a 20 20 20 20 70 6c 61 63 65 20 2e 66 32 20  d.    place .f2 
9ac0: 2d 69 6e 20 2e 74 20 2d 72 65 6c 78 20 30 2e 35  -in .t -relx 0.5
9ad0: 20 2d 72 65 6c 79 20 30 2e 35 20 2d 72 65 6c 77   -rely 0.5 -relw
9ae0: 69 64 74 68 20 30 2e 35 20 2d 72 65 6c 68 65 69  idth 0.5 -relhei
9af0: 67 68 74 20 30 2e 35 0a 20 20 20 20 2e 74 20 64  ght 0.5.    .t d
9b00: 65 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a 20 20  elete 1.0 end.  
9b10: 20 20 2e 74 20 69 6e 73 65 72 74 20 31 2e 30 20    .t insert 1.0 
9b20: 22 4c 69 6e 65 20 31 20 69 73 20 73 6f 20 6c 6f  "Line 1 is so lo
9b30: 6e 67 20 74 68 61 74 20 69 74 20 77 72 61 70 73  ng that it wraps
9b40: 20 61 72 6f 75 6e 64 2c 20 61 20 63 6f 75 70 6c   around, a coupl
9b50: 65 20 6f 66 20 74 69 6d 65 73 22 0a 20 20 20 20  e of times".    
9b60: 66 6f 72 65 61 63 68 20 69 20 7b 32 20 33 20 34  foreach i {2 3 4
9b70: 20 35 20 36 20 37 20 38 20 39 20 31 30 20 31 31   5 6 7 8 9 10 11
9b80: 20 31 32 20 31 33 20 31 34 20 31 35 7d 20 7b 0a   12 13 14 15} {.
9b90: 09 2e 74 20 69 6e 73 65 72 74 20 65 6e 64 20 22  ..t insert end "
9ba0: 5c 6e 4c 69 6e 65 20 24 69 22 0a 20 20 20 20 7d  \nLine $i".    }
9bb0: 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20 20 20  .    update.    
9bc0: 2e 74 20 64 65 6c 65 74 65 20 31 2e 36 20 31 2e  .t delete 1.6 1.
9bd0: 65 6e 64 0a 20 20 20 20 75 70 64 61 74 65 0a 20  end.    update. 
9be0: 20 20 20 64 65 73 74 72 6f 79 20 2e 66 32 0a 20     destroy .f2. 
9bf0: 20 20 20 6c 69 73 74 20 24 74 6b 5f 74 65 78 74     list $tk_text
9c00: 52 65 6c 61 79 6f 75 74 20 24 74 6b 5f 74 65 78  Relayout $tk_tex
9c10: 74 52 65 64 72 61 77 0a 7d 20 7b 7b 31 2e 30 20  tRedraw.} {{1.0 
9c20: 39 2e 30 20 31 30 2e 30 7d 20 7b 31 2e 30 20 34  9.0 10.0} {1.0 4
9c30: 2e 30 20 35 2e 30 20 39 2e 30 20 31 30 2e 30 7d  .0 5.0 9.0 10.0}
9c40: 7d 0a 74 65 73 74 20 74 65 78 74 44 69 73 70 2d  }.test textDisp-
9c50: 36 2e 36 20 7b 73 63 72 6f 6c 6c 69 6e 67 20 69  6.6 {scrolling i
9c60: 6e 20 44 69 73 70 6c 61 79 54 65 78 74 2c 20 45  n DisplayText, E
9c70: 78 70 6f 73 65 20 65 76 65 6e 74 73 20 61 66 74  xpose events aft
9c80: 65 72 20 73 63 72 6f 6c 6c 7d 20 7b 75 6e 69 78  er scroll} {unix
9c90: 20 6e 6f 6e 50 6f 72 74 61 62 6c 65 7d 20 7b 0a   nonPortable} {.
9ca0: 20 20 20 20 23 20 74 68 69 73 20 74 65 73 74 20      # this test 
9cb0: 64 65 70 65 6e 64 73 20 6f 6e 20 61 6c 6c 20 6f  depends on all o
9cc0: 66 20 74 68 65 20 65 78 70 6f 73 65 20 65 76 65  f the expose eve
9cd0: 6e 74 73 20 62 65 69 6e 67 20 68 61 6e 64 6c 65  nts being handle
9ce0: 64 20 61 74 20 6f 6e 63 65 0a 20 20 20 20 2e 74  d at once.    .t
9cf0: 20 63 6f 6e 66 69 67 75 72 65 20 2d 77 72 61 70   configure -wrap
9d00: 20 63 68 61 72 0a 20 20 20 20 66 72 61 6d 65 20   char.    frame 
9d10: 2e 66 32 20 2d 62 67 20 23 66 66 30 30 30 30 0a  .f2 -bg #ff0000.
9d20: 20 20 20 20 70 6c 61 63 65 20 2e 66 32 20 2d 69      place .f2 -i
9d30: 6e 20 2e 74 20 2d 72 65 6c 78 20 30 2e 32 20 2d  n .t -relx 0.2 -
9d40: 72 65 6c 79 20 30 2e 35 20 2d 72 65 6c 77 69 64  rely 0.5 -relwid
9d50: 74 68 20 30 2e 35 20 2d 72 65 6c 68 65 69 67 68  th 0.5 -relheigh
9d60: 74 20 30 2e 35 0a 20 20 20 20 2e 74 20 63 6f 6e  t 0.5.    .t con
9d70: 66 69 67 75 72 65 20 2d 62 64 20 32 20 2d 72 65  figure -bd 2 -re
9d80: 6c 69 65 66 20 72 61 69 73 65 64 0a 20 20 20 20  lief raised.    
9d90: 2e 74 20 64 65 6c 65 74 65 20 31 2e 30 20 65 6e  .t delete 1.0 en
9da0: 64 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20  d.    .t insert 
9db0: 31 2e 30 20 22 4c 69 6e 65 20 31 20 69 73 20 73  1.0 "Line 1 is s
9dc0: 6f 20 6c 6f 6e 67 20 74 68 61 74 20 69 74 20 77  o long that it w
9dd0: 72 61 70 73 20 61 72 6f 75 6e 64 2c 20 61 20 63  raps around, a c
9de0: 6f 75 70 6c 65 20 6f 66 20 74 69 6d 65 73 22 0a  ouple of times".
9df0: 20 20 20 20 66 6f 72 65 61 63 68 20 69 20 7b 32      foreach i {2
9e00: 20 33 20 34 20 35 20 36 20 37 20 38 20 39 20 31   3 4 5 6 7 8 9 1
9e10: 30 20 31 31 20 31 32 20 31 33 20 31 34 20 31 35  0 11 12 13 14 15
9e20: 7d 20 7b 0a 09 2e 74 20 69 6e 73 65 72 74 20 65  } {...t insert e
9e30: 6e 64 20 22 5c 6e 4c 69 6e 65 20 24 69 22 0a 20  nd "\nLine $i". 
9e40: 20 20 20 7d 0a 20 20 20 20 75 70 64 61 74 65 0a     }.    update.
9e50: 20 20 20 20 2e 74 20 64 65 6c 65 74 65 20 31 2e      .t delete 1.
9e60: 36 20 31 2e 65 6e 64 0a 20 20 20 20 64 65 73 74  6 1.end.    dest
9e70: 72 6f 79 20 2e 66 32 0a 20 20 20 20 75 70 64 61  roy .f2.    upda
9e80: 74 65 0a 20 20 20 20 6c 69 73 74 20 24 74 6b 5f  te.    list $tk_
9e90: 74 65 78 74 52 65 6c 61 79 6f 75 74 20 24 74 6b  textRelayout $tk
9ea0: 5f 74 65 78 74 52 65 64 72 61 77 0a 7d 20 7b 7b  _textRedraw.} {{
9eb0: 31 2e 30 20 39 2e 30 20 31 30 2e 30 7d 20 7b 62  1.0 9.0 10.0} {b
9ec0: 6f 72 64 65 72 73 20 31 2e 30 20 34 2e 30 20 35  orders 1.0 4.0 5
9ed0: 2e 30 20 36 2e 30 20 37 2e 30 20 38 2e 30 20 39  .0 6.0 7.0 8.0 9
9ee0: 2e 30 20 31 30 2e 30 7d 7d 0a 2e 74 20 63 6f 6e  .0 10.0}}..t con
9ef0: 66 69 67 75 72 65 20 2d 62 64 20 30 0a 74 65 73  figure -bd 0.tes
9f00: 74 20 74 65 78 74 44 69 73 70 2d 36 2e 37 20 7b  t textDisp-6.7 {
9f10: 44 69 73 70 6c 61 79 54 65 78 74 2c 20 76 65 72  DisplayText, ver
9f20: 74 69 63 61 6c 20 73 63 72 6f 6c 6c 62 61 72 20  tical scrollbar 
9f30: 75 70 64 61 74 65 73 7d 20 7b 0a 20 20 20 20 2e  updates} {.    .
9f40: 74 20 63 6f 6e 66 69 67 75 72 65 20 2d 77 72 61  t configure -wra
9f50: 70 20 63 68 61 72 0a 20 20 20 20 2e 74 20 64 65  p char.    .t de
9f60: 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a 20 20 20  lete 1.0 end.   
9f70: 20 75 70 64 61 74 65 20 3b 20 2e 74 20 73 79 6e   update ; .t syn
9f80: 63 3b 20 75 70 64 61 74 65 0a 20 20 20 20 73 65  c; update.    se
9f90: 74 20 73 63 72 6f 6c 6c 49 6e 66 6f 0a 7d 20 7b  t scrollInfo.} {
9fa0: 30 2e 30 20 31 2e 30 7d 0a 74 65 73 74 20 74 65  0.0 1.0}.test te
9fb0: 78 74 44 69 73 70 2d 36 2e 38 20 7b 44 69 73 70  xtDisp-6.8 {Disp
9fc0: 6c 61 79 54 65 78 74 2c 20 76 65 72 74 69 63 61  layText, vertica
9fd0: 6c 20 73 63 72 6f 6c 6c 62 61 72 20 75 70 64 61  l scrollbar upda
9fe0: 74 65 73 7d 20 7b 0a 20 20 20 20 2e 74 20 63 6f  tes} {.    .t co
9ff0: 6e 66 69 67 75 72 65 20 2d 77 72 61 70 20 63 68  nfigure -wrap ch
a000: 61 72 0a 20 20 20 20 2e 74 20 64 65 6c 65 74 65  ar.    .t delete
a010: 20 31 2e 30 20 65 6e 64 0a 20 20 20 20 2e 74 20   1.0 end.    .t 
a020: 69 6e 73 65 72 74 20 31 2e 30 20 22 4c 69 6e 65  insert 1.0 "Line
a030: 20 31 22 0a 20 20 20 20 75 70 64 61 74 65 0a 20   1".    update. 
a040: 20 20 20 73 65 74 20 73 63 72 6f 6c 6c 49 6e 66     set scrollInf
a050: 6f 20 22 75 6e 63 68 61 6e 67 65 64 22 0a 20 20  o "unchanged".  
a060: 20 20 66 6f 72 65 61 63 68 20 69 20 7b 32 20 33    foreach i {2 3
a070: 20 34 20 35 20 36 20 37 20 38 20 39 20 31 30 20   4 5 6 7 8 9 10 
a080: 31 31 20 31 32 20 31 33 7d 20 7b 0a 09 2e 74 20  11 12 13} {...t 
a090: 69 6e 73 65 72 74 20 65 6e 64 20 22 5c 6e 4c 69  insert end "\nLi
a0a0: 6e 65 20 24 69 22 0a 20 20 20 20 7d 0a 20 20 20  ne $i".    }.   
a0b0: 20 75 70 64 61 74 65 20 3b 20 2e 74 20 73 79 6e   update ; .t syn
a0c0: 63 3b 20 75 70 64 61 74 65 0a 20 20 20 20 73 65  c; update.    se
a0d0: 74 20 73 63 72 6f 6c 6c 49 6e 66 6f 0a 7d 20 5b  t scrollInfo.} [
a0e0: 6c 69 73 74 20 30 2e 30 20 5b 65 78 70 72 20 7b  list 0.0 [expr {
a0f0: 31 30 2e 30 2f 31 33 7d 5d 5d 0a 2e 74 20 63 6f  10.0/13}]]..t co
a100: 6e 66 69 67 75 72 65 20 2d 79 73 63 72 6f 6c 6c  nfigure -yscroll
a110: 63 6f 6d 6d 61 6e 64 20 7b 7d 20 2d 78 73 63 72  command {} -xscr
a120: 6f 6c 6c 63 6f 6d 6d 61 6e 64 20 73 63 72 6f 6c  ollcommand scrol
a130: 6c 0a 74 65 73 74 20 74 65 78 74 44 69 73 70 2d  l.test textDisp-
a140: 36 2e 39 20 7b 44 69 73 70 6c 61 79 54 65 78 74  6.9 {DisplayText
a150: 2c 20 68 6f 72 69 7a 6f 6e 74 61 6c 20 73 63 72  , horizontal scr
a160: 6f 6c 6c 62 61 72 20 75 70 64 61 74 65 73 7d 20  ollbar updates} 
a170: 7b 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69 67 75  {.    .t configu
a180: 72 65 20 2d 77 72 61 70 20 6e 6f 6e 65 0a 20 20  re -wrap none.  
a190: 20 20 2e 74 20 64 65 6c 65 74 65 20 31 2e 30 20    .t delete 1.0 
a1a0: 65 6e 64 0a 20 20 20 20 75 70 64 61 74 65 0a 20  end.    update. 
a1b0: 20 20 20 73 65 74 20 73 63 72 6f 6c 6c 49 6e 66     set scrollInf
a1c0: 6f 20 75 6e 63 68 61 6e 67 65 64 0a 20 20 20 20  o unchanged.    
a1d0: 2e 74 20 69 6e 73 65 72 74 20 65 6e 64 20 78 78  .t insert end xx
a1e0: 78 78 78 78 78 78 78 5c 6e 0a 20 20 20 20 2e 74  xxxxxxx\n.    .t
a1f0: 20 69 6e 73 65 72 74 20 65 6e 64 20 78 78 78 78   insert end xxxx
a200: 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78  xxxxxxxxxxxxxxxx
a210: 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78  xxxxxxxxxxxxxxxx
a220: 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78  xxxxxxxxxxxxxxxx
a230: 78 78 78 5c 6e 0a 20 20 20 20 2e 74 20 69 6e 73  xxx\n.    .t ins
a240: 65 72 74 20 65 6e 64 20 78 78 78 78 78 78 78 78  ert end xxxxxxxx
a250: 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78  xxxxxxxxxxxxxxxx
a260: 78 78 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20  xx.    update.  
a270: 20 20 73 65 74 20 73 63 72 6f 6c 6c 49 6e 66 6f    set scrollInfo
a280: 0a 7d 20 5b 6c 69 73 74 20 30 2e 30 20 5b 65 78  .} [list 0.0 [ex
a290: 70 72 20 7b 34 2e 30 2f 31 31 7d 5d 5d 0a 0a 23  pr {4.0/11}]]..#
a2a0: 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 67   The following g
a2b0: 72 6f 75 70 20 6f 66 20 74 65 73 74 73 20 69 73  roup of tests is
a2c0: 20 6d 61 72 6b 65 64 20 6e 6f 6e 2d 70 6f 72 74   marked non-port
a2d0: 61 62 6c 65 20 62 65 63 61 75 73 65 0a 23 20 74  able because.# t
a2e0: 68 65 79 20 72 65 73 75 6c 74 20 69 6e 20 61 20  hey result in a 
a2f0: 6c 6f 74 20 6f 66 20 65 78 74 72 61 20 72 65 64  lot of extra red
a300: 69 73 70 6c 61 79 20 75 6e 64 65 72 20 55 6c 74  isplay under Ult
a310: 72 69 78 2e 20 20 49 20 64 6f 6e 27 74 0a 23 20  rix.  I don't.# 
a320: 6b 6e 6f 77 20 77 68 79 20 74 68 69 73 20 69 73  know why this is
a330: 20 73 6f 2e 0a 0a 2e 74 20 63 6f 6e 66 69 67 75   so....t configu
a340: 72 65 20 2d 62 64 20 32 20 2d 72 65 6c 69 65 66  re -bd 2 -relief
a350: 20 72 61 69 73 65 64 20 2d 77 72 61 70 20 63 68   raised -wrap ch
a360: 61 72 0a 2e 74 20 64 65 6c 65 74 65 20 31 2e 30  ar..t delete 1.0
a370: 20 65 6e 64 0a 2e 74 20 69 6e 73 65 72 74 20 31   end..t insert 1
a380: 2e 30 20 22 4c 69 6e 65 20 31 20 69 73 20 73 6f  .0 "Line 1 is so
a390: 20 6c 6f 6e 67 20 74 68 61 74 20 69 74 20 77 72   long that it wr
a3a0: 61 70 73 20 61 72 6f 75 6e 64 2c 20 61 20 63 6f  aps around, a co
a3b0: 75 70 6c 65 20 6f 66 20 74 69 6d 65 73 22 0a 66  uple of times".f
a3c0: 6f 72 65 61 63 68 20 69 20 7b 32 20 33 20 34 20  oreach i {2 3 4 
a3d0: 35 20 36 20 37 20 38 20 39 20 31 30 20 31 31 20  5 6 7 8 9 10 11 
a3e0: 31 32 20 31 33 20 31 34 20 31 35 7d 20 7b 0a 20  12 13 14 15} {. 
a3f0: 20 20 20 2e 74 20 69 6e 73 65 72 74 20 65 6e 64     .t insert end
a400: 20 22 5c 6e 4c 69 6e 65 20 24 69 22 0a 7d 0a 74   "\nLine $i".}.t
a410: 65 73 74 20 74 65 78 74 44 69 73 70 2d 37 2e 31  est textDisp-7.1
a420: 20 7b 54 6b 54 65 78 74 52 65 64 72 61 77 52 65   {TkTextRedrawRe
a430: 67 69 6f 6e 7d 20 7b 6e 6f 6e 50 6f 72 74 61 62  gion} {nonPortab
a440: 6c 65 7d 20 7b 0a 20 20 20 20 66 72 61 6d 65 20  le} {.    frame 
a450: 2e 66 32 20 2d 62 67 20 23 66 66 30 30 30 30 0a  .f2 -bg #ff0000.
a460: 20 20 20 20 70 6c 61 63 65 20 2e 66 32 20 2d 69      place .f2 -i
a470: 6e 20 2e 74 20 2d 72 65 6c 78 20 30 2e 32 20 2d  n .t -relx 0.2 -
a480: 72 65 6c 77 69 64 74 68 20 30 2e 36 20 2d 72 65  relwidth 0.6 -re
a490: 6c 79 20 30 2e 32 32 20 2d 72 65 6c 68 65 69 67  ly 0.22 -relheig
a4a0: 68 74 20 30 2e 35 35 0a 20 20 20 20 75 70 64 61  ht 0.55.    upda
a4b0: 74 65 0a 20 20 20 20 64 65 73 74 72 6f 79 20 2e  te.    destroy .
a4c0: 66 32 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20  f2.    update.  
a4d0: 20 20 6c 69 73 74 20 24 74 6b 5f 74 65 78 74 52    list $tk_textR
a4e0: 65 6c 61 79 6f 75 74 20 24 74 6b 5f 74 65 78 74  elayout $tk_text
a4f0: 52 65 64 72 61 77 0a 7d 20 7b 7b 7d 20 7b 31 2e  Redraw.} {{} {1.
a500: 34 30 20 32 2e 30 20 33 2e 30 20 34 2e 30 20 35  40 2.0 3.0 4.0 5
a510: 2e 30 20 36 2e 30 7d 7d 0a 74 65 73 74 20 74 65  .0 6.0}}.test te
a520: 78 74 44 69 73 70 2d 37 2e 32 20 7b 54 6b 54 65  xtDisp-7.2 {TkTe
a530: 78 74 52 65 64 72 61 77 52 65 67 69 6f 6e 7d 20  xtRedrawRegion} 
a540: 7b 6e 6f 6e 50 6f 72 74 61 62 6c 65 7d 20 7b 0a  {nonPortable} {.
a550: 20 20 20 20 66 72 61 6d 65 20 2e 66 32 20 2d 62      frame .f2 -b
a560: 67 20 23 66 66 30 30 30 30 0a 20 20 20 20 70 6c  g #ff0000.    pl
a570: 61 63 65 20 2e 66 32 20 2d 69 6e 20 2e 74 20 2d  ace .f2 -in .t -
a580: 72 65 6c 78 20 30 20 2d 72 65 6c 77 69 64 74 68  relx 0 -relwidth
a590: 20 30 2e 35 20 2d 72 65 6c 79 20 30 20 2d 72 65   0.5 -rely 0 -re
a5a0: 6c 68 65 69 67 68 74 20 30 2e 35 0a 20 20 20 20  lheight 0.5.    
a5b0: 75 70 64 61 74 65 0a 20 20 20 20 64 65 73 74 72  update.    destr
a5c0: 6f 79 20 2e 66 32 0a 20 20 20 20 75 70 64 61 74  oy .f2.    updat
a5d0: 65 0a 20 20 20 20 6c 69 73 74 20 24 74 6b 5f 74  e.    list $tk_t
a5e0: 65 78 74 52 65 6c 61 79 6f 75 74 20 24 74 6b 5f  extRelayout $tk_
a5f0: 74 65 78 74 52 65 64 72 61 77 0a 7d 20 7b 7b 7d  textRedraw.} {{}
a600: 20 7b 62 6f 72 64 65 72 73 20 31 2e 30 20 31 2e   {borders 1.0 1.
a610: 32 30 20 31 2e 34 30 20 32 2e 30 20 33 2e 30 7d  20 1.40 2.0 3.0}
a620: 7d 0a 74 65 73 74 20 74 65 78 74 44 69 73 70 2d  }.test textDisp-
a630: 37 2e 33 20 7b 54 6b 54 65 78 74 52 65 64 72 61  7.3 {TkTextRedra
a640: 77 52 65 67 69 6f 6e 7d 20 7b 6e 6f 6e 50 6f 72  wRegion} {nonPor
a650: 74 61 62 6c 65 7d 20 7b 0a 20 20 20 20 66 72 61  table} {.    fra
a660: 6d 65 20 2e 66 32 20 2d 62 67 20 23 66 66 30 30  me .f2 -bg #ff00
a670: 30 30 0a 20 20 20 20 70 6c 61 63 65 20 2e 66 32  00.    place .f2
a680: 20 2d 69 6e 20 2e 74 20 2d 72 65 6c 78 20 30 2e   -in .t -relx 0.
a690: 35 20 2d 72 65 6c 77 69 64 74 68 20 30 2e 35 20  5 -relwidth 0.5 
a6a0: 2d 72 65 6c 79 20 30 2e 35 20 2d 72 65 6c 68 65  -rely 0.5 -relhe
a6b0: 69 67 68 74 20 30 2e 35 0a 20 20 20 20 75 70 64  ight 0.5.    upd
a6c0: 61 74 65 0a 20 20 20 20 64 65 73 74 72 6f 79 20  ate.    destroy 
a6d0: 2e 66 32 0a 20 20 20 20 75 70 64 61 74 65 0a 20  .f2.    update. 
a6e0: 20 20 20 6c 69 73 74 20 24 74 6b 5f 74 65 78 74     list $tk_text
a6f0: 52 65 6c 61 79 6f 75 74 20 24 74 6b 5f 74 65 78  Relayout $tk_tex
a700: 74 52 65 64 72 61 77 0a 7d 20 7b 7b 7d 20 7b 62  tRedraw.} {{} {b
a710: 6f 72 64 65 72 73 20 34 2e 30 20 35 2e 30 20 36  orders 4.0 5.0 6
a720: 2e 30 20 37 2e 30 20 38 2e 30 7d 7d 0a 74 65 73  .0 7.0 8.0}}.tes
a730: 74 20 74 65 78 74 44 69 73 70 2d 37 2e 34 20 7b  t textDisp-7.4 {
a740: 54 6b 54 65 78 74 52 65 64 72 61 77 52 65 67 69  TkTextRedrawRegi
a750: 6f 6e 7d 20 7b 6e 6f 6e 50 6f 72 74 61 62 6c 65  on} {nonPortable
a760: 7d 20 7b 0a 20 20 20 20 66 72 61 6d 65 20 2e 66  } {.    frame .f
a770: 32 20 2d 62 67 20 23 66 66 30 30 30 30 0a 20 20  2 -bg #ff0000.  
a780: 20 20 70 6c 61 63 65 20 2e 66 32 20 2d 69 6e 20    place .f2 -in 
a790: 2e 74 20 2d 72 65 6c 78 20 30 2e 34 20 2d 72 65  .t -relx 0.4 -re
a7a0: 6c 77 69 64 74 68 20 30 2e 32 20 2d 72 65 6c 79  lwidth 0.2 -rely
a7b0: 20 30 20 2d 72 65 6c 68 65 69 67 68 74 20 30 2e   0 -relheight 0.
a7c0: 32 20 5c 0a 09 20 20 20 20 2d 62 6f 72 64 65 72  2 \..    -border
a7d0: 6d 6f 64 65 20 69 67 6e 6f 72 65 0a 20 20 20 20  mode ignore.    
a7e0: 75 70 64 61 74 65 0a 20 20 20 20 64 65 73 74 72  update.    destr
a7f0: 6f 79 20 2e 66 32 0a 20 20 20 20 75 70 64 61 74  oy .f2.    updat
a800: 65 0a 20 20 20 20 6c 69 73 74 20 24 74 6b 5f 74  e.    list $tk_t
a810: 65 78 74 52 65 6c 61 79 6f 75 74 20 24 74 6b 5f  extRelayout $tk_
a820: 74 65 78 74 52 65 64 72 61 77 0a 7d 20 7b 7b 7d  textRedraw.} {{}
a830: 20 7b 62 6f 72 64 65 72 73 20 31 2e 30 20 31 2e   {borders 1.0 1.
a840: 32 30 7d 7d 0a 74 65 73 74 20 74 65 78 74 44 69  20}}.test textDi
a850: 73 70 2d 37 2e 35 20 7b 54 6b 54 65 78 74 52 65  sp-7.5 {TkTextRe
a860: 64 72 61 77 52 65 67 69 6f 6e 7d 20 7b 6e 6f 6e  drawRegion} {non
a870: 50 6f 72 74 61 62 6c 65 7d 20 7b 0a 20 20 20 20  Portable} {.    
a880: 66 72 61 6d 65 20 2e 66 32 20 2d 62 67 20 23 66  frame .f2 -bg #f
a890: 66 30 30 30 30 0a 20 20 20 20 70 6c 61 63 65 20  f0000.    place 
a8a0: 2e 66 32 20 2d 69 6e 20 2e 74 20 2d 72 65 6c 78  .f2 -in .t -relx
a8b0: 20 30 2e 34 20 2d 72 65 6c 77 69 64 74 68 20 30   0.4 -relwidth 0
a8c0: 2e 32 20 2d 72 65 6c 79 20 31 2e 30 20 2d 72 65  .2 -rely 1.0 -re
a8d0: 6c 68 65 69 67 68 74 20 30 2e 32 20 5c 0a 09 20  lheight 0.2 \.. 
a8e0: 20 20 20 2d 61 6e 63 68 6f 72 20 73 20 2d 62 6f     -anchor s -bo
a8f0: 72 64 65 72 6d 6f 64 65 20 69 67 6e 6f 72 65 0a  rdermode ignore.
a900: 20 20 20 20 75 70 64 61 74 65 0a 20 20 20 20 64      update.    d
a910: 65 73 74 72 6f 79 20 2e 66 32 0a 20 20 20 20 75  estroy .f2.    u
a920: 70 64 61 74 65 0a 20 20 20 20 6c 69 73 74 20 24  pdate.    list $
a930: 74 6b 5f 74 65 78 74 52 65 6c 61 79 6f 75 74 20  tk_textRelayout 
a940: 24 74 6b 5f 74 65 78 74 52 65 64 72 61 77 0a 7d  $tk_textRedraw.}
a950: 20 7b 7b 7d 20 7b 62 6f 72 64 65 72 73 20 37 2e   {{} {borders 7.
a960: 30 20 38 2e 30 7d 7d 0a 74 65 73 74 20 74 65 78  0 8.0}}.test tex
a970: 74 44 69 73 70 2d 37 2e 36 20 7b 54 6b 54 65 78  tDisp-7.6 {TkTex
a980: 74 52 65 64 72 61 77 52 65 67 69 6f 6e 7d 20 7b  tRedrawRegion} {
a990: 6e 6f 6e 50 6f 72 74 61 62 6c 65 7d 20 7b 0a 20  nonPortable} {. 
a9a0: 20 20 20 66 72 61 6d 65 20 2e 66 32 20 2d 62 67     frame .f2 -bg
a9b0: 20 23 66 66 30 30 30 30 0a 20 20 20 20 70 6c 61   #ff0000.    pla
a9c0: 63 65 20 2e 66 32 20 2d 69 6e 20 2e 74 20 2d 72  ce .f2 -in .t -r
a9d0: 65 6c 78 20 30 20 2d 72 65 6c 77 69 64 74 68 20  elx 0 -relwidth 
a9e0: 30 2e 32 20 2d 72 65 6c 79 20 30 2e 35 35 20 2d  0.2 -rely 0.55 -
a9f0: 72 65 6c 68 65 69 67 68 74 20 30 2e 32 20 5c 0a  relheight 0.2 \.
aa00: 09 20 20 20 20 2d 61 6e 63 68 6f 72 20 77 20 2d  .    -anchor w -
aa10: 62 6f 72 64 65 72 6d 6f 64 65 20 69 67 6e 6f 72  bordermode ignor
aa20: 65 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20 20  e.    update.   
aa30: 20 64 65 73 74 72 6f 79 20 2e 66 32 0a 20 20 20   destroy .f2.   
aa40: 20 75 70 64 61 74 65 0a 20 20 20 20 6c 69 73 74   update.    list
aa50: 20 24 74 6b 5f 74 65 78 74 52 65 6c 61 79 6f 75   $tk_textRelayou
aa60: 74 20 24 74 6b 5f 74 65 78 74 52 65 64 72 61 77  t $tk_textRedraw
aa70: 0a 7d 20 7b 7b 7d 20 7b 62 6f 72 64 65 72 73 20  .} {{} {borders 
aa80: 33 2e 30 20 34 2e 30 20 35 2e 30 7d 7d 0a 74 65  3.0 4.0 5.0}}.te
aa90: 73 74 20 74 65 78 74 44 69 73 70 2d 37 2e 37 20  st textDisp-7.7 
aaa0: 7b 54 6b 54 65 78 74 52 65 64 72 61 77 52 65 67  {TkTextRedrawReg
aab0: 69 6f 6e 7d 20 7b 6e 6f 6e 50 6f 72 74 61 62 6c  ion} {nonPortabl
aac0: 65 7d 20 7b 0a 20 20 20 20 66 72 61 6d 65 20 2e  e} {.    frame .
aad0: 66 32 20 2d 62 67 20 23 66 66 30 30 30 30 0a 20  f2 -bg #ff0000. 
aae0: 20 20 20 70 6c 61 63 65 20 2e 66 32 20 2d 69 6e     place .f2 -in
aaf0: 20 2e 74 20 2d 72 65 6c 78 20 31 2e 30 20 2d 72   .t -relx 1.0 -r
ab00: 65 6c 77 69 64 74 68 20 30 2e 32 20 2d 72 65 6c  elwidth 0.2 -rel
ab10: 79 20 30 2e 35 35 20 2d 72 65 6c 68 65 69 67 68  y 0.55 -relheigh
ab20: 74 20 30 2e 32 20 5c 0a 09 20 20 20 20 2d 61 6e  t 0.2 \..    -an
ab30: 63 68 6f 72 20 65 20 2d 62 6f 72 64 65 72 6d 6f  chor e -bordermo
ab40: 64 65 20 69 67 6e 6f 72 65 0a 20 20 20 20 75 70  de ignore.    up
ab50: 64 61 74 65 0a 20 20 20 20 64 65 73 74 72 6f 79  date.    destroy
ab60: 20 2e 66 32 0a 20 20 20 20 75 70 64 61 74 65 0a   .f2.    update.
ab70: 20 20 20 20 6c 69 73 74 20 24 74 6b 5f 74 65 78      list $tk_tex
ab80: 74 52 65 6c 61 79 6f 75 74 20 24 74 6b 5f 74 65  tRelayout $tk_te
ab90: 78 74 52 65 64 72 61 77 0a 7d 20 7b 7b 7d 20 7b  xtRedraw.} {{} {
aba0: 62 6f 72 64 65 72 73 20 33 2e 30 20 34 2e 30 20  borders 3.0 4.0 
abb0: 35 2e 30 7d 7d 0a 74 65 73 74 20 74 65 78 74 44  5.0}}.test textD
abc0: 69 73 70 2d 37 2e 38 20 7b 54 6b 54 65 78 74 52  isp-7.8 {TkTextR
abd0: 65 64 72 61 77 52 65 67 69 6f 6e 7d 20 7b 6e 6f  edrawRegion} {no
abe0: 6e 50 6f 72 74 61 62 6c 65 7d 20 7b 0a 20 20 20  nPortable} {.   
abf0: 20 2e 74 20 64 65 6c 65 74 65 20 31 2e 30 20 65   .t delete 1.0 e
ac00: 6e 64 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74  nd.    .t insert
ac10: 20 31 2e 30 20 22 4c 69 6e 65 20 31 5c 6e 4c 69   1.0 "Line 1\nLi
ac20: 6e 65 20 32 5c 6e 4c 69 6e 65 20 33 5c 6e 4c 69  ne 2\nLine 3\nLi
ac30: 6e 65 20 34 5c 6e 4c 69 6e 65 20 35 5c 6e 4c 69  ne 4\nLine 5\nLi
ac40: 6e 65 20 36 5c 6e 22 0a 20 20 20 20 66 72 61 6d  ne 6\n".    fram
ac50: 65 20 2e 66 32 20 2d 62 67 20 23 66 66 30 30 30  e .f2 -bg #ff000
ac60: 30 0a 20 20 20 20 70 6c 61 63 65 20 2e 66 32 20  0.    place .f2 
ac70: 2d 69 6e 20 2e 74 20 2d 72 65 6c 78 20 30 2e 30  -in .t -relx 0.0
ac80: 20 2d 72 65 6c 77 69 64 74 68 20 30 2e 34 20 2d   -relwidth 0.4 -
ac90: 72 65 6c 79 20 30 2e 33 35 20 2d 72 65 6c 68 65  rely 0.35 -relhe
aca0: 69 67 68 74 20 30 2e 34 20 5c 0a 09 20 20 20 20  ight 0.4 \..    
acb0: 2d 61 6e 63 68 6f 72 20 6e 77 20 2d 62 6f 72 64  -anchor nw -bord
acc0: 65 72 6d 6f 64 65 20 69 67 6e 6f 72 65 0a 20 20  ermode ignore.  
acd0: 20 20 75 70 64 61 74 65 0a 20 20 20 20 64 65 73    update.    des
ace0: 74 72 6f 79 20 2e 66 32 0a 20 20 20 20 75 70 64  troy .f2.    upd
acf0: 61 74 65 0a 20 20 20 20 6c 69 73 74 20 24 74 6b  ate.    list $tk
ad00: 5f 74 65 78 74 52 65 6c 61 79 6f 75 74 20 24 74  _textRelayout $t
ad10: 6b 5f 74 65 78 74 52 65 64 72 61 77 0a 7d 20 7b  k_textRedraw.} {
ad20: 7b 7d 20 7b 62 6f 72 64 65 72 73 20 34 2e 30 20  {} {borders 4.0 
ad30: 35 2e 30 20 36 2e 30 20 37 2e 30 20 65 6f 66 7d  5.0 6.0 7.0 eof}
ad40: 7d 0a 2e 74 20 63 6f 6e 66 69 67 75 72 65 20 2d  }..t configure -
ad50: 62 64 20 30 0a 0a 74 65 73 74 20 74 65 78 74 44  bd 0..test textD
ad60: 69 73 70 2d 38 2e 31 20 7b 54 6b 54 65 78 74 43  isp-8.1 {TkTextC
ad70: 68 61 6e 67 65 64 3a 20 72 65 64 69 73 70 6c 61  hanged: redispla
ad80: 79 20 77 68 6f 6c 65 20 6c 69 6e 65 73 7d 20 7b  y whole lines} {
ad90: 74 65 78 74 66 6f 6e 74 73 7d 20 7b 0a 20 20 20  textfonts} {.   
ada0: 20 2e 74 20 63 6f 6e 66 69 67 75 72 65 20 2d 77   .t configure -w
adb0: 72 61 70 20 77 6f 72 64 0a 20 20 20 20 2e 74 20  rap word.    .t 
adc0: 64 65 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a 20  delete 1.0 end. 
add0: 20 20 20 2e 74 20 69 6e 73 65 72 74 20 31 2e 30     .t insert 1.0
ade0: 20 22 4c 69 6e 65 20 31 5c 6e 4c 69 6e 65 20 32   "Line 1\nLine 2
adf0: 20 69 73 20 73 6f 20 6c 6f 6e 67 20 74 68 61 74   is so long that
ae00: 20 69 74 20 77 72 61 70 73 20 61 72 6f 75 6e 64   it wraps around
ae10: 2c 20 74 77 6f 20 74 69 6d 65 73 22 0a 20 20 20  , two times".   
ae20: 20 66 6f 72 65 61 63 68 20 69 20 7b 33 20 34 20   foreach i {3 4 
ae30: 35 20 36 20 37 20 38 20 39 20 31 30 20 31 31 20  5 6 7 8 9 10 11 
ae40: 31 32 20 31 33 20 31 34 20 31 35 7d 20 7b 0a 09  12 13 14 15} {..
ae50: 2e 74 20 69 6e 73 65 72 74 20 65 6e 64 20 22 5c  .t insert end "\
ae60: 6e 4c 69 6e 65 20 24 69 22 0a 20 20 20 20 7d 0a  nLine $i".    }.
ae70: 20 20 20 20 75 70 64 61 74 65 0a 20 20 20 20 2e      update.    .
ae80: 74 20 64 65 6c 65 74 65 20 32 2e 33 36 20 32 2e  t delete 2.36 2.
ae90: 33 38 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20  38.    update.  
aea0: 20 20 6c 69 73 74 20 24 74 6b 5f 74 65 78 74 52    list $tk_textR
aeb0: 65 6c 61 79 6f 75 74 20 24 74 6b 5f 74 65 78 74  elayout $tk_text
aec0: 52 65 64 72 61 77 20 5b 2e 74 20 62 62 6f 78 20  Redraw [.t bbox 
aed0: 32 2e 33 32 5d 0a 7d 20 5b 6c 69 73 74 20 7b 32  2.32].} [list {2
aee0: 2e 30 20 32 2e 31 38 20 32 2e 33 38 7d 20 7b 32  .0 2.18 2.38} {2
aef0: 2e 30 20 32 2e 31 38 20 32 2e 33 38 7d 20 5b 6c  .0 2.18 2.38} [l
af00: 69 73 74 20 31 30 31 20 5b 65 78 70 72 20 7b 32  ist 101 [expr {2
af10: 2a 24 66 69 78 65 64 44 69 66 66 20 2b 20 32 39  *$fixedDiff + 29
af20: 7d 5d 20 37 20 24 66 69 78 65 64 48 65 69 67 68  }] 7 $fixedHeigh
af30: 74 5d 5d 0a 2e 74 20 63 6f 6e 66 69 67 75 72 65  t]]..t configure
af40: 20 2d 77 72 61 70 20 63 68 61 72 0a 74 65 73 74   -wrap char.test
af50: 20 74 65 78 74 44 69 73 70 2d 38 2e 32 20 7b 54   textDisp-8.2 {T
af60: 6b 54 65 78 74 43 68 61 6e 67 65 64 2c 20 72 65  kTextChanged, re
af70: 64 69 73 70 6c 61 79 20 77 68 6f 6c 65 20 6c 69  display whole li
af80: 6e 65 73 7d 20 7b 0a 20 20 20 20 2e 74 20 64 65  nes} {.    .t de
af90: 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a 20 20 20  lete 1.0 end.   
afa0: 20 2e 74 20 69 6e 73 65 72 74 20 31 2e 30 20 22   .t insert 1.0 "
afb0: 4c 69 6e 65 20 31 20 69 73 20 73 6f 20 6c 6f 6e  Line 1 is so lon
afc0: 67 20 74 68 61 74 20 69 74 20 77 72 61 70 73 20  g that it wraps 
afd0: 61 72 6f 75 6e 64 2c 20 74 77 6f 20 74 69 6d 65  around, two time
afe0: 73 22 0a 20 20 20 20 66 6f 72 65 61 63 68 20 69  s".    foreach i
aff0: 20 7b 32 20 33 20 34 20 35 20 36 20 37 20 38 20   {2 3 4 5 6 7 8 
b000: 39 20 31 30 20 31 31 20 31 32 20 31 33 20 31 34  9 10 11 12 13 14
b010: 20 31 35 7d 20 7b 0a 09 2e 74 20 69 6e 73 65 72   15} {...t inser
b020: 74 20 65 6e 64 20 22 5c 6e 4c 69 6e 65 20 24 69  t end "\nLine $i
b030: 22 0a 20 20 20 20 7d 0a 20 20 20 20 75 70 64 61  ".    }.    upda
b040: 74 65 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74  te.    .t insert
b050: 20 31 2e 32 20 78 78 0a 20 20 20 20 75 70 64 61   1.2 xx.    upda
b060: 74 65 0a 20 20 20 20 6c 69 73 74 20 24 74 6b 5f  te.    list $tk_
b070: 74 65 78 74 52 65 6c 61 79 6f 75 74 20 24 74 6b  textRelayout $tk
b080: 5f 74 65 78 74 52 65 64 72 61 77 0a 7d 20 7b 7b  _textRedraw.} {{
b090: 31 2e 30 20 31 2e 32 30 20 31 2e 34 30 7d 20 7b  1.0 1.20 1.40} {
b0a0: 31 2e 30 20 31 2e 32 30 20 31 2e 34 30 7d 7d 0a  1.0 1.20 1.40}}.
b0b0: 74 65 73 74 20 74 65 78 74 44 69 73 70 2d 38 2e  test textDisp-8.
b0c0: 33 20 7b 54 6b 54 65 78 74 43 68 61 6e 67 65 64  3 {TkTextChanged
b0d0: 7d 20 7b 0a 20 20 20 20 2e 74 20 64 65 6c 65 74  } {.    .t delet
b0e0: 65 20 31 2e 30 20 65 6e 64 0a 20 20 20 20 2e 74  e 1.0 end.    .t
b0f0: 20 69 6e 73 65 72 74 20 31 2e 30 20 22 4c 69 6e   insert 1.0 "Lin
b100: 65 20 31 20 69 73 20 73 6f 20 6c 6f 6e 67 20 74  e 1 is so long t
b110: 68 61 74 20 69 74 20 77 72 61 70 73 20 61 72 6f  hat it wraps aro
b120: 75 6e 64 2c 20 74 77 6f 20 74 69 6d 65 73 22 0a  und, two times".
b130: 20 20 20 20 66 6f 72 65 61 63 68 20 69 20 7b 32      foreach i {2
b140: 20 33 20 34 20 35 20 36 20 37 20 38 20 39 20 31   3 4 5 6 7 8 9 1
b150: 30 20 31 31 20 31 32 20 31 33 20 31 34 20 31 35  0 11 12 13 14 15
b160: 7d 20 7b 0a 09 2e 74 20 69 6e 73 65 72 74 20 65  } {...t insert e
b170: 6e 64 20 22 5c 6e 4c 69 6e 65 20 24 69 22 0a 20  nd "\nLine $i". 
b180: 20 20 20 7d 0a 20 20 20 20 75 70 64 61 74 65 0a     }.    update.
b190: 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20 32 2e      .t insert 2.
b1a0: 30 20 78 78 0a 20 20 20 20 75 70 64 61 74 65 0a  0 xx.    update.
b1b0: 20 20 20 20 6c 69 73 74 20 24 74 6b 5f 74 65 78      list $tk_tex
b1c0: 74 52 65 6c 61 79 6f 75 74 20 24 74 6b 5f 74 65  tRelayout $tk_te
b1d0: 78 74 52 65 64 72 61 77 0a 7d 20 7b 32 2e 30 20  xtRedraw.} {2.0 
b1e0: 32 2e 30 7d 0a 74 65 73 74 20 74 65 78 74 44 69  2.0}.test textDi
b1f0: 73 70 2d 38 2e 34 20 7b 54 6b 54 65 78 74 43 68  sp-8.4 {TkTextCh
b200: 61 6e 67 65 64 7d 20 7b 0a 20 20 20 20 2e 74 20  anged} {.    .t 
b210: 64 65 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a 20  delete 1.0 end. 
b220: 20 20 20 2e 74 20 69 6e 73 65 72 74 20 31 2e 30     .t insert 1.0
b230: 20 22 4c 69 6e 65 20 31 20 69 73 20 73 6f 20 6c   "Line 1 is so l
b240: 6f 6e 67 20 74 68 61 74 20 69 74 20 77 72 61 70  ong that it wrap
b250: 73 20 61 72 6f 75 6e 64 2c 20 74 77 6f 20 74 69  s around, two ti
b260: 6d 65 73 22 0a 20 20 20 20 66 6f 72 65 61 63 68  mes".    foreach
b270: 20 69 20 7b 32 20 33 20 34 20 35 20 36 20 37 20   i {2 3 4 5 6 7 
b280: 38 20 39 20 31 30 20 31 31 20 31 32 20 31 33 20  8 9 10 11 12 13 
b290: 31 34 20 31 35 7d 20 7b 0a 09 2e 74 20 69 6e 73  14 15} {...t ins
b2a0: 65 72 74 20 65 6e 64 20 22 5c 6e 4c 69 6e 65 20  ert end "\nLine 
b2b0: 24 69 22 0a 20 20 20 20 7d 0a 20 20 20 20 75 70  $i".    }.    up
b2c0: 64 61 74 65 0a 20 20 20 20 2e 74 20 64 65 6c 65  date.    .t dele
b2d0: 74 65 20 31 2e 35 0a 20 20 20 20 75 70 64 61 74  te 1.5.    updat
b2e0: 65 0a 20 20 20 20 6c 69 73 74 20 24 74 6b 5f 74  e.    list $tk_t
b2f0: 65 78 74 52 65 6c 61 79 6f 75 74 20 24 74 6b 5f  extRelayout $tk_
b300: 74 65 78 74 52 65 64 72 61 77 0a 7d 20 7b 7b 31  textRedraw.} {{1
b310: 2e 30 20 31 2e 32 30 20 31 2e 34 30 7d 20 7b 31  .0 1.20 1.40} {1
b320: 2e 30 20 31 2e 32 30 20 31 2e 34 30 7d 7d 0a 74  .0 1.20 1.40}}.t
b330: 65 73 74 20 74 65 78 74 44 69 73 70 2d 38 2e 35  est textDisp-8.5
b340: 20 7b 54 6b 54 65 78 74 43 68 61 6e 67 65 64 7d   {TkTextChanged}
b350: 20 7b 0a 20 20 20 20 2e 74 20 64 65 6c 65 74 65   {.    .t delete
b360: 20 31 2e 30 20 65 6e 64 0a 20 20 20 20 2e 74 20   1.0 end.    .t 
b370: 69 6e 73 65 72 74 20 31 2e 30 20 22 4c 69 6e 65  insert 1.0 "Line
b380: 20 31 20 69 73 20 73 6f 20 6c 6f 6e 67 20 74 68   1 is so long th
b390: 61 74 20 69 74 20 77 72 61 70 73 20 61 72 6f 75  at it wraps arou
b3a0: 6e 64 2c 20 74 77 6f 20 74 69 6d 65 73 22 0a 20  nd, two times". 
b3b0: 20 20 20 66 6f 72 65 61 63 68 20 69 20 7b 32 20     foreach i {2 
b3c0: 33 20 34 20 35 20 36 20 37 20 38 20 39 20 31 30  3 4 5 6 7 8 9 10
b3d0: 20 31 31 20 31 32 20 31 33 20 31 34 20 31 35 7d   11 12 13 14 15}
b3e0: 20 7b 0a 09 2e 74 20 69 6e 73 65 72 74 20 65 6e   {...t insert en
b3f0: 64 20 22 5c 6e 4c 69 6e 65 20 24 69 22 0a 20 20  d "\nLine $i".  
b400: 20 20 7d 0a 20 20 20 20 75 70 64 61 74 65 0a 20    }.    update. 
b410: 20 20 20 2e 74 20 64 65 6c 65 74 65 20 31 2e 34     .t delete 1.4
b420: 30 20 31 2e 34 34 0a 20 20 20 20 75 70 64 61 74  0 1.44.    updat
b430: 65 0a 20 20 20 20 6c 69 73 74 20 24 74 6b 5f 74  e.    list $tk_t
b440: 65 78 74 52 65 6c 61 79 6f 75 74 20 24 74 6b 5f  extRelayout $tk_
b450: 74 65 78 74 52 65 64 72 61 77 0a 7d 20 7b 7b 31  textRedraw.} {{1
b460: 2e 30 20 31 2e 32 30 20 31 2e 34 30 7d 20 7b 31  .0 1.20 1.40} {1
b470: 2e 30 20 31 2e 32 30 20 31 2e 34 30 7d 7d 0a 74  .0 1.20 1.40}}.t
b480: 65 73 74 20 74 65 78 74 44 69 73 70 2d 38 2e 36  est textDisp-8.6
b490: 20 7b 54 6b 54 65 78 74 43 68 61 6e 67 65 64 7d   {TkTextChanged}
b4a0: 20 7b 0a 20 20 20 20 2e 74 20 64 65 6c 65 74 65   {.    .t delete
b4b0: 20 31 2e 30 20 65 6e 64 0a 20 20 20 20 2e 74 20   1.0 end.    .t 
b4c0: 69 6e 73 65 72 74 20 31 2e 30 20 22 4c 69 6e 65  insert 1.0 "Line
b4d0: 20 31 20 69 73 20 73 6f 20 6c 6f 6e 67 20 74 68   1 is so long th
b4e0: 61 74 20 69 74 20 77 72 61 70 73 20 61 72 6f 75  at it wraps arou
b4f0: 6e 64 2c 20 74 77 6f 20 74 69 6d 65 73 22 0a 20  nd, two times". 
b500: 20 20 20 66 6f 72 65 61 63 68 20 69 20 7b 32 20     foreach i {2 
b510: 33 20 34 20 35 20 36 20 37 20 38 20 39 20 31 30  3 4 5 6 7 8 9 10
b520: 20 31 31 20 31 32 20 31 33 20 31 34 20 31 35 7d   11 12 13 14 15}
b530: 20 7b 0a 09 2e 74 20 69 6e 73 65 72 74 20 65 6e   {...t insert en
b540: 64 20 22 5c 6e 4c 69 6e 65 20 24 69 22 0a 20 20  d "\nLine $i".  
b550: 20 20 7d 0a 20 20 20 20 75 70 64 61 74 65 0a 20    }.    update. 
b560: 20 20 20 2e 74 20 64 65 6c 65 74 65 20 31 2e 34     .t delete 1.4
b570: 31 20 31 2e 34 34 0a 20 20 20 20 75 70 64 61 74  1 1.44.    updat
b580: 65 0a 20 20 20 20 6c 69 73 74 20 24 74 6b 5f 74  e.    list $tk_t
b590: 65 78 74 52 65 6c 61 79 6f 75 74 20 24 74 6b 5f  extRelayout $tk_
b5a0: 74 65 78 74 52 65 64 72 61 77 0a 7d 20 7b 7b 31  textRedraw.} {{1
b5b0: 2e 30 20 31 2e 32 30 20 31 2e 34 30 7d 20 7b 31  .0 1.20 1.40} {1
b5c0: 2e 30 20 31 2e 32 30 20 31 2e 34 30 7d 7d 0a 74  .0 1.20 1.40}}.t
b5d0: 65 73 74 20 74 65 78 74 44 69 73 70 2d 38 2e 37  est textDisp-8.7
b5e0: 20 7b 54 6b 54 65 78 74 43 68 61 6e 67 65 64 7d   {TkTextChanged}
b5f0: 20 7b 0a 20 20 20 20 2e 74 20 64 65 6c 65 74 65   {.    .t delete
b600: 20 31 2e 30 20 65 6e 64 0a 20 20 20 20 2e 74 20   1.0 end.    .t 
b610: 69 6e 73 65 72 74 20 31 2e 30 20 22 4c 69 6e 65  insert 1.0 "Line
b620: 20 31 20 69 73 20 73 6f 20 6c 6f 6e 67 20 74 68   1 is so long th
b630: 61 74 20 69 74 20 77 72 61 70 73 20 61 72 6f 75  at it wraps arou
b640: 6e 64 2c 20 74 77 6f 20 74 69 6d 65 73 22 0a 20  nd, two times". 
b650: 20 20 20 66 6f 72 65 61 63 68 20 69 20 7b 32 20     foreach i {2 
b660: 33 20 34 20 35 20 36 20 37 20 38 20 39 20 31 30  3 4 5 6 7 8 9 10
b670: 20 31 31 20 31 32 20 31 33 20 31 34 20 31 35 7d   11 12 13 14 15}
b680: 20 7b 0a 09 2e 74 20 69 6e 73 65 72 74 20 65 6e   {...t insert en
b690: 64 20 22 5c 6e 4c 69 6e 65 20 24 69 22 0a 20 20  d "\nLine $i".  
b6a0: 20 20 7d 0a 20 20 20 20 75 70 64 61 74 65 0a 20    }.    update. 
b6b0: 20 20 20 2e 74 20 64 65 6c 65 74 65 20 31 2e 32     .t delete 1.2
b6c0: 20 31 2e 65 6e 64 0a 20 20 20 20 75 70 64 61 74   1.end.    updat
b6d0: 65 0a 20 20 20 20 6c 69 73 74 20 24 74 6b 5f 74  e.    list $tk_t
b6e0: 65 78 74 52 65 6c 61 79 6f 75 74 20 24 74 6b 5f  extRelayout $tk_
b6f0: 74 65 78 74 52 65 64 72 61 77 0a 7d 20 7b 7b 31  textRedraw.} {{1
b700: 2e 30 20 39 2e 30 20 31 30 2e 30 7d 20 7b 31 2e  .0 9.0 10.0} {1.
b710: 30 20 39 2e 30 20 31 30 2e 30 7d 7d 0a 74 65 73  0 9.0 10.0}}.tes
b720: 74 20 74 65 78 74 44 69 73 70 2d 38 2e 38 20 7b  t textDisp-8.8 {
b730: 54 6b 54 65 78 74 43 68 61 6e 67 65 64 7d 20 7b  TkTextChanged} {
b740: 0a 20 20 20 20 2e 74 20 64 65 6c 65 74 65 20 31  .    .t delete 1
b750: 2e 30 20 65 6e 64 0a 20 20 20 20 2e 74 20 69 6e  .0 end.    .t in
b760: 73 65 72 74 20 31 2e 30 20 22 4c 69 6e 65 20 31  sert 1.0 "Line 1
b770: 20 69 73 20 73 6f 20 6c 6f 6e 67 20 74 68 61 74   is so long that
b780: 20 69 74 20 77 72 61 70 73 20 61 72 6f 75 6e 64   it wraps around
b790: 2c 20 74 77 6f 20 74 69 6d 65 73 22 0a 20 20 20  , two times".   
b7a0: 20 66 6f 72 65 61 63 68 20 69 20 7b 32 20 33 20   foreach i {2 3 
b7b0: 34 20 35 20 36 20 37 20 38 20 39 20 31 30 20 31  4 5 6 7 8 9 10 1
b7c0: 31 20 31 32 20 31 33 20 31 34 20 31 35 7d 20 7b  1 12 13 14 15} {
b7d0: 0a 09 2e 74 20 69 6e 73 65 72 74 20 65 6e 64 20  ...t insert end 
b7e0: 22 5c 6e 4c 69 6e 65 20 24 69 22 0a 20 20 20 20  "\nLine $i".    
b7f0: 7d 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20 20  }.    update.   
b800: 20 2e 74 20 64 65 6c 65 74 65 20 32 2e 32 0a 20   .t delete 2.2. 
b810: 20 20 20 75 70 64 61 74 65 0a 20 20 20 20 6c 69     update.    li
b820: 73 74 20 24 74 6b 5f 74 65 78 74 52 65 6c 61 79  st $tk_textRelay
b830: 6f 75 74 20 24 74 6b 5f 74 65 78 74 52 65 64 72  out $tk_textRedr
b840: 61 77 0a 7d 20 7b 32 2e 30 20 32 2e 30 7d 0a 74  aw.} {2.0 2.0}.t
b850: 65 73 74 20 74 65 78 74 44 69 73 70 2d 38 2e 39  est textDisp-8.9
b860: 20 7b 54 6b 54 65 78 74 43 68 61 6e 67 65 64 7d   {TkTextChanged}
b870: 20 7b 0a 20 20 20 20 2e 74 20 64 65 6c 65 74 65   {.    .t delete
b880: 20 31 2e 30 20 65 6e 64 0a 20 20 20 20 2e 74 20   1.0 end.    .t 
b890: 69 6e 73 65 72 74 20 31 2e 30 20 22 4c 69 6e 65  insert 1.0 "Line
b8a0: 20 31 20 69 73 20 73 6f 20 6c 6f 6e 67 20 74 68   1 is so long th
b8b0: 61 74 20 69 74 20 77 72 61 70 73 20 61 72 6f 75  at it wraps arou
b8c0: 6e 64 2c 20 74 77 6f 20 74 69 6d 65 73 22 0a 20  nd, two times". 
b8d0: 20 20 20 66 6f 72 65 61 63 68 20 69 20 7b 32 20     foreach i {2 
b8e0: 33 20 34 20 35 20 36 20 37 20 38 20 39 20 31 30  3 4 5 6 7 8 9 10
b8f0: 20 31 31 20 31 32 20 31 33 20 31 34 20 31 35 7d   11 12 13 14 15}
b900: 20 7b 0a 09 2e 74 20 69 6e 73 65 72 74 20 65 6e   {...t insert en
b910: 64 20 22 5c 6e 4c 69 6e 65 20 24 69 22 0a 20 20  d "\nLine $i".  
b920: 20 20 7d 0a 20 20 20 20 75 70 64 61 74 65 0a 20    }.    update. 
b930: 20 20 20 2e 74 20 64 65 6c 65 74 65 20 32 2e 30     .t delete 2.0
b940: 20 33 2e 30 0a 20 20 20 20 75 70 64 61 74 65 0a   3.0.    update.
b950: 20 20 20 20 6c 69 73 74 20 24 74 6b 5f 74 65 78      list $tk_tex
b960: 74 52 65 6c 61 79 6f 75 74 20 24 74 6b 5f 74 65  tRelayout $tk_te
b970: 78 74 52 65 64 72 61 77 0a 7d 20 7b 7b 32 2e 30  xtRedraw.} {{2.0
b980: 20 38 2e 30 7d 20 7b 32 2e 30 20 38 2e 30 7d 7d   8.0} {2.0 8.0}}
b990: 0a 74 65 73 74 20 74 65 78 74 44 69 73 70 2d 38  .test textDisp-8
b9a0: 2e 31 30 20 7b 54 6b 54 65 78 74 43 68 61 6e 67  .10 {TkTextChang
b9b0: 65 64 7d 20 7b 0a 20 20 20 20 2e 74 20 63 6f 6e  ed} {.    .t con
b9c0: 66 69 67 75 72 65 20 2d 77 72 61 70 20 63 68 61  figure -wrap cha
b9d0: 72 0a 20 20 20 20 2e 74 20 64 65 6c 65 74 65 20  r.    .t delete 
b9e0: 31 2e 30 20 65 6e 64 0a 20 20 20 20 2e 74 20 69  1.0 end.    .t i
b9f0: 6e 73 65 72 74 20 31 2e 30 20 22 4c 69 6e 65 20  nsert 1.0 "Line 
ba00: 31 5c 6e 4c 69 6e 65 20 32 20 69 73 20 6c 6f 6e  1\nLine 2 is lon
ba10: 67 20 65 6e 6f 75 67 68 20 74 6f 20 77 72 61 70  g enough to wrap
ba20: 5c 6e 4c 69 6e 65 20 33 20 69 73 20 61 6c 73 6f  \nLine 3 is also
ba30: 20 6c 6f 6e 67 20 65 6e 6f 75 67 68 20 74 6f 20   long enough to 
ba40: 77 72 61 70 5c 6e 4c 69 6e 65 20 34 22 0a 20 20  wrap\nLine 4".  
ba50: 20 20 2e 74 20 74 61 67 20 61 64 64 20 62 69 67    .t tag add big
ba60: 20 32 2e 31 39 0a 20 20 20 20 75 70 64 61 74 65   2.19.    update
ba70: 0a 20 20 20 20 2e 74 20 64 65 6c 65 74 65 20 32  .    .t delete 2
ba80: 2e 31 39 0a 20 20 20 20 75 70 64 61 74 65 0a 20  .19.    update. 
ba90: 20 20 20 73 65 74 20 74 6b 5f 74 65 78 74 52 65     set tk_textRe
baa0: 64 72 61 77 0a 7d 20 7b 32 2e 30 20 32 2e 32 30  draw.} {2.0 2.20
bab0: 20 65 6f 66 7d 0a 74 65 73 74 20 74 65 78 74 44   eof}.test textD
bac0: 69 73 70 2d 38 2e 31 31 20 7b 54 6b 54 65 78 74  isp-8.11 {TkText
bad0: 43 68 61 6e 67 65 64 2c 20 73 63 72 6f 6c 6c 62  Changed, scrollb
bae0: 61 72 20 6e 6f 74 69 66 69 63 61 74 69 6f 6e 20  ar notification 
baf0: 77 68 65 6e 20 63 68 61 6e 67 65 73 20 61 72 65  when changes are
bb00: 20 6f 66 66 2d 73 63 72 65 65 6e 7d 20 7b 0a 20   off-screen} {. 
bb10: 20 20 20 2e 74 20 64 65 6c 65 74 65 20 31 2e 30     .t delete 1.0
bb20: 20 65 6e 64 0a 20 20 20 20 2e 74 20 69 6e 73 65   end.    .t inse
bb30: 72 74 20 65 6e 64 20 22 31 5c 6e 32 5c 6e 33 5c  rt end "1\n2\n3\
bb40: 6e 34 5c 6e 35 5c 6e 36 5c 6e 37 5c 6e 38 5c 6e  n4\n5\n6\n7\n8\n
bb50: 39 5c 6e 31 30 5c 6e 31 31 5c 6e 31 32 5c 6e 22  9\n10\n11\n12\n"
bb60: 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69 67 75 72  .    .t configur
bb70: 65 20 2d 79 73 63 72 6f 6c 6c 63 6f 6d 6d 61 6e  e -yscrollcomman
bb80: 64 20 73 63 72 6f 6c 6c 0a 20 20 20 20 75 70 64  d scroll.    upd
bb90: 61 74 65 0a 20 20 20 20 73 65 74 20 73 63 72 6f  ate.    set scro
bba0: 6c 6c 49 6e 66 6f 20 22 22 0a 20 20 20 20 2e 74  llInfo "".    .t
bbb0: 20 69 6e 73 65 72 74 20 65 6e 64 20 22 61 5c 6e   insert end "a\n
bbc0: 62 5c 6e 63 5c 6e 22 0a 20 20 20 20 23 20 57 65  b\nc\n".    # We
bbd0: 20 6e 65 65 64 20 74 6f 20 77 61 69 74 20 66 6f   need to wait fo
bbe0: 72 20 6f 75 72 20 61 73 79 63 68 72 6f 6e 6f 75  r our asychronou
bbf0: 73 20 63 61 6c 6c 62 61 63 6b 73 20 74 6f 20 75  s callbacks to u
bc00: 70 64 61 74 65 20 74 68 65 0a 20 20 20 20 23 20  pdate the.    # 
bc10: 73 63 72 6f 6c 6c 62 61 72 0a 20 20 20 20 75 70  scrollbar.    up
bc20: 64 61 74 65 20 3b 20 2e 74 20 73 79 6e 63 3b 20  date ; .t sync; 
bc30: 75 70 64 61 74 65 0a 20 20 20 20 2e 74 20 63 6f  update.    .t co
bc40: 6e 66 69 67 75 72 65 20 2d 79 73 63 72 6f 6c 6c  nfigure -yscroll
bc50: 63 6f 6d 6d 61 6e 64 20 22 22 0a 20 20 20 20 73  command "".    s
bc60: 65 74 20 73 63 72 6f 6c 6c 49 6e 66 6f 0a 7d 20  et scrollInfo.} 
bc70: 7b 30 2e 30 20 30 2e 36 32 35 7d 0a 74 65 73 74  {0.0 0.625}.test
bc80: 20 74 65 78 74 44 69 73 70 2d 38 2e 31 32 20 7b   textDisp-8.12 {
bc90: 54 6b 54 65 78 74 43 68 61 6e 67 65 64 2c 20 6d  TkTextChanged, m
bca0: 6f 76 69 6e 67 20 74 68 65 20 69 6e 73 65 72 74  oving the insert
bcb0: 20 63 75 72 73 6f 72 20 72 65 64 72 61 77 73 20   cursor redraws 
bcc0: 6f 6e 6c 79 20 70 61 73 74 20 61 6e 64 20 6e 65  only past and ne
bcd0: 77 20 6c 69 6e 65 73 7d 20 7b 0a 20 20 20 20 2e  w lines} {.    .
bce0: 74 20 64 65 6c 65 74 65 20 31 2e 30 20 65 6e 64  t delete 1.0 end
bcf0: 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69 67 75 72  .    .t configur
bd00: 65 20 2d 77 72 61 70 20 6e 6f 6e 65 0a 20 20 20  e -wrap none.   
bd10: 20 66 6f 72 20 7b 73 65 74 20 69 20 31 7d 20 7b   for {set i 1} {
bd20: 24 69 20 3c 20 32 35 7d 20 7b 69 6e 63 72 20 69  $i < 25} {incr i
bd30: 7d 20 7b 0a 20 20 20 20 20 20 20 20 2e 74 20 69  } {.        .t i
bd40: 6e 73 65 72 74 20 65 6e 64 20 22 4c 69 6e 65 20  nsert end "Line 
bd50: 24 69 20 4c 69 6e 65 20 24 69 5c 6e 22 0a 20 20  $i Line $i\n".  
bd60: 20 20 7d 0a 20 20 20 20 2e 74 20 74 61 67 20 61    }.    .t tag a
bd70: 64 64 20 68 69 64 64 65 6e 20 35 2e 30 20 38 2e  dd hidden 5.0 8.
bd80: 30 0a 20 20 20 20 2e 74 20 74 61 67 20 63 6f 6e  0.    .t tag con
bd90: 66 69 67 75 72 65 20 68 69 64 64 65 6e 20 2d 65  figure hidden -e
bda0: 6c 69 64 65 20 74 72 75 65 0a 20 20 20 20 2e 74  lide true.    .t
bdb0: 20 6d 61 72 6b 20 73 65 74 20 69 6e 73 65 72 74   mark set insert
bdc0: 20 39 2e 30 0a 20 20 20 20 75 70 64 61 74 65 0a   9.0.    update.
bdd0: 20 20 20 20 2e 74 20 6d 61 72 6b 20 73 65 74 20      .t mark set 
bde0: 69 6e 73 65 72 74 20 38 2e 30 20 20 20 20 20 20  insert 8.0      
bdf0: 20 20 3b 20 23 20 75 70 20 6f 6e 65 20 6c 69 6e    ; # up one lin
be00: 65 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20 20  e.    update.   
be10: 20 73 65 74 20 72 65 73 20 5b 6c 69 73 74 20 24   set res [list $
be20: 74 6b 5f 74 65 78 74 52 65 64 72 61 77 5d 0a 20  tk_textRedraw]. 
be30: 20 20 20 2e 74 20 6d 61 72 6b 20 73 65 74 20 69     .t mark set i
be40: 6e 73 65 72 74 20 31 32 2e 32 20 20 20 20 20 20  nsert 12.2      
be50: 20 3b 20 23 20 69 6e 20 74 68 65 20 76 69 73 69   ; # in the visi
be60: 62 6c 65 20 74 65 78 74 0a 20 20 20 20 75 70 64  ble text.    upd
be70: 61 74 65 0a 20 20 20 20 6c 61 70 70 65 6e 64 20  ate.    lappend 
be80: 72 65 73 20 24 74 6b 5f 74 65 78 74 52 65 64 72  res $tk_textRedr
be90: 61 77 0a 20 20 20 20 2e 74 20 6d 61 72 6b 20 73  aw.    .t mark s
bea0: 65 74 20 69 6e 73 65 72 74 20 36 2e 35 20 20 20  et insert 6.5   
beb0: 20 20 20 20 20 3b 20 23 20 69 6e 20 74 68 65 20       ; # in the 
bec0: 68 69 64 64 65 6e 20 74 65 78 74 0a 20 20 20 20  hidden text.    
bed0: 75 70 64 61 74 65 0a 20 20 20 20 6c 61 70 70 65  update.    lappe
bee0: 6e 64 20 72 65 73 20 24 74 6b 5f 74 65 78 74 52  nd res $tk_textR
bef0: 65 64 72 61 77 0a 20 20 20 20 2e 74 20 6d 61 72  edraw.    .t mar
bf00: 6b 20 73 65 74 20 69 6e 73 65 72 74 20 33 2e 35  k set insert 3.5
bf10: 20 20 20 20 20 20 20 20 3b 20 23 20 69 6e 20 74          ; # in t
bf20: 68 65 20 76 69 73 69 62 6c 65 20 74 65 78 74 20  he visible text 
bf30: 61 67 61 69 6e 0a 20 20 20 20 75 70 64 61 74 65  again.    update
bf40: 0a 20 20 20 20 6c 61 70 70 65 6e 64 20 72 65 73  .    lappend res
bf50: 20 24 74 6b 5f 74 65 78 74 52 65 64 72 61 77 0a   $tk_textRedraw.
bf60: 20 20 20 20 2e 74 20 6d 61 72 6b 20 73 65 74 20      .t mark set 
bf70: 69 6e 73 65 72 74 20 33 2e 38 20 20 20 20 20 20  insert 3.8      
bf80: 20 20 3b 20 23 20 77 69 74 68 69 6e 20 74 68 65    ; # within the
bf90: 20 73 61 6d 65 20 6c 69 6e 65 0a 20 20 20 20 75   same line.    u
bfa0: 70 64 61 74 65 0a 20 20 20 20 6c 61 70 70 65 6e  pdate.    lappen
bfb0: 64 20 72 65 73 20 24 74 6b 5f 74 65 78 74 52 65  d res $tk_textRe
bfc0: 64 72 61 77 0a 7d 20 7b 7b 35 2e 30 20 39 2e 30  draw.} {{5.0 9.0
bfd0: 7d 20 7b 35 2e 30 20 31 32 2e 30 7d 20 7b 35 2e  } {5.0 12.0} {5.
bfe0: 30 20 31 32 2e 30 7d 20 7b 33 2e 30 20 35 2e 30  0 12.0} {3.0 5.0
bff0: 7d 20 33 2e 30 7d 0a 74 65 73 74 20 74 65 78 74  } 3.0}.test text
c000: 44 69 73 70 2d 38 2e 31 33 20 7b 54 6b 54 65 78  Disp-8.13 {TkTex
c010: 74 43 68 61 6e 67 65 64 2c 20 75 73 65 64 20 74  tChanged, used t
c020: 6f 20 63 72 61 73 68 2c 20 73 65 65 20 5b 30 36  o crash, see [06
c030: 63 31 34 33 33 39 30 36 5d 7d 20 7b 0a 20 20 20  c1433906]} {.   
c040: 20 2e 74 20 64 65 6c 65 74 65 20 31 2e 30 20 65   .t delete 1.0 e
c050: 6e 64 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74  nd.    .t insert
c060: 20 31 2e 30 20 5c 6e 4c 69 6e 65 32 5c 6e 4c 69   1.0 \nLine2\nLi
c070: 6e 65 33 5c 6e 0a 20 20 20 20 75 70 64 61 74 65  ne3\n.    update
c080: 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20 33  .    .t insert 3
c090: 2e 30 20 22 22 0a 20 20 20 20 2e 74 20 64 65 6c  .0 "".    .t del
c0a0: 65 74 65 20 31 2e 30 20 32 2e 30 0a 20 20 20 20  ete 1.0 2.0.    
c0b0: 75 70 64 61 74 65 20 69 64 6c 65 74 61 73 6b 73  update idletasks
c0c0: 0a 7d 20 7b 7d 0a 0a 74 65 73 74 20 74 65 78 74  .} {}..test text
c0d0: 44 69 73 70 2d 39 2e 31 20 7b 54 6b 54 65 78 74  Disp-9.1 {TkText
c0e0: 52 65 64 72 61 77 54 61 67 7d 20 7b 0a 20 20 20  RedrawTag} {.   
c0f0: 20 2e 74 20 63 6f 6e 66 69 67 75 72 65 20 2d 77   .t configure -w
c100: 72 61 70 20 63 68 61 72 0a 20 20 20 20 2e 74 20  rap char.    .t 
c110: 64 65 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a 20  delete 1.0 end. 
c120: 20 20 20 2e 74 20 69 6e 73 65 72 74 20 31 2e 30     .t insert 1.0
c130: 20 22 4c 69 6e 65 20 31 5c 6e 4c 69 6e 65 20 32   "Line 1\nLine 2
c140: 20 69 73 20 6c 6f 6e 67 20 65 6e 6f 75 67 68 20   is long enough 
c150: 74 6f 20 77 72 61 70 20 61 72 6f 75 6e 64 5c 6e  to wrap around\n
c160: 4c 69 6e 65 20 33 5c 6e 4c 69 6e 65 20 34 22 0a  Line 3\nLine 4".
c170: 20 20 20 20 75 70 64 61 74 65 0a 20 20 20 20 2e      update.    .
c180: 74 20 74 61 67 20 61 64 64 20 62 69 67 20 32 2e  t tag add big 2.
c190: 32 20 32 2e 34 0a 20 20 20 20 75 70 64 61 74 65  2 2.4.    update
c1a0: 0a 20 20 20 20 6c 69 73 74 20 24 74 6b 5f 74 65  .    list $tk_te
c1b0: 78 74 52 65 6c 61 79 6f 75 74 20 24 74 6b 5f 74  xtRelayout $tk_t
c1c0: 65 78 74 52 65 64 72 61 77 0a 7d 20 7b 7b 32 2e  extRedraw.} {{2.
c1d0: 30 20 32 2e 31 38 7d 20 7b 32 2e 30 20 32 2e 31  0 2.18} {2.0 2.1
c1e0: 38 7d 7d 0a 74 65 73 74 20 74 65 78 74 44 69 73  8}}.test textDis
c1f0: 70 2d 39 2e 32 20 7b 54 6b 54 65 78 74 52 65 64  p-9.2 {TkTextRed
c200: 72 61 77 54 61 67 7d 20 7b 74 65 78 74 66 6f 6e  rawTag} {textfon
c210: 74 73 7d 20 7b 0a 20 20 20 20 2e 74 20 63 6f 6e  ts} {.    .t con
c220: 66 69 67 75 72 65 20 2d 77 72 61 70 20 63 68 61  figure -wrap cha
c230: 72 0a 20 20 20 20 2e 74 20 64 65 6c 65 74 65 20  r.    .t delete 
c240: 31 2e 30 20 65 6e 64 0a 20 20 20 20 2e 74 20 69  1.0 end.    .t i
c250: 6e 73 65 72 74 20 31 2e 30 20 22 4c 69 6e 65 20  nsert 1.0 "Line 
c260: 31 5c 6e 4c 69 6e 65 20 32 20 69 73 20 6c 6f 6e  1\nLine 2 is lon
c270: 67 20 65 6e 6f 75 67 68 20 74 6f 20 77 72 61 70  g enough to wrap
c280: 20 61 72 6f 75 6e 64 5c 6e 4c 69 6e 65 20 33 5c   around\nLine 3\
c290: 6e 4c 69 6e 65 20 34 22 0a 20 20 20 20 75 70 64  nLine 4".    upd
c2a0: 61 74 65 0a 20 20 20 20 2e 74 20 74 61 67 20 61  ate.    .t tag a
c2b0: 64 64 20 62 69 67 20 31 2e 32 20 32 2e 34 0a 20  dd big 1.2 2.4. 
c2c0: 20 20 20 75 70 64 61 74 65 0a 20 20 20 20 6c 69     update.    li
c2d0: 73 74 20 24 74 6b 5f 74 65 78 74 52 65 6c 61 79  st $tk_textRelay
c2e0: 6f 75 74 20 24 74 6b 5f 74 65 78 74 52 65 64 72  out $tk_textRedr
c2f0: 61 77 0a 7d 20 7b 7b 31 2e 30 20 32 2e 30 20 32  aw.} {{1.0 2.0 2
c300: 2e 31 37 7d 20 7b 31 2e 30 20 32 2e 30 20 32 2e  .17} {1.0 2.0 2.
c310: 31 37 7d 7d 0a 74 65 73 74 20 74 65 78 74 44 69  17}}.test textDi
c320: 73 70 2d 39 2e 33 20 7b 54 6b 54 65 78 74 52 65  sp-9.3 {TkTextRe
c330: 64 72 61 77 54 61 67 7d 20 7b 0a 20 20 20 20 2e  drawTag} {.    .
c340: 74 20 63 6f 6e 66 69 67 75 72 65 20 2d 77 72 61  t configure -wra
c350: 70 20 63 68 61 72 0a 20 20 20 20 2e 74 20 64 65  p char.    .t de
c360: 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a 20 20 20  lete 1.0 end.   
c370: 20 2e 74 20 69 6e 73 65 72 74 20 31 2e 30 20 22   .t insert 1.0 "
c380: 4c 69 6e 65 20 31 5c 6e 4c 69 6e 65 20 32 20 69  Line 1\nLine 2 i
c390: 73 20 6c 6f 6e 67 20 65 6e 6f 75 67 68 20 74 6f  s long enough to
c3a0: 20 77 72 61 70 20 61 72 6f 75 6e 64 5c 6e 4c 69   wrap around\nLi
c3b0: 6e 65 20 33 5c 6e 4c 69 6e 65 20 34 22 0a 20 20  ne 3\nLine 4".  
c3c0: 20 20 75 70 64 61 74 65 0a 20 20 20 20 2e 74 20    update.    .t 
c3d0: 74 61 67 20 61 64 64 20 62 69 67 20 32 2e 32 20  tag add big 2.2 
c3e0: 32 2e 34 0a 20 20 20 20 75 70 64 61 74 65 0a 20  2.4.    update. 
c3f0: 20 20 20 2e 74 20 74 61 67 20 72 65 6d 6f 76 65     .t tag remove
c400: 20 62 69 67 20 31 2e 30 20 65 6e 64 0a 20 20 20   big 1.0 end.   
c410: 20 75 70 64 61 74 65 0a 20 20 20 20 6c 69 73 74   update.    list
c420: 20 24 74 6b 5f 74 65 78 74 52 65 6c 61 79 6f 75   $tk_textRelayou
c430: 74 20 24 74 6b 5f 74 65 78 74 52 65 64 72 61 77  t $tk_textRedraw
c440: 0a 7d 20 7b 7b 32 2e 30 20 32 2e 32 30 7d 20 7b  .} {{2.0 2.20} {
c450: 32 2e 30 20 32 2e 32 30 20 65 6f 66 7d 7d 0a 74  2.0 2.20 eof}}.t
c460: 65 73 74 20 74 65 78 74 44 69 73 70 2d 39 2e 34  est textDisp-9.4
c470: 20 7b 54 6b 54 65 78 74 52 65 64 72 61 77 54 61   {TkTextRedrawTa
c480: 67 7d 20 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20  g} -constraints 
c490: 74 65 78 74 66 6f 6e 74 73 20 2d 62 6f 64 79 20  textfonts -body 
c4a0: 7b 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69 67 75  {.    .t configu
c4b0: 72 65 20 2d 77 72 61 70 20 63 68 61 72 0a 20 20  re -wrap char.  
c4c0: 20 20 2e 74 20 64 65 6c 65 74 65 20 31 2e 30 20    .t delete 1.0 
c4d0: 65 6e 64 0a 20 20 20 20 2e 74 20 69 6e 73 65 72  end.    .t inser
c4e0: 74 20 31 2e 30 20 22 4c 69 6e 65 20 31 5c 6e 4c  t 1.0 "Line 1\nL
c4f0: 69 6e 65 20 32 20 69 73 20 6c 6f 6e 67 20 65 6e  ine 2 is long en
c500: 6f 75 67 68 20 74 6f 20 77 72 61 70 20 61 72 6f  ough to wrap aro
c510: 75 6e 64 5c 6e 4c 69 6e 65 20 33 5c 6e 4c 69 6e  und\nLine 3\nLin
c520: 65 20 34 22 0a 20 20 20 20 75 70 64 61 74 65 0a  e 4".    update.
c530: 20 20 20 20 2e 74 20 74 61 67 20 61 64 64 20 62      .t tag add b
c540: 69 67 20 32 2e 32 20 32 2e 32 30 0a 20 20 20 20  ig 2.2 2.20.    
c550: 75 70 64 61 74 65 0a 20 20 20 20 2e 74 20 74 61  update.    .t ta
c560: 67 20 72 65 6d 6f 76 65 20 62 69 67 20 31 2e 30  g remove big 1.0
c570: 20 65 6e 64 0a 20 20 20 20 75 70 64 61 74 65 0a   end.    update.
c580: 20 20 20 20 6c 69 73 74 20 24 74 6b 5f 74 65 78      list $tk_tex
c590: 74 52 65 6c 61 79 6f 75 74 20 24 74 6b 5f 74 65  tRelayout $tk_te
c5a0: 78 74 52 65 64 72 61 77 0a 7d 20 2d 72 65 73 75  xtRedraw.} -resu
c5b0: 6c 74 20 7b 7b 32 2e 30 20 32 2e 32 30 7d 20 7b  lt {{2.0 2.20} {
c5c0: 32 2e 30 20 32 2e 32 30 20 65 6f 66 7d 7d 0a 74  2.0 2.20 eof}}.t
c5d0: 65 73 74 20 74 65 78 74 44 69 73 70 2d 39 2e 35  est textDisp-9.5
c5e0: 20 7b 54 6b 54 65 78 74 52 65 64 72 61 77 54 61   {TkTextRedrawTa
c5f0: 67 7d 20 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20  g} -constraints 
c600: 74 65 78 74 66 6f 6e 74 73 20 2d 62 6f 64 79 20  textfonts -body 
c610: 7b 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69 67 75  {.    .t configu
c620: 72 65 20 2d 77 72 61 70 20 63 68 61 72 0a 20 20  re -wrap char.  
c630: 20 20 2e 74 20 64 65 6c 65 74 65 20 31 2e 30 20    .t delete 1.0 
c640: 65 6e 64 0a 20 20 20 20 2e 74 20 69 6e 73 65 72  end.    .t inser
c650: 74 20 31 2e 30 20 22 4c 69 6e 65 20 31 5c 6e 4c  t 1.0 "Line 1\nL
c660: 69 6e 65 20 32 20 69 73 20 6c 6f 6e 67 20 65 6e  ine 2 is long en
c670: 6f 75 67 68 20 74 6f 20 77 72 61 70 20 61 72 6f  ough to wrap aro
c680: 75 6e 64 5c 6e 4c 69 6e 65 20 33 5c 6e 4c 69 6e  und\nLine 3\nLin
c690: 65 20 34 22 0a 20 20 20 20 75 70 64 61 74 65 0a  e 4".    update.
c6a0: 20 20 20 20 2e 74 20 74 61 67 20 61 64 64 20 62      .t tag add b
c6b0: 69 67 20 32 2e 32 20 32 2e 65 6e 64 0a 20 20 20  ig 2.2 2.end.   
c6c0: 20 75 70 64 61 74 65 0a 20 20 20 20 2e 74 20 74   update.    .t t
c6d0: 61 67 20 72 65 6d 6f 76 65 20 62 69 67 20 31 2e  ag remove big 1.
c6e0: 30 20 65 6e 64 0a 20 20 20 20 75 70 64 61 74 65  0 end.    update
c6f0: 0a 20 20 20 20 6c 69 73 74 20 24 74 6b 5f 74 65  .    list $tk_te
c700: 78 74 52 65 6c 61 79 6f 75 74 20 24 74 6b 5f 74  xtRelayout $tk_t
c710: 65 78 74 52 65 64 72 61 77 0a 7d 20 2d 72 65 73  extRedraw.} -res
c720: 75 6c 74 20 7b 7b 32 2e 30 20 32 2e 32 30 7d 20  ult {{2.0 2.20} 
c730: 7b 32 2e 30 20 32 2e 32 30 20 65 6f 66 7d 7d 0a  {2.0 2.20 eof}}.
c740: 74 65 73 74 20 74 65 78 74 44 69 73 70 2d 39 2e  test textDisp-9.
c750: 36 20 7b 54 6b 54 65 78 74 52 65 64 72 61 77 54  6 {TkTextRedrawT
c760: 61 67 7d 20 7b 0a 20 20 20 20 2e 74 20 63 6f 6e  ag} {.    .t con
c770: 66 69 67 75 72 65 20 2d 77 72 61 70 20 63 68 61  figure -wrap cha
c780: 72 0a 20 20 20 20 2e 74 20 64 65 6c 65 74 65 20  r.    .t delete 
c790: 31 2e 30 20 65 6e 64 0a 20 20 20 20 2e 74 20 69  1.0 end.    .t i
c7a0: 6e 73 65 72 74 20 31 2e 30 20 22 4c 69 6e 65 20  nsert 1.0 "Line 
c7b0: 31 5c 6e 4c 69 6e 65 20 32 20 69 73 20 6c 6f 6e  1\nLine 2 is lon
c7c0: 67 20 65 6e 6f 75 67 68 20 74 6f 20 77 72 61 70  g enough to wrap
c7d0: 5c 6e 4c 69 6e 65 20 33 20 69 73 20 61 6c 73 6f  \nLine 3 is also
c7e0: 20 6c 6f 6e 67 20 65 6e 6f 75 67 68 20 74 6f 20   long enough to 
c7f0: 77 72 61 70 22 0a 20 20 20 20 75 70 64 61 74 65  wrap".    update
c800: 0a 20 20 20 20 2e 74 20 74 61 67 20 61 64 64 20  .    .t tag add 
c810: 62 69 67 20 32 2e 32 20 33 2e 35 0a 20 20 20 20  big 2.2 3.5.    
c820: 75 70 64 61 74 65 0a 20 20 20 20 2e 74 20 74 61  update.    .t ta
c830: 67 20 72 65 6d 6f 76 65 20 62 69 67 20 31 2e 30  g remove big 1.0
c840: 20 65 6e 64 0a 20 20 20 20 75 70 64 61 74 65 0a   end.    update.
c850: 20 20 20 20 6c 69 73 74 20 24 74 6b 5f 74 65 78      list $tk_tex
c860: 74 52 65 6c 61 79 6f 75 74 20 24 74 6b 5f 74 65  tRelayout $tk_te
c870: 78 74 52 65 64 72 61 77 0a 7d 20 7b 7b 32 2e 30  xtRedraw.} {{2.0
c880: 20 32 2e 32 30 20 33 2e 30 20 33 2e 32 30 7d 20   2.20 3.0 3.20} 
c890: 7b 32 2e 30 20 32 2e 32 30 20 33 2e 30 20 33 2e  {2.0 2.20 3.0 3.
c8a0: 32 30 20 65 6f 66 7d 7d 0a 74 65 73 74 20 74 65  20 eof}}.test te
c8b0: 78 74 44 69 73 70 2d 39 2e 37 20 7b 54 6b 54 65  xtDisp-9.7 {TkTe
c8c0: 78 74 52 65 64 72 61 77 54 61 67 7d 20 7b 0a 20  xtRedrawTag} {. 
c8d0: 20 20 20 2e 74 20 63 6f 6e 66 69 67 75 72 65 20     .t configure 
c8e0: 2d 77 72 61 70 20 63 68 61 72 0a 20 20 20 20 2e  -wrap char.    .
c8f0: 74 20 64 65 6c 65 74 65 20 31 2e 30 20 65 6e 64  t delete 1.0 end
c900: 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20 31  .    .t insert 1
c910: 2e 30 20 22 4c 69 6e 65 20 31 5c 6e 4c 69 6e 65  .0 "Line 1\nLine
c920: 20 32 20 69 73 20 6c 6f 6e 67 20 65 6e 6f 75 67   2 is long enoug
c930: 68 20 74 6f 20 77 72 61 70 5c 6e 4c 69 6e 65 20  h to wrap\nLine 
c940: 33 20 69 73 20 61 6c 73 6f 20 6c 6f 6e 67 20 65  3 is also long e
c950: 6e 6f 75 67 68 20 74 6f 20 77 72 61 70 5c 6e 4c  nough to wrap\nL
c960: 69 6e 65 20 34 22 0a 20 20 20 20 2e 74 20 74 61  ine 4".    .t ta
c970: 67 20 61 64 64 20 62 69 67 20 32 2e 31 39 0a 20  g add big 2.19. 
c980: 20 20 20 75 70 64 61 74 65 0a 20 20 20 20 2e 74     update.    .t
c990: 20 74 61 67 20 72 65 6d 6f 76 65 20 62 69 67 20   tag remove big 
c9a0: 32 2e 31 39 0a 20 20 20 20 75 70 64 61 74 65 0a  2.19.    update.
c9b0: 20 20 20 20 73 65 74 20 74 6b 5f 74 65 78 74 52      set tk_textR
c9c0: 65 64 72 61 77 0a 7d 20 7b 32 2e 30 20 32 2e 32  edraw.} {2.0 2.2
c9d0: 30 20 65 6f 66 7d 0a 74 65 73 74 20 74 65 78 74  0 eof}.test text
c9e0: 44 69 73 70 2d 39 2e 38 20 7b 54 6b 54 65 78 74  Disp-9.8 {TkText
c9f0: 52 65 64 72 61 77 54 61 67 7d 20 7b 74 65 78 74  RedrawTag} {text
ca00: 66 6f 6e 74 73 7d 20 7b 0a 20 20 20 20 2e 74 20  fonts} {.    .t 
ca10: 63 6f 6e 66 69 67 75 72 65 20 2d 77 72 61 70 20  configure -wrap 
ca20: 63 68 61 72 0a 20 20 20 20 2e 74 20 64 65 6c 65  char.    .t dele
ca30: 74 65 20 31 2e 30 20 65 6e 64 0a 20 20 20 20 2e  te 1.0 end.    .
ca40: 74 20 69 6e 73 65 72 74 20 31 2e 30 20 22 4c 69  t insert 1.0 "Li
ca50: 6e 65 20 31 5c 6e 4c 69 6e 65 20 32 20 69 73 20  ne 1\nLine 2 is 
ca60: 6c 6f 6e 67 20 65 6e 6f 75 67 68 20 74 6f 20 77  long enough to w
ca70: 72 61 70 5c 6e 4c 69 6e 65 20 33 20 69 73 20 61  rap\nLine 3 is a
ca80: 6c 73 6f 20 6c 6f 6e 67 20 65 6e 6f 75 67 68 20  lso long enough 
ca90: 74 6f 20 77 72 61 70 5c 6e 4c 69 6e 65 20 34 22  to wrap\nLine 4"
caa0: 0a 20 20 20 20 2e 74 20 74 61 67 20 61 64 64 20  .    .t tag add 
cab0: 62 69 67 20 31 2e 30 20 32 2e 30 0a 20 20 20 20  big 1.0 2.0.    
cac0: 75 70 64 61 74 65 0a 20 20 20 20 2e 74 20 74 61  update.    .t ta
cad0: 67 20 61 64 64 20 62 69 67 20 32 2e 30 20 32 2e  g add big 2.0 2.
cae0: 35 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20 20  5.    update.   
caf0: 20 73 65 74 20 74 6b 5f 74 65 78 74 52 65 64 72   set tk_textRedr
cb00: 61 77 0a 7d 20 7b 32 2e 30 20 32 2e 31 37 7d 0a  aw.} {2.0 2.17}.
cb10: 74 65 73 74 20 74 65 78 74 44 69 73 70 2d 39 2e  test textDisp-9.
cb20: 39 20 7b 54 6b 54 65 78 74 52 65 64 72 61 77 54  9 {TkTextRedrawT
cb30: 61 67 7d 20 7b 74 65 78 74 66 6f 6e 74 73 7d 20  ag} {textfonts} 
cb40: 7b 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69 67 75  {.    .t configu
cb50: 72 65 20 2d 77 72 61 70 20 63 68 61 72 0a 20 20  re -wrap char.  
cb60: 20 20 2e 74 20 64 65 6c 65 74 65 20 31 2e 30 20    .t delete 1.0 
cb70: 65 6e 64 0a 20 20 20 20 2e 74 20 69 6e 73 65 72  end.    .t inser
cb80: 74 20 31 2e 30 20 22 4c 69 6e 65 20 31 5c 6e 4c  t 1.0 "Line 1\nL
cb90: 69 6e 65 20 32 20 69 73 20 6c 6f 6e 67 20 65 6e  ine 2 is long en
cba0: 6f 75 67 68 20 74 6f 20 77 72 61 70 5c 6e 4c 69  ough to wrap\nLi
cbb0: 6e 65 20 33 20 69 73 20 61 6c 73 6f 20 6c 6f 6e  ne 3 is also lon
cbc0: 67 20 65 6e 6f 75 67 68 20 74 6f 20 77 72 61 70  g enough to wrap
cbd0: 5c 6e 4c 69 6e 65 20 34 22 0a 20 20 20 20 2e 74  \nLine 4".    .t
cbe0: 20 74 61 67 20 61 64 64 20 62 69 67 20 31 2e 30   tag add big 1.0
cbf0: 20 32 2e 30 0a 20 20 20 20 75 70 64 61 74 65 0a   2.0.    update.
cc00: 20 20 20 20 2e 74 20 74 61 67 20 61 64 64 20 62      .t tag add b
cc10: 69 67 20 31 2e 35 20 32 2e 35 0a 20 20 20 20 75  ig 1.5 2.5.    u
cc20: 70 64 61 74 65 0a 20 20 20 20 73 65 74 20 74 6b  pdate.    set tk
cc30: 5f 74 65 78 74 52 65 64 72 61 77 0a 7d 20 7b 32  _textRedraw.} {2
cc40: 2e 30 20 32 2e 31 37 7d 0a 74 65 73 74 20 74 65  .0 2.17}.test te
cc50: 78 74 44 69 73 70 2d 39 2e 31 30 20 7b 54 6b 54  xtDisp-9.10 {TkT
cc60: 65 78 74 52 65 64 72 61 77 54 61 67 7d 20 7b 0a  extRedrawTag} {.
cc70: 20 20 20 20 2e 74 20 63 6f 6e 66 69 67 75 72 65      .t configure
cc80: 20 2d 77 72 61 70 20 63 68 61 72 0a 20 20 20 20   -wrap char.    
cc90: 2e 74 20 64 65 6c 65 74 65 20 31 2e 30 20 65 6e  .t delete 1.0 en
cca0: 64 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20  d.    .t insert 
ccb0: 31 2e 30 20 22 4c 69 6e 65 20 31 5c 6e 4c 69 6e  1.0 "Line 1\nLin
ccc0: 65 20 32 20 69 73 20 6c 6f 6e 67 20 65 6e 6f 75  e 2 is long enou
ccd0: 67 68 20 74 6f 20 77 72 61 70 5c 6e 4c 69 6e 65  gh to wrap\nLine
cce0: 20 33 20 69 73 20 61 6c 73 6f 20 6c 6f 6e 67 20   3 is also long 
ccf0: 65 6e 6f 75 67 68 20 74 6f 20 77 72 61 70 5c 6e  enough to wrap\n
cd00: 4c 69 6e 65 20 34 22 0a 20 20 20 20 2e 74 20 74  Line 4".    .t t
cd10: 61 67 20 61 64 64 20 62 69 67 20 31 2e 30 20 32  ag add big 1.0 2
cd20: 2e 30 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20  .0.    update.  
cd30: 20 20 73 65 74 20 74 6b 5f 74 65 78 74 52 65 64    set tk_textRed
cd40: 72 61 77 20 7b 6e 6f 6e 65 7d 0a 20 20 20 20 2e  raw {none}.    .
cd50: 74 20 74 61 67 20 61 64 64 20 62 69 67 20 31 2e  t tag add big 1.
cd60: 33 20 31 2e 35 0a 20 20 20 20 75 70 64 61 74 65  3 1.5.    update
cd70: 0a 20 20 20 20 73 65 74 20 74 6b 5f 74 65 78 74  .    set tk_text
cd80: 52 65 64 72 61 77 0a 7d 20 7b 6e 6f 6e 65 7d 0a  Redraw.} {none}.
cd90: 74 65 73 74 20 74 65 78 74 44 69 73 70 2d 39 2e  test textDisp-9.
cda0: 31 31 20 7b 54 6b 54 65 78 74 52 65 64 72 61 77  11 {TkTextRedraw
cdb0: 54 61 67 7d 20 7b 0a 20 20 20 20 2e 74 20 63 6f  Tag} {.    .t co
cdc0: 6e 66 69 67 75 72 65 20 2d 77 72 61 70 20 63 68  nfigure -wrap ch
cdd0: 61 72 0a 20 20 20 20 2e 74 20 64 65 6c 65 74 65  ar.    .t delete
cde0: 20 31 2e 30 20 65 6e 64 0a 20 20 20 20 2e 74 20   1.0 end.    .t 
cdf0: 69 6e 73 65 72 74 20 31 2e 30 20 22 4c 69 6e 65  insert 1.0 "Line
ce00: 20 31 5c 6e 4c 69 6e 65 20 32 20 69 73 20 6c 6f   1\nLine 2 is lo
ce10: 6e 67 20 65 6e 6f 75 67 68 20 74 6f 20 77 72 61  ng enough to wra
ce20: 70 5c 6e 4c 69 6e 65 20 33 20 69 73 20 61 6c 73  p\nLine 3 is als
ce30: 6f 20 6c 6f 6e 67 20 65 6e 6f 75 67 68 20 74 6f  o long enough to
ce40: 20 77 72 61 70 5c 6e 4c 69 6e 65 20 34 22 0a 20   wrap\nLine 4". 
ce50: 20 20 20 2e 74 20 74 61 67 20 61 64 64 20 62 69     .t tag add bi
ce60: 67 20 31 2e 30 20 32 2e 30 0a 20 20 20 20 75 70  g 1.0 2.0.    up
ce70: 64 61 74 65 0a 09 20 73 65 74 20 74 6b 5f 74 65  date.. set tk_te
ce80: 78 74 52 65 64 72 61 77 20 7b 6e 6f 6e 65 7d 0a  xtRedraw {none}.
ce90: 20 20 20 20 2e 74 20 74 61 67 20 61 64 64 20 62      .t tag add b
cea0: 69 67 20 31 2e 30 20 32 2e 30 0a 20 20 20 20 75  ig 1.0 2.0.    u
ceb0: 70 64 61 74 65 0a 20 20 20 20 73 65 74 20 74 6b  pdate.    set tk
cec0: 5f 74 65 78 74 52 65 64 72 61 77 0a 09 20 23 20  _textRedraw.. # 
ced0: 54 68 65 20 72 65 76 69 73 65 64 20 69 6d 70 6c  The revised impl
cee0: 65 6d 65 6e 74 61 74 69 6f 6e 20 69 73 20 72 65  ementation is re
cef0: 63 6f 67 6e 69 7a 69 6e 67 20 74 68 61 74 20 74  cognizing that t
cf00: 68 65 20 70 72 69 6f 72 20 22 74 61 67 20 61 64  he prior "tag ad
cf10: 64 22 0a 09 20 23 20 6f 70 65 72 61 74 69 6f 6e  d".. # operation
cf20: 20 69 73 20 6e 6f 74 20 63 68 61 6e 67 69 6e 67   is not changing
cf30: 20 61 6e 79 74 68 69 6e 67 2c 20 73 6f 20 69 74   anything, so it
cf40: 20 77 6f 6e 27 74 20 64 6f 20 61 6e 79 20 72 65   won't do any re
cf50: 64 72 61 77 2c 0a 09 20 23 20 74 68 75 73 20 74  draw,.. # thus t
cf60: 68 65 20 72 65 73 75 6c 74 20 69 73 20 22 6e 6f  he result is "no
cf70: 6e 65 22 2e 0a 7d 20 7b 6e 6f 6e 65 7d 0a 74 65  ne"..} {none}.te
cf80: 73 74 20 74 65 78 74 44 69 73 70 2d 39 2e 31 32  st textDisp-9.12
cf90: 20 7b 54 6b 54 65 78 74 52 65 64 72 61 77 54 61   {TkTextRedrawTa
cfa0: 67 7d 20 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20  g} -constraints 
cfb0: 74 65 78 74 66 6f 6e 74 73 20 2d 62 6f 64 79 20  textfonts -body 
cfc0: 7b 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69 67 75  {.    .t configu
cfd0: 72 65 20 2d 77 72 61 70 20 63 68 61 72 0a 20 20  re -wrap char.  
cfe0: 20 20 2e 74 20 64 65 6c 65 74 65 20 31 2e 30 20    .t delete 1.0 
cff0: 65 6e 64 0a 20 20 20 20 66 6f 72 20 7b 73 65 74  end.    for {set
d000: 20 69 20 31 7d 20 7b 24 69 20 3c 20 35 7d 20 7b   i 1} {$i < 5} {
d010: 69 6e 63 72 20 69 7d 20 7b 0a 20 20 20 20 20 20  incr i} {.      
d020: 2e 74 20 69 6e 73 65 72 74 20 65 6e 64 20 22 4c  .t insert end "L
d030: 69 6e 65 20 24 69 2b 2b 2b 4c 69 6e 65 20 24 69  ine $i+++Line $i
d040: 5c 6e 22 0a 20 20 20 20 7d 0a 20 20 20 20 2e 74  \n".    }.    .t
d050: 20 74 61 67 20 63 6f 6e 66 69 67 75 72 65 20 68   tag configure h
d060: 69 64 64 65 6e 20 2d 65 6c 69 64 65 20 74 72 75  idden -elide tru
d070: 65 0a 20 20 20 20 2e 74 20 74 61 67 20 61 64 64  e.    .t tag add
d080: 20 68 69 64 64 65 6e 20 32 2e 36 20 33 2e 36 0a   hidden 2.6 3.6.
d090: 20 20 20 20 75 70 64 61 74 65 0a 20 20 20 20 2e      update.    .
d0a0: 74 20 74 61 67 20 61 64 64 20 68 69 64 64 65 6e  t tag add hidden
d0b0: 20 33 2e 31 31 20 34 2e 36 0a 20 20 20 20 75 70   3.11 4.6.    up
d0c0: 64 61 74 65 0a 20 20 20 20 6c 69 73 74 20 24 74  date.    list $t
d0d0: 6b 5f 74 65 78 74 52 65 6c 61 79 6f 75 74 20 24  k_textRelayout $
d0e0: 74 6b 5f 74 65 78 74 52 65 64 72 61 77 0a 7d 20  tk_textRedraw.} 
d0f0: 2d 72 65 73 75 6c 74 20 7b 32 2e 30 20 7b 32 2e  -result {2.0 {2.
d100: 30 20 65 6f 66 7d 7d 0a 74 65 73 74 20 74 65 78  0 eof}}.test tex
d110: 74 44 69 73 70 2d 39 2e 31 33 20 7b 54 6b 54 65  tDisp-9.13 {TkTe
d120: 78 74 52 65 64 72 61 77 54 61 67 7d 20 7b 0a 20  xtRedrawTag} {. 
d130: 20 20 20 2e 74 20 63 6f 6e 66 69 67 75 72 65 20     .t configure 
d140: 2d 77 72 61 70 20 6e 6f 6e 65 0a 20 20 20 20 2e  -wrap none.    .
d150: 74 20 64 65 6c 65 74 65 20 31 2e 30 20 65 6e 64  t delete 1.0 end
d160: 0a 20 20 20 20 66 6f 72 20 7b 73 65 74 20 69 20  .    for {set i 
d170: 31 7d 20 7b 24 69 20 3c 20 31 30 7d 20 7b 69 6e  1} {$i < 10} {in
d180: 63 72 20 69 7d 20 7b 0a 20 20 20 20 20 20 20 20  cr i} {.        
d190: 2e 74 20 69 6e 73 65 72 74 20 65 6e 64 20 22 4c  .t insert end "L
d1a0: 69 6e 65 20 24 69 20 2d 20 54 68 69 73 20 69 73  ine $i - This is
d1b0: 20 4c 69 6e 65 20 5b 66 6f 72 6d 61 74 20 25 63   Line [format %c
d1c0: 20 5b 65 78 70 72 20 36 34 2b 24 69 5d 5d 5c 6e   [expr 64+$i]]\n
d1d0: 22 0a 20 20 20 20 7d 0a 20 20 20 20 2e 74 20 74  ".    }.    .t t
d1e0: 61 67 20 61 64 64 20 68 69 64 64 65 6e 20 32 2e  ag add hidden 2.
d1f0: 38 20 32 2e 31 37 0a 20 20 20 20 2e 74 20 74 61  8 2.17.    .t ta
d200: 67 20 61 64 64 20 68 69 64 64 65 6e 20 36 2e 38  g add hidden 6.8
d210: 20 37 2e 31 37 0a 20 20 20 20 2e 74 20 74 61 67   7.17.    .t tag
d220: 20 63 6f 6e 66 69 67 75 72 65 20 68 69 64 64 65   configure hidde
d230: 6e 20 2d 62 61 63 6b 67 72 6f 75 6e 64 20 72 65  n -background re
d240: 64 0a 20 20 20 20 2e 74 20 74 61 67 20 63 6f 6e  d.    .t tag con
d250: 66 69 67 75 72 65 20 68 69 64 64 65 6e 20 2d 65  figure hidden -e
d260: 6c 69 64 65 20 74 72 75 65 0a 20 20 20 20 75 70  lide true.    up
d270: 64 61 74 65 0a 20 20 20 20 2e 74 20 74 61 67 20  date.    .t tag 
d280: 63 6f 6e 66 69 67 75 72 65 20 68 69 64 64 65 6e  configure hidden
d290: 20 2d 65 6c 69 64 65 20 66 61 6c 73 65 0a 20 20   -elide false.  
d2a0: 20 20 75 70 64 61 74 65 0a 20 20 20 20 6c 69 73    update.    lis
d2b0: 74 20 24 74 6b 5f 74 65 78 74 52 65 6c 61 79 6f  t $tk_textRelayo
d2c0: 75 74 20 24 74 6b 5f 74 65 78 74 52 65 64 72 61  ut $tk_textRedra
d2d0: 77 0a 7d 20 7b 7b 32 2e 30 20 36 2e 30 20 37 2e  w.} {{2.0 6.0 7.
d2e0: 30 7d 20 7b 32 2e 30 20 36 2e 30 20 37 2e 30 7d  0} {2.0 6.0 7.0}
d2f0: 7d 0a 74 65 73 74 20 74 65 78 74 44 69 73 70 2d  }.test textDisp-
d300: 39 2e 31 34 20 7b 54 6b 54 65 78 74 52 65 64 72  9.14 {TkTextRedr
d310: 61 77 54 61 67 7d 20 7b 0a 20 20 20 20 70 61 63  awTag} {.    pac
d320: 6b 20 5b 74 65 78 74 20 2e 74 6e 6f 63 72 61 73  k [text .tnocras
d330: 68 5d 0a 20 20 20 20 66 6f 72 20 7b 73 65 74 20  h].    for {set 
d340: 69 20 31 7d 20 7b 24 69 20 3c 20 36 7d 20 7b 69  i 1} {$i < 6} {i
d350: 6e 63 72 20 69 7d 20 7b 0a 20 20 20 20 20 20 20  ncr i} {.       
d360: 20 2e 74 6e 6f 63 72 61 73 68 20 69 6e 73 65 72   .tnocrash inser
d370: 74 20 65 6e 64 20 5c 6e 66 6f 6f 24 69 0a 20 20  t end \nfoo$i.  
d380: 20 20 7d 0a 20 20 20 20 2e 74 6e 6f 63 72 61 73    }.    .tnocras
d390: 68 20 74 61 67 20 63 6f 6e 66 69 67 75 72 65 20  h tag configure 
d3a0: 6d 79 74 61 67 31 20 2d 72 65 6c 69 65 66 20 72  mytag1 -relief r
d3b0: 61 69 73 65 64 0a 20 20 20 20 2e 74 6e 6f 63 72  aised.    .tnocr
d3c0: 61 73 68 20 74 61 67 20 63 6f 6e 66 69 67 75 72  ash tag configur
d3d0: 65 20 6d 79 74 61 67 32 20 2d 72 65 6c 69 65 66  e mytag2 -relief
d3e0: 20 73 6f 6c 69 64 0a 20 20 20 20 75 70 64 61 74   solid.    updat
d3f0: 65 0a 20 20 20 20 70 72 6f 63 20 64 6f 69 74 20  e.    proc doit 
d400: 7b 7d 20 7b 0a 20 20 20 20 20 20 20 20 2e 74 6e  {} {.        .tn
d410: 6f 63 72 61 73 68 20 74 61 67 20 61 64 64 20 6d  ocrash tag add m
d420: 79 74 61 67 31 20 34 2e 30 20 35 2e 30 0a 20 20  ytag1 4.0 5.0.  
d430: 20 20 20 20 20 20 2e 74 6e 6f 63 72 61 73 68 20        .tnocrash 
d440: 74 61 67 20 61 64 64 20 6d 79 74 61 67 32 20 34  tag add mytag2 4
d450: 2e 30 20 35 2e 30 0a 20 20 20 20 20 20 20 20 61  .0 5.0.        a
d460: 66 74 65 72 20 69 64 6c 65 20 7b 0a 20 20 20 20  fter idle {.    
d470: 20 20 20 20 20 20 20 20 2e 74 6e 6f 63 72 61 73          .tnocras
d480: 68 20 74 61 67 20 72 65 6d 6f 76 65 20 6d 79 74  h tag remove myt
d490: 61 67 31 20 31 2e 30 20 65 6e 64 0a 20 20 20 20  ag1 1.0 end.    
d4a0: 20 20 20 20 20 20 20 20 2e 74 6e 6f 63 72 61 73          .tnocras
d4b0: 68 20 74 61 67 20 72 65 6d 6f 76 65 20 6d 79 74  h tag remove myt
d4c0: 61 67 32 20 31 2e 30 20 65 6e 64 0a 20 20 20 20  ag2 1.0 end.    
d4d0: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 2e 74      }.        .t
d4e0: 6e 6f 63 72 61 73 68 20 64 65 6c 65 74 65 20 31  nocrash delete 1
d4f0: 2e 30 20 32 2e 30 0a 20 20 20 20 7d 0a 20 20 20  .0 2.0.    }.   
d500: 20 64 6f 69 74 20 20 3b 20 23 20 6d 75 73 74 20   doit  ; # must 
d510: 6e 6f 74 20 63 72 61 73 68 0a 20 20 20 20 61 66  not crash.    af
d520: 74 65 72 20 35 30 30 20 7b 0a 20 20 20 20 20 20  ter 500 {.      
d530: 20 20 64 65 73 74 72 6f 79 20 2e 74 6e 6f 63 72    destroy .tnocr
d540: 61 73 68 0a 20 20 20 20 20 20 20 20 73 65 74 20  ash.        set 
d550: 64 6f 6e 65 20 31 0a 20 20 20 20 7d 0a 20 20 20  done 1.    }.   
d560: 20 76 77 61 69 74 20 64 6f 6e 65 0a 7d 20 7b 7d   vwait done.} {}
d570: 0a 0a 74 65 73 74 20 74 65 78 74 44 69 73 70 2d  ..test textDisp-
d580: 31 30 2e 31 20 7b 54 6b 54 65 78 74 52 65 6c 61  10.1 {TkTextRela
d590: 79 6f 75 74 57 69 6e 64 6f 77 7d 20 7b 0a 20 20  youtWindow} {.  
d5a0: 20 20 2e 74 20 63 6f 6e 66 69 67 75 72 65 20 2d    .t configure -
d5b0: 77 72 61 70 20 63 68 61 72 0a 20 20 20 20 2e 74  wrap char.    .t
d5c0: 20 64 65 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a   delete 1.0 end.
d5d0: 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20 31 2e      .t insert 1.
d5e0: 30 20 22 4c 69 6e 65 20 31 5c 6e 4c 69 6e 65 20  0 "Line 1\nLine 
d5f0: 32 20 69 73 20 6c 6f 6e 67 20 65 6e 6f 75 67 68  2 is long enough
d600: 20 74 6f 20 77 72 61 70 5c 6e 4c 69 6e 65 20 33   to wrap\nLine 3
d610: 20 69 73 20 61 6c 73 6f 20 6c 6f 6e 67 20 65 6e   is also long en
d620: 6f 75 67 68 20 74 6f 20 77 72 61 70 5c 6e 4c 69  ough to wrap\nLi
d630: 6e 65 20 34 22 0a 20 20 20 20 75 70 64 61 74 65  ne 4".    update
d640: 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69 67 75 72  .    .t configur
d650: 65 20 2d 62 67 20 62 6c 61 63 6b 0a 20 20 20 20  e -bg black.    
d660: 75 70 64 61 74 65 0a 20 20 20 20 6c 69 73 74 20  update.    list 
d670: 24 74 6b 5f 74 65 78 74 52 65 6c 61 79 6f 75 74  $tk_textRelayout
d680: 20 24 74 6b 5f 74 65 78 74 52 65 64 72 61 77 0a   $tk_textRedraw.
d690: 7d 20 7b 7b 31 2e 30 20 32 2e 30 20 32 2e 32 30  } {{1.0 2.0 2.20
d6a0: 20 33 2e 30 20 33 2e 32 30 20 34 2e 30 7d 20 7b   3.0 3.20 4.0} {
d6b0: 62 6f 72 64 65 72 73 20 31 2e 30 20 32 2e 30 20  borders 1.0 2.0 
d6c0: 32 2e 32 30 20 33 2e 30 20 33 2e 32 30 20 34 2e  2.20 3.0 3.20 4.
d6d0: 30 20 65 6f 66 7d 7d 0a 2e 74 20 63 6f 6e 66 69  0 eof}}..t confi
d6e0: 67 75 72 65 20 2d 62 67 20 5b 6c 69 6e 64 65 78  gure -bg [lindex
d6f0: 20 5b 2e 74 20 63 6f 6e 66 69 67 75 72 65 20 2d   [.t configure -
d700: 62 67 5d 20 33 5d 0a 63 61 74 63 68 20 7b 64 65  bg] 3].catch {de
d710: 73 74 72 6f 79 20 2e 74 6f 70 7d 0a 74 65 73 74  stroy .top}.test
d720: 20 74 65 78 74 44 69 73 70 2d 31 30 2e 32 20 7b   textDisp-10.2 {
d730: 54 6b 54 65 78 74 52 65 6c 61 79 6f 75 74 57 69  TkTextRelayoutWi
d740: 6e 64 6f 77 7d 20 7b 0a 20 20 20 20 74 6f 70 6c  ndow} {.    topl
d750: 65 76 65 6c 20 2e 74 6f 70 20 2d 77 69 64 74 68  evel .top -width
d760: 20 33 30 30 20 2d 68 65 69 67 68 74 20 32 30 30   300 -height 200
d770: 0a 20 20 20 20 77 6d 20 67 65 6f 6d 65 74 72 79  .    wm geometry
d780: 20 2e 74 6f 70 20 2b 30 2b 30 0a 20 20 20 20 74   .top +0+0.    t
d790: 65 78 74 20 2e 74 6f 70 2e 74 20 2d 66 6f 6e 74  ext .top.t -font
d7a0: 20 24 66 69 78 65 64 46 6f 6e 74 20 2d 77 69 64   $fixedFont -wid
d7b0: 74 68 20 32 30 20 2d 68 65 69 67 68 74 20 31 30  th 20 -height 10
d7c0: 20 2d 72 65 6c 69 65 66 20 72 61 69 73 65 64 20   -relief raised 
d7d0: 2d 62 64 20 32 0a 20 20 20 20 70 6c 61 63 65 20  -bd 2.    place 
d7e0: 2e 74 6f 70 2e 74 20 2d 78 20 30 20 2d 79 20 30  .top.t -x 0 -y 0
d7f0: 20 2d 77 69 64 74 68 20 32 30 20 2d 68 65 69 67   -width 20 -heig
d800: 68 74 20 32 30 0a 20 20 20 20 2e 74 6f 70 2e 74  ht 20.    .top.t
d810: 20 69 6e 73 65 72 74 20 65 6e 64 20 22 46 69 72   insert end "Fir
d820: 73 74 20 6c 69 6e 65 22 0a 20 20 20 20 2e 74 6f  st line".    .to
d830: 70 2e 74 20 73 65 65 20 69 6e 73 65 72 74 0a 20  p.t see insert. 
d840: 20 20 20 74 6b 77 61 69 74 20 76 69 73 69 62 69     tkwait visibi
d850: 6c 69 74 79 20 2e 74 6f 70 2e 74 0a 20 20 20 20  lity .top.t.    
d860: 70 6c 61 63 65 20 2e 74 6f 70 2e 74 20 2d 77 69  place .top.t -wi
d870: 64 74 68 20 31 35 30 20 2d 68 65 69 67 68 74 20  dth 150 -height 
d880: 31 30 30 0a 20 20 20 20 75 70 64 61 74 65 0a 20  100.    update. 
d890: 20 20 20 2e 74 6f 70 2e 74 20 69 6e 64 65 78 20     .top.t index 
d8a0: 40 30 2c 30 0a 7d 20 7b 31 2e 30 7d 0a 63 61 74  @0,0.} {1.0}.cat
d8b0: 63 68 20 7b 64 65 73 74 72 6f 79 20 2e 74 6f 70  ch {destroy .top
d8c0: 7d 0a 0a 2e 74 20 64 65 6c 65 74 65 20 31 2e 30  }...t delete 1.0
d8d0: 20 65 6e 64 0a 2e 74 20 69 6e 73 65 72 74 20 65   end..t insert e
d8e0: 6e 64 20 22 4c 69 6e 65 20 31 22 0a 66 6f 72 20  nd "Line 1".for 
d8f0: 7b 73 65 74 20 69 20 32 7d 20 7b 24 69 20 3c 3d  {set i 2} {$i <=
d900: 20 32 30 30 7d 20 7b 69 6e 63 72 20 69 7d 20 7b   200} {incr i} {
d910: 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20 65  .    .t insert e
d920: 6e 64 20 22 5c 6e 4c 69 6e 65 20 24 69 22 0a 7d  nd "\nLine $i".}
d930: 0a 75 70 64 61 74 65 0a 74 65 73 74 20 74 65 78  .update.test tex
d940: 74 44 69 73 70 2d 31 31 2e 31 20 7b 54 6b 54 65  tDisp-11.1 {TkTe
d950: 78 74 53 65 74 59 56 69 65 77 7d 20 7b 0a 20 20  xtSetYView} {.  
d960: 20 20 2e 74 20 79 76 69 65 77 20 33 30 2e 30 0a    .t yview 30.0.
d970: 20 20 20 20 75 70 64 61 74 65 0a 20 20 20 20 2e      update.    .
d980: 74 20 69 6e 64 65 78 20 40 30 2c 30 0a 7d 20 7b  t index @0,0.} {
d990: 33 30 2e 30 7d 0a 74 65 73 74 20 74 65 78 74 44  30.0}.test textD
d9a0: 69 73 70 2d 31 31 2e 32 20 7b 54 6b 54 65 78 74  isp-11.2 {TkText
d9b0: 53 65 74 59 56 69 65 77 7d 20 7b 0a 20 20 20 20  SetYView} {.    
d9c0: 2e 74 20 79 76 69 65 77 20 33 30 2e 30 0a 23 20  .t yview 30.0.# 
d9d0: 74 68 69 73 20 74 65 73 74 20 63 61 73 65 20 68  this test case h
d9e0: 61 73 20 61 20 73 6d 61 6c 6c 20 74 69 6d 69 6e  as a small timin
d9f0: 67 20 70 72 6f 62 6c 65 6d 2c 20 73 6f 20 77 61  g problem, so wa
da00: 69 74 20 61 20 62 69 74 0a 20 20 20 20 75 70 64  it a bit.    upd
da10: 61 74 65 3b 20 61 66 74 65 72 20 35 30 3b 20 75  ate; after 50; u
da20: 70 64 61 74 65 0a 20 20 20 20 2e 74 20 79 76 69  pdate.    .t yvi
da30: 65 77 20 33 32 2e 30 0a 23 20 74 68 69 73 20 74  ew 32.0.# this t
da40: 65 73 74 20 63 61 73 65 20 68 61 73 20 61 20 73  est case has a s
da50: 6d 61 6c 6c 20 74 69 6d 69 6e 67 20 70 72 6f 62  mall timing prob
da60: 6c 65 6d 2c 20 73 6f 20 77 61 69 74 20 61 20 62  lem, so wait a b
da70: 69 74 0a 20 20 20 20 75 70 64 61 74 65 3b 20 61  it.    update; a
da80: 66 74 65 72 20 35 30 3b 20 75 70 64 61 74 65 0a  fter 50; update.
da90: 20 20 20 20 6c 69 73 74 20 5b 2e 74 20 69 6e 64      list [.t ind
daa0: 65 78 20 40 30 2c 30 5d 20 24 74 6b 5f 74 65 78  ex @0,0] $tk_tex
dab0: 74 52 65 64 72 61 77 0a 7d 20 7b 33 32 2e 30 20  tRedraw.} {32.0 
dac0: 7b 34 30 2e 30 20 34 31 2e 30 7d 7d 0a 74 65 73  {40.0 41.0}}.tes
dad0: 74 20 74 65 78 74 44 69 73 70 2d 31 31 2e 33 20  t textDisp-11.3 
dae0: 7b 54 6b 54 65 78 74 53 65 74 59 56 69 65 77 7d  {TkTextSetYView}
daf0: 20 7b 0a 20 20 20 20 2e 74 20 79 76 69 65 77 20   {.    .t yview 
db00: 33 30 2e 30 0a 20 20 20 20 75 70 64 61 74 65 0a  30.0.    update.
db10: 20 20 20 20 2e 74 20 79 76 69 65 77 20 32 38 2e      .t yview 28.
db20: 30 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20 20  0.    update.   
db30: 20 6c 69 73 74 20 5b 2e 74 20 69 6e 64 65 78 20   list [.t index 
db40: 40 30 2c 30 5d 20 24 74 6b 5f 74 65 78 74 52 65  @0,0] $tk_textRe
db50: 64 72 61 77 0a 7d 20 7b 32 38 2e 30 20 7b 32 38  draw.} {28.0 {28
db60: 2e 30 20 32 39 2e 30 7d 7d 0a 74 65 73 74 20 74  .0 29.0}}.test t
db70: 65 78 74 44 69 73 70 2d 31 31 2e 34 20 7b 54 6b  extDisp-11.4 {Tk
db80: 54 65 78 74 53 65 74 59 56 69 65 77 7d 20 7b 0a  TextSetYView} {.
db90: 20 20 20 20 2e 74 20 79 76 69 65 77 20 33 30 2e      .t yview 30.
dba0: 30 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20 20  0.    update.   
dbb0: 20 2e 74 20 79 76 69 65 77 20 33 31 2e 34 0a 20   .t yview 31.4. 
dbc0: 20 20 20 75 70 64 61 74 65 0a 20 20 20 20 6c 69     update.    li
dbd0: 73 74 20 5b 2e 74 20 69 6e 64 65 78 20 40 30 2c  st [.t index @0,
dbe0: 30 5d 20 24 74 6b 5f 74 65 78 74 52 65 64 72 61  0] $tk_textRedra
dbf0: 77 0a 7d 20 7b 33 31 2e 30 20 34 30 2e 30 7d 0a  w.} {31.0 40.0}.
dc00: 74 65 73 74 20 74 65 78 74 44 69 73 70 2d 31 31  test textDisp-11
dc10: 2e 35 20 7b 54 6b 54 65 78 74 53 65 74 59 56 69  .5 {TkTextSetYVi
dc20: 65 77 7d 20 7b 0a 20 20 20 20 2e 74 20 79 76 69  ew} {.    .t yvi
dc30: 65 77 20 33 30 2e 30 0a 20 20 20 20 75 70 64 61  ew 30.0.    upda
dc40: 74 65 0a 20 20 20 20 73 65 74 20 74 6b 5f 74 65  te.    set tk_te
dc50: 78 74 52 65 64 72 61 77 20 7b 7d 0a 20 20 20 20  xtRedraw {}.    
dc60: 2e 74 20 79 76 69 65 77 20 2d 70 69 63 6b 70 6c  .t yview -pickpl
dc70: 61 63 65 20 33 31 2e 30 0a 20 20 20 20 75 70 64  ace 31.0.    upd
dc80: 61 74 65 0a 20 20 20 20 6c 69 73 74 20 5b 2e 74  ate.    list [.t
dc90: 20 69 6e 64 65 78 20 40 30 2c 30 5d 20 24 74 6b   index @0,0] $tk
dca0: 5f 74 65 78 74 52 65 64 72 61 77 0a 7d 20 7b 33  _textRedraw.} {3
dcb0: 30 2e 30 20 7b 7d 7d 0a 23 20 73 6f 6d 65 74 69  0.0 {}}.# someti
dcc0: 6d 65 20 74 68 65 20 72 65 73 75 6c 74 20 69 73  me the result is
dcd0: 20 7b 33 30 2e 30 20 7b 62 6f 72 64 65 72 73 20   {30.0 {borders 
dce0: 33 30 2e 30 20 33 31 2e 30 20 33 32 2e 30 20 33  30.0 31.0 32.0 3
dcf0: 33 2e 30 20 33 34 2e 30 20 33 35 2e 30 20 33 36  3.0 34.0 35.0 36
dd00: 2e 30 20 33 37 2e 30 20 33 38 2e 30 20 33 39 2e  .0 37.0 38.0 39.
dd10: 30 7d 7d 0a 74 65 73 74 20 74 65 78 74 44 69 73  0}}.test textDis
dd20: 70 2d 31 31 2e 36 20 7b 54 6b 54 65 78 74 53 65  p-11.6 {TkTextSe
dd30: 74 59 56 69 65 77 7d 20 7b 0a 20 20 20 20 2e 74  tYView} {.    .t
dd40: 20 79 76 69 65 77 20 33 30 2e 30 0a 20 20 20 20   yview 30.0.    
dd50: 75 70 64 61 74 65 0a 20 20 20 20 73 65 74 20 74  update.    set t
dd60: 6b 5f 74 65 78 74 52 65 64 72 61 77 20 7b 7d 0a  k_textRedraw {}.
dd70: 20 20 20 20 2e 74 20 79 76 69 65 77 20 2d 70 69      .t yview -pi
dd80: 63 6b 70 6c 61 63 65 20 32 38 2e 30 0a 20 20 20  ckplace 28.0.   
dd90: 20 75 70 64 61 74 65 0a 20 20 20 20 6c 69 73 74   update.    list
dda0: 20 5b 2e 74 20 69 6e 64 65 78 20 40 30 2c 30 5d   [.t index @0,0]
ddb0: 20 24 74 6b 5f 74 65 78 74 52 65 64 72 61 77 0a   $tk_textRedraw.
ddc0: 7d 20 7b 32 38 2e 30 20 7b 32 38 2e 30 20 32 39  } {28.0 {28.0 29
ddd0: 2e 30 7d 7d 0a 74 65 73 74 20 74 65 78 74 44 69  .0}}.test textDi
dde0: 73 70 2d 31 31 2e 37 20 7b 54 6b 54 65 78 74 53  sp-11.7 {TkTextS
ddf0: 65 74 59 56 69 65 77 7d 20 7b 0a 20 20 20 20 2e  etYView} {.    .
de00: 74 20 79 76 69 65 77 20 33 30 2e 30 0a 20 20 20  t yview 30.0.   
de10: 20 75 70 64 61 74 65 20 3b 20 75 70 64 61 74 65   update ; update
de20: 0a 20 20 20 20 73 65 74 20 74 6b 5f 74 65 78 74  .    set tk_text
de30: 52 65 64 72 61 77 20 7b 7d 0a 20 20 20 20 2e 74  Redraw {}.    .t
de40: 20 79 76 69 65 77 20 2d 70 69 63 6b 70 6c 61 63   yview -pickplac
de50: 65 20 32 36 2e 30 0a 20 20 20 20 75 70 64 61 74  e 26.0.    updat
de60: 65 0a 20 20 20 20 6c 69 73 74 20 5b 2e 74 20 69  e.    list [.t i
de70: 6e 64 65 78 20 40 30 2c 30 5d 20 24 74 6b 5f 74  ndex @0,0] $tk_t
de80: 65 78 74 52 65 64 72 61 77 0a 7d 20 7b 32 31 2e  extRedraw.} {21.
de90: 30 20 7b 32 31 2e 30 20 32 32 2e 30 20 32 33 2e  0 {21.0 22.0 23.
dea0: 30 20 32 34 2e 30 20 32 35 2e 30 20 32 36 2e 30  0 24.0 25.0 26.0
deb0: 20 32 37 2e 30 20 32 38 2e 30 20 32 39 2e 30 7d   27.0 28.0 29.0}
dec0: 7d 0a 74 65 73 74 20 74 65 78 74 44 69 73 70 2d  }.test textDisp-
ded0: 31 31 2e 38 20 7b 54 6b 54 65 78 74 53 65 74 59  11.8 {TkTextSetY
dee0: 56 69 65 77 7d 20 7b 0a 20 20 20 20 2e 74 20 79  View} {.    .t y
def0: 76 69 65 77 20 33 30 2e 30 0a 20 20 20 20 75 70  view 30.0.    up
df00: 64 61 74 65 0a 20 20 20 20 73 65 74 20 74 6b 5f  date.    set tk_
df10: 74 65 78 74 52 65 64 72 61 77 20 7b 7d 0a 20 20  textRedraw {}.  
df20: 20 20 2e 74 20 79 76 69 65 77 20 2d 70 69 63 6b    .t yview -pick
df30: 70 6c 61 63 65 20 34 31 2e 30 0a 20 20 20 20 75  place 41.0.    u
df40: 70 64 61 74 65 0a 20 20 20 20 6c 69 73 74 20 5b  pdate.    list [
df50: 2e 74 20 69 6e 64 65 78 20 40 30 2c 30 5d 20 24  .t index @0,0] $
df60: 74 6b 5f 74 65 78 74 52 65 64 72 61 77 0a 7d 20  tk_textRedraw.} 
df70: 7b 33 32 2e 30 20 7b 34 30 2e 30 20 34 31 2e 30  {32.0 {40.0 41.0
df80: 7d 7d 0a 74 65 73 74 20 74 65 78 74 44 69 73 70  }}.test textDisp
df90: 2d 31 31 2e 39 20 7b 54 6b 54 65 78 74 53 65 74  -11.9 {TkTextSet
dfa0: 59 56 69 65 77 7d 20 7b 0a 20 20 20 20 2e 74 20  YView} {.    .t 
dfb0: 79 76 69 65 77 20 33 30 2e 30 0a 20 20 20 20 75  yview 30.0.    u
dfc0: 70 64 61 74 65 0a 20 20 20 20 73 65 74 20 74 6b  pdate.    set tk
dfd0: 5f 74 65 78 74 52 65 64 72 61 77 20 7b 7d 0a 20  _textRedraw {}. 
dfe0: 20 20 20 2e 74 20 79 76 69 65 77 20 2d 70 69 63     .t yview -pic
dff0: 6b 70 6c 61 63 65 20 34 33 2e 30 0a 20 20 20 20  kplace 43.0.    
e000: 75 70 64 61 74 65 0a 20 20 20 20 6c 69 73 74 20  update.    list 
e010: 5b 2e 74 20 69 6e 64 65 78 20 40 30 2c 30 5d 20  [.t index @0,0] 
e020: 24 74 6b 5f 74 65 78 74 52 65 64 72 61 77 0a 7d  $tk_textRedraw.}
e030: 20 7b 33 38 2e 30 20 7b 34 30 2e 30 20 34 31 2e   {38.0 {40.0 41.
e040: 30 20 34 32 2e 30 20 34 33 2e 30 20 34 34 2e 30  0 42.0 43.0 44.0
e050: 20 34 35 2e 30 20 34 36 2e 30 20 34 37 2e 30 20   45.0 46.0 47.0 
e060: 34 38 2e 30 7d 7d 0a 74 65 73 74 20 74 65 78 74  48.0}}.test text
e070: 44 69 73 70 2d 31 31 2e 31 30 20 7b 54 6b 54 65  Disp-11.10 {TkTe
e080: 78 74 53 65 74 59 56 69 65 77 7d 20 7b 0a 20 20  xtSetYView} {.  
e090: 20 20 2e 74 20 79 76 69 65 77 20 33 30 2e 30 0a    .t yview 30.0.
e0a0: 20 20 20 20 75 70 64 61 74 65 0a 20 20 20 20 73      update.    s
e0b0: 65 74 20 74 6b 5f 74 65 78 74 52 65 64 72 61 77  et tk_textRedraw
e0c0: 20 7b 7d 0a 20 20 20 20 2e 74 20 79 76 69 65 77   {}.    .t yview
e0d0: 20 31 30 30 30 30 2e 30 0a 20 20 20 20 75 70 64   10000.0.    upd
e0e0: 61 74 65 0a 20 20 20 20 6c 69 73 74 20 5b 2e 74  ate.    list [.t
e0f0: 20 69 6e 64 65 78 20 40 30 2c 30 5d 20 24 74 6b   index @0,0] $tk
e100: 5f 74 65 78 74 52 65 64 72 61 77 0a 7d 20 7b 31  _textRedraw.} {1
e110: 39 31 2e 30 20 7b 31 39 31 2e 30 20 31 39 32 2e  91.0 {191.0 192.
e120: 30 20 31 39 33 2e 30 20 31 39 34 2e 30 20 31 39  0 193.0 194.0 19
e130: 35 2e 30 20 31 39 36 2e 30 20 31 39 37 2e 30 20  5.0 196.0 197.0 
e140: 31 39 38 2e 30 20 31 39 39 2e 30 20 32 30 30 2e  198.0 199.0 200.
e150: 30 7d 7d 0a 74 65 73 74 20 74 65 78 74 44 69 73  0}}.test textDis
e160: 70 2d 31 31 2e 31 31 20 7b 54 6b 54 65 78 74 53  p-11.11 {TkTextS
e170: 65 74 59 56 69 65 77 7d 20 7b 0a 20 20 20 20 2e  etYView} {.    .
e180: 74 20 79 76 69 65 77 20 31 39 35 2e 30 0a 20 20  t yview 195.0.  
e190: 20 20 75 70 64 61 74 65 0a 20 20 20 20 73 65 74    update.    set
e1a0: 20 74 6b 5f 74 65 78 74 52 65 64 72 61 77 20 7b   tk_textRedraw {
e1b0: 7d 0a 20 20 20 20 2e 74 20 79 76 69 65 77 20 31  }.    .t yview 1
e1c0: 39 37 2e 30 0a 20 20 20 20 75 70 64 61 74 65 0a  97.0.    update.
e1d0: 20 20 20 20 6c 69 73 74 20 5b 2e 74 20 69 6e 64      list [.t ind
e1e0: 65 78 20 40 30 2c 30 5d 20 24 74 6b 5f 74 65 78  ex @0,0] $tk_tex
e1f0: 74 52 65 64 72 61 77 0a 23 20 44 75 65 20 74 6f  tRedraw.# Due to
e200: 20 61 20 6d 6f 72 65 20 69 6e 74 65 6c 6c 69 67   a more intellig
e210: 65 6e 74 20 6c 61 79 6f 75 74 20 61 6c 67 6f 72  ent layout algor
e220: 69 74 68 6d 20 74 68 65 20 6f 6c 64 20 72 65 73  ithm the old res
e230: 75 6c 74 20 66 6f 72 20 24 74 6b 5f 74 65 78 74  ult for $tk_text
e240: 52 65 64 72 61 77 0a 23 09 7b 31 39 31 2e 30 20  Redraw.#.{191.0 
e250: 31 39 32 2e 30 20 31 39 33 2e 30 20 31 39 34 2e  192.0 193.0 194.
e260: 30 20 31 39 35 2e 30 20 31 39 36 2e 30 7d 0a 23  0 195.0 196.0}.#
e270: 20 69 73 6e 27 74 20 76 61 6c 69 64 20 61 6e 79   isn't valid any
e280: 6d 6f 72 65 2c 20 74 68 65 20 6e 65 77 20 72 65  more, the new re
e290: 73 75 6c 74 20 69 73 20 61 6e 20 65 6d 70 74 79  sult is an empty
e2a0: 20 6c 69 73 74 2e 20 4e 6f 77 20 74 68 69 73 20   list. Now this 
e2b0: 74 65 73 74 20 63 61 73 65 20 69 73 0a 23 20 61  test case is.# a
e2c0: 20 70 72 6f 6f 66 20 74 68 61 74 20 74 68 65 20   proof that the 
e2d0: 27 69 6e 74 65 6c 6c 69 67 65 6e 63 65 27 20 6f  'intelligence' o
e2e0: 66 20 74 68 65 20 6e 65 77 20 6c 61 79 6f 75 74  f the new layout
e2f0: 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20 77 6f   algorithm is wo
e300: 72 6b 69 6e 67 2e 0a 7d 20 7b 31 39 31 2e 30 20  rking..} {191.0 
e310: 7b 7d 7d 0a 74 65 73 74 20 74 65 78 74 44 69 73  {}}.test textDis
e320: 70 2d 31 31 2e 31 32 20 7b 54 6b 54 65 78 74 53  p-11.12 {TkTextS
e330: 65 74 59 56 69 65 77 2c 20 77 72 61 70 70 65 64  etYView, wrapped
e340: 20 6c 69 6e 65 20 69 73 20 6f 66 66 2d 73 63 72   line is off-scr
e350: 65 65 6e 7d 20 7b 0a 20 20 20 20 2e 74 20 69 6e  een} {.    .t in
e360: 73 65 72 74 20 31 30 2e 30 20 22 4c 6f 6e 67 20  sert 10.0 "Long 
e370: 6c 69 6e 65 20 77 69 74 68 20 65 6e 6f 75 67 68  line with enough
e380: 20 74 65 78 74 20 74 6f 20 77 72 61 70 5c 6e 22   text to wrap\n"
e390: 0a 20 20 20 20 2e 74 20 79 76 69 65 77 20 31 2e  .    .t yview 1.
e3a0: 30 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20 20  0.    update.   
e3b0: 20 73 65 74 20 74 6b 5f 74 65 78 74 52 65 64 72   set tk_textRedr
e3c0: 61 77 20 7b 7d 0a 20 20 20 20 2e 74 20 73 65 65  aw {}.    .t see
e3d0: 20 31 30 2e 33 30 0a 20 20 20 20 75 70 64 61 74   10.30.    updat
e3e0: 65 0a 20 20 20 20 6c 69 73 74 20 5b 2e 74 20 69  e.    list [.t i
e3f0: 6e 64 65 78 20 40 30 2c 30 5d 20 24 74 6b 5f 74  ndex @0,0] $tk_t
e400: 65 78 74 52 65 64 72 61 77 0a 7d 20 7b 32 2e 30  extRedraw.} {2.0
e410: 20 31 30 2e 32 30 7d 0a 2e 74 20 64 65 6c 65 74   10.20}..t delet
e420: 65 20 31 30 2e 30 20 31 31 2e 30 0a 74 65 73 74  e 10.0 11.0.test
e430: 20 74 65 78 74 44 69 73 70 2d 31 31 2e 31 33 20   textDisp-11.13 
e440: 7b 54 6b 54 65 73 74 53 65 74 59 56 69 65 77 2c  {TkTestSetYView,
e450: 20 70 61 72 74 69 61 6c 6c 79 20 76 69 73 69 62   partially visib
e460: 6c 65 20 6c 61 73 74 20 6c 69 6e 65 7d 20 7b 0a  le last line} {.
e470: 20 20 20 20 63 61 74 63 68 20 7b 64 65 73 74 72      catch {destr
e480: 6f 79 20 2e 74 6f 70 7d 0a 20 20 20 20 74 6f 70  oy .top}.    top
e490: 6c 65 76 65 6c 20 2e 74 6f 70 0a 20 20 20 20 77  level .top.    w
e4a0: 6d 20 67 65 6f 6d 65 74 72 79 20 2e 74 6f 70 20  m geometry .top 
e4b0: 2b 30 2b 30 0a 20 20 20 20 74 65 78 74 20 2e 74  +0+0.    text .t
e4c0: 6f 70 2e 74 20 2d 77 69 64 74 68 20 32 30 20 2d  op.t -width 20 -
e4d0: 68 65 69 67 68 74 20 35 0a 20 20 20 20 70 61 63  height 5.    pac
e4e0: 6b 20 2e 74 6f 70 2e 74 0a 20 20 20 20 2e 74 6f  k .top.t.    .to
e4f0: 70 2e 74 20 69 6e 73 65 72 74 20 65 6e 64 20 22  p.t insert end "
e500: 4c 69 6e 65 20 31 22 0a 20 20 20 20 66 6f 72 20  Line 1".    for 
e510: 7b 73 65 74 20 69 20 32 7d 20 7b 24 69 20 3c 3d  {set i 2} {$i <=
e520: 20 31 30 30 7d 20 7b 69 6e 63 72 20 69 7d 20 7b   100} {incr i} {
e530: 0a 09 2e 74 6f 70 2e 74 20 69 6e 73 65 72 74 20  ...top.t insert 
e540: 65 6e 64 20 22 5c 6e 4c 69 6e 65 20 24 69 22 0a  end "\nLine $i".
e550: 20 20 20 20 7d 0a 20 20 20 20 75 70 64 61 74 65      }.    update
e560: 0a 20 20 20 20 73 63 61 6e 20 5b 77 6d 20 67 65  .    scan [wm ge
e570: 6f 6d 65 74 72 79 20 2e 74 6f 70 5d 20 22 25 64  ometry .top] "%d
e580: 78 25 64 22 20 77 32 20 68 32 0a 20 20 20 20 77  x%d" w2 h2.    w
e590: 6d 20 67 65 6f 6d 65 74 72 79 20 2e 74 6f 70 20  m geometry .top 
e5a0: 24 7b 77 32 7d 78 5b 65 78 70 72 20 24 68 32 2d  ${w2}x[expr $h2-
e5b0: 32 5d 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20  2].    update.  
e5c0: 20 20 2e 74 6f 70 2e 74 20 79 76 69 65 77 20 31    .top.t yview 1
e5d0: 2e 30 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20  .0.    update.  
e5e0: 20 20 73 65 74 20 74 6b 5f 74 65 78 74 52 65 64    set tk_textRed
e5f0: 72 61 77 20 7b 7d 0a 20 20 20 20 2e 74 6f 70 2e  raw {}.    .top.
e600: 74 20 73 65 65 20 35 2e 30 0a 20 20 20 20 75 70  t see 5.0.    up
e610: 64 61 74 65 0a 20 20 20 20 23 20 4e 6f 74 65 2c  date.    # Note,
e620: 20 77 69 74 68 20 73 6d 6f 6f 74 68 20 73 63 72   with smooth scr
e630: 6f 6c 6c 69 6e 67 2c 20 74 68 65 20 72 65 73 75  olling, the resu
e640: 6c 74 73 20 6f 66 20 74 68 69 73 20 74 65 73 74  lts of this test
e650: 0a 20 20 20 20 23 20 68 61 76 65 20 63 68 61 6e  .    # have chan
e660: 67 65 64 2c 20 61 6e 64 20 74 68 65 20 6f 6c 64  ged, and the old
e670: 20 27 32 2e 30 20 7b 35 2e 30 20 36 2e 30 7d 27   '2.0 {5.0 6.0}'
e680: 20 69 73 20 71 75 69 74 65 20 77 72 6f 6e 67 2e   is quite wrong.
e690: 0a 20 20 20 20 6c 69 73 74 20 5b 2e 74 6f 70 2e  .    list [.top.
e6a0: 74 20 69 6e 64 65 78 20 40 30 2c 30 5d 20 24 74  t index @0,0] $t
e6b0: 6b 5f 74 65 78 74 52 65 64 72 61 77 0a 7d 20 7b  k_textRedraw.} {
e6c0: 31 2e 30 20 35 2e 30 7d 0a 63 61 74 63 68 20 7b  1.0 5.0}.catch {
e6d0: 64 65 73 74 72 6f 79 20 2e 74 6f 70 7d 0a 74 6f  destroy .top}.to
e6e0: 70 6c 65 76 65 6c 20 2e 74 6f 70 0a 77 6d 20 67  plevel .top.wm g
e6f0: 65 6f 6d 65 74 72 79 20 2e 74 6f 70 20 2b 30 2b  eometry .top +0+
e700: 30 0a 74 65 78 74 20 2e 74 6f 70 2e 74 20 2d 77  0.text .top.t -w
e710: 69 64 74 68 20 33 30 20 2d 68 65 69 67 68 74 20  idth 30 -height 
e720: 33 0a 70 61 63 6b 20 2e 74 6f 70 2e 74 0a 2e 74  3.pack .top.t..t
e730: 6f 70 2e 74 20 69 6e 73 65 72 74 20 65 6e 64 20  op.t insert end 
e740: 22 4c 69 6e 65 20 31 22 0a 66 6f 72 20 7b 73 65  "Line 1".for {se
e750: 74 20 69 20 32 7d 20 7b 24 69 20 3c 3d 20 32 30  t i 2} {$i <= 20
e760: 7d 20 7b 69 6e 63 72 20 69 7d 20 7b 0a 20 20 20  } {incr i} {.   
e770: 20 2e 74 6f 70 2e 74 20 69 6e 73 65 72 74 20 65   .top.t insert e
e780: 6e 64 20 22 5c 6e 4c 69 6e 65 20 24 69 22 0a 7d  nd "\nLine $i".}
e790: 0a 75 70 64 61 74 65 0a 74 65 73 74 20 74 65 78  .update.test tex
e7a0: 74 44 69 73 70 2d 31 31 2e 31 34 20 7b 54 6b 54  tDisp-11.14 {TkT
e7b0: 65 78 74 53 65 74 59 56 69 65 77 2c 20 6f 6e 6c  extSetYView, onl
e7c0: 79 20 61 20 66 65 77 20 6c 69 6e 65 73 20 76 69  y a few lines vi
e7d0: 73 69 62 6c 65 7d 20 7b 0a 20 20 20 20 2e 74 6f  sible} {.    .to
e7e0: 70 2e 74 20 79 76 69 65 77 20 35 2e 30 0a 20 20  p.t yview 5.0.  
e7f0: 20 20 75 70 64 61 74 65 0a 20 20 20 20 2e 74 6f    update.    .to
e800: 70 2e 74 20 73 65 65 20 31 30 2e 30 0a 20 20 20  p.t see 10.0.   
e810: 20 2e 74 6f 70 2e 74 20 69 6e 64 65 78 20 40 30   .top.t index @0
e820: 2c 30 0a 7d 20 7b 38 2e 30 7d 0a 74 65 73 74 20  ,0.} {8.0}.test 
e830: 74 65 78 74 44 69 73 70 2d 31 31 2e 31 35 20 7b  textDisp-11.15 {
e840: 54 6b 54 65 78 74 53 65 74 59 56 69 65 77 2c 20  TkTextSetYView, 
e850: 6f 6e 6c 79 20 61 20 66 65 77 20 6c 69 6e 65 73  only a few lines
e860: 20 76 69 73 69 62 6c 65 7d 20 7b 0a 20 20 20 20   visible} {.    
e870: 2e 74 6f 70 2e 74 20 79 76 69 65 77 20 35 2e 30  .top.t yview 5.0
e880: 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20 20 20  .    update.    
e890: 2e 74 6f 70 2e 74 20 73 65 65 20 31 31 2e 30 0a  .top.t see 11.0.
e8a0: 20 20 20 20 2e 74 6f 70 2e 74 20 69 6e 64 65 78      .top.t index
e8b0: 20 40 30 2c 30 0a 20 20 20 20 23 20 54 68 65 20   @0,0.    # The 
e8c0: 69 6e 64 65 78 20 39 2e 30 20 73 68 6f 75 6c 64  index 9.0 should
e8d0: 20 62 65 20 6a 75 73 74 20 76 69 73 69 62 6c 65   be just visible
e8e0: 20 62 79 20 61 20 63 6f 75 70 6c 65 20 6f 66 20   by a couple of 
e8f0: 70 69 78 65 6c 73 0a 7d 20 7b 39 2e 30 7d 0a 74  pixels.} {9.0}.t
e900: 65 73 74 20 74 65 78 74 44 69 73 70 2d 31 31 2e  est textDisp-11.
e910: 31 36 20 7b 54 6b 54 65 78 74 53 65 74 59 56 69  16 {TkTextSetYVi
e920: 65 77 2c 20 6f 6e 6c 79 20 61 20 66 65 77 20 6c  ew, only a few l
e930: 69 6e 65 73 20 76 69 73 69 62 6c 65 7d 20 7b 0a  ines visible} {.
e940: 20 20 20 20 2e 74 6f 70 2e 74 20 79 76 69 65 77      .top.t yview
e950: 20 38 2e 30 0a 20 20 20 20 75 70 64 61 74 65 0a   8.0.    update.
e960: 20 20 20 20 2e 74 6f 70 2e 74 20 73 65 65 20 35      .top.t see 5
e970: 2e 30 0a 20 20 20 20 2e 74 6f 70 2e 74 20 69 6e  .0.    .top.t in
e980: 64 65 78 20 40 30 2c 30 0a 7d 20 7b 35 2e 30 7d  dex @0,0.} {5.0}
e990: 0a 74 65 73 74 20 74 65 78 74 44 69 73 70 2d 31  .test textDisp-1
e9a0: 31 2e 31 37 20 7b 54 6b 54 65 78 74 53 65 74 59  1.17 {TkTextSetY
e9b0: 56 69 65 77 2c 20 6f 6e 6c 79 20 61 20 66 65 77  View, only a few
e9c0: 20 6c 69 6e 65 73 20 76 69 73 69 62 6c 65 7d 20   lines visible} 
e9d0: 7b 0a 20 20 20 20 2e 74 6f 70 2e 74 20 79 76 69  {.    .top.t yvi
e9e0: 65 77 20 38 2e 30 0a 20 20 20 20 75 70 64 61 74  ew 8.0.    updat
e9f0: 65 0a 20 20 20 20 2e 74 6f 70 2e 74 20 73 65 65  e.    .top.t see
ea00: 20 34 2e 30 0a 20 20 20 20 2e 74 6f 70 2e 74 20   4.0.    .top.t 
ea10: 69 6e 64 65 78 20 40 30 2c 30 0a 20 20 20 20 23  index @0,0.    #
ea20: 20 54 68 65 20 69 6e 64 65 78 20 32 2e 30 20 73   The index 2.0 s
ea30: 68 6f 75 6c 64 20 62 65 20 6a 75 73 74 20 76 69  hould be just vi
ea40: 73 69 62 6c 65 20 62 79 20 61 20 63 6f 75 70 6c  sible by a coupl
ea50: 65 20 6f 66 20 70 69 78 65 6c 73 0a 7d 20 7b 32  e of pixels.} {2
ea60: 2e 30 7d 0a 74 65 73 74 20 74 65 78 74 44 69 73  .0}.test textDis
ea70: 70 2d 31 31 2e 31 38 20 7b 54 6b 54 65 78 74 53  p-11.18 {TkTextS
ea80: 65 74 59 56 69 65 77 2c 20 73 65 65 20 69 6e 20  etYView, see in 
ea90: 65 6c 69 64 65 64 20 6c 69 6e 65 73 7d 20 7b 0a  elided lines} {.
eaa0: 20 20 20 20 2e 74 6f 70 2e 74 20 64 65 6c 65 74      .top.t delet
eab0: 65 20 31 2e 30 20 65 6e 64 0a 20 20 20 20 66 6f  e 1.0 end.    fo
eac0: 72 20 7b 73 65 74 20 69 20 31 7d 20 7b 24 69 20  r {set i 1} {$i 
ead0: 3c 20 32 30 7d 20 7b 69 6e 63 72 20 69 7d 20 7b  < 20} {incr i} {
eae0: 0a 20 20 20 20 20 20 20 20 2e 74 6f 70 2e 74 20  .        .top.t 
eaf0: 69 6e 73 65 72 74 20 65 6e 64 20 5b 73 74 72 69  insert end [stri
eb00: 6e 67 20 72 65 70 65 61 74 20 22 4c 69 6e 65 20  ng repeat "Line 
eb10: 24 69 22 20 31 30 5d 0a 20 20 20 20 20 20 20 20  $i" 10].        
eb20: 2e 74 6f 70 2e 74 20 69 6e 73 65 72 74 20 65 6e  .top.t insert en
eb30: 64 20 22 5c 6e 22 0a 20 20 20 20 7d 0a 20 20 20  d "\n".    }.   
eb40: 20 2e 74 6f 70 2e 74 20 79 76 69 65 77 20 34 2e   .top.t yview 4.
eb50: 30 0a 20 20 20 20 2e 74 6f 70 2e 74 20 74 61 67  0.    .top.t tag
eb60: 20 61 64 64 20 68 69 64 64 65 6e 20 34 2e 31 30   add hidden 4.10
eb70: 20 22 34 2e 31 30 20 6c 69 6e 65 65 6e 64 22 0a   "4.10 lineend".
eb80: 20 20 20 20 2e 74 6f 70 2e 74 20 74 61 67 20 61      .top.t tag a
eb90: 64 64 20 68 69 64 64 65 6e 20 35 2e 31 35 20 31  dd hidden 5.15 1
eba0: 30 2e 33 0a 20 20 20 20 2e 74 6f 70 2e 74 20 74  0.3.    .top.t t
ebb0: 61 67 20 63 6f 6e 66 69 67 75 72 65 20 68 69 64  ag configure hid
ebc0: 64 65 6e 20 2d 65 6c 69 64 65 20 74 72 75 65 0a  den -elide true.
ebd0: 20 20 20 20 75 70 64 61 74 65 0a 20 20 20 20 2e      update.    .
ebe0: 74 6f 70 2e 74 20 73 65 65 20 22 38 2e 30 20 6c  top.t see "8.0 l
ebf0: 69 6e 65 65 6e 64 22 0a 20 20 20 20 23 20 54 68  ineend".    # Th
ec00: 65 20 69 6e 64 65 78 20 22 38 2e 30 20 6c 69 6e  e index "8.0 lin
ec10: 65 65 6e 64 22 20 69 73 20 6f 6e 20 73 63 72 65  eend" is on scre
ec20: 65 6e 20 64 65 73 70 69 74 65 20 65 6c 69 64 65  en despite elide
ec30: 64 20 2d 3e 20 6e 6f 20 73 63 72 6f 6c 6c 0a 20  d -> no scroll. 
ec40: 20 20 20 2e 74 6f 70 2e 74 20 69 6e 64 65 78 20     .top.t index 
ec50: 40 30 2c 30 0a 7d 20 7b 34 2e 30 7d 0a 74 65 73  @0,0.} {4.0}.tes
ec60: 74 20 74 65 78 74 44 69 73 70 2d 31 31 2e 31 39  t textDisp-11.19
ec70: 20 7b 54 6b 54 65 78 74 53 65 74 59 56 69 65 77   {TkTextSetYView
ec80: 2c 20 73 65 65 20 69 6e 20 65 6c 69 64 65 64 20  , see in elided 
ec90: 6c 69 6e 65 73 7d 20 7b 0a 20 20 20 20 2e 74 6f  lines} {.    .to
eca0: 70 2e 74 20 64 65 6c 65 74 65 20 31 2e 30 20 65  p.t delete 1.0 e
ecb0: 6e 64 0a 20 20 20 20 66 6f 72 20 7b 73 65 74 20  nd.    for {set 
ecc0: 69 20 31 7d 20 7b 24 69 20 3c 20 35 30 7d 20 7b  i 1} {$i < 50} {
ecd0: 69 6e 63 72 20 69 7d 20 7b 0a 20 20 20 20 20 20  incr i} {.      
ece0: 20 20 2e 74 6f 70 2e 74 20 69 6e 73 65 72 74 20    .top.t insert 
ecf0: 65 6e 64 20 22 4c 69 6e 65 20 24 69 5c 6e 22 0a  end "Line $i\n".
ed00: 20 20 20 20 7d 0a 20 20 20 20 23 20 62 75 74 74      }.    # butt
ed10: 6f 6e 20 6a 75 73 74 20 66 6f 72 20 68 61 76 69  on just for havi
ed20: 6e 67 20 61 20 6c 69 6e 65 20 77 69 74 68 20 61  ng a line with a
ed30: 20 6c 61 72 67 65 72 20 68 65 69 67 68 74 0a 20   larger height. 
ed40: 20 20 20 62 75 74 74 6f 6e 20 2e 74 6f 70 2e 74     button .top.t
ed50: 2e 62 20 2d 74 65 78 74 20 22 54 65 73 74 22 20  .b -text "Test" 
ed60: 2d 62 64 20 32 20 2d 68 69 67 68 6c 69 67 68 74  -bd 2 -highlight
ed70: 74 68 69 63 6b 6e 65 73 73 20 32 0a 20 20 20 20  thickness 2.    
ed80: 2e 74 6f 70 2e 74 20 77 69 6e 64 6f 77 20 63 72  .top.t window cr
ed90: 65 61 74 65 20 32 31 2e 30 20 2d 77 69 6e 64 6f  eate 21.0 -windo
eda0: 77 20 2e 74 6f 70 2e 74 2e 62 0a 20 20 20 20 2e  w .top.t.b.    .
edb0: 74 6f 70 2e 74 20 74 61 67 20 61 64 64 20 68 69  top.t tag add hi
edc0: 64 64 65 6e 20 31 35 2e 33 36 20 32 31 2e 30 0a  dden 15.36 21.0.
edd0: 20 20 20 20 2e 74 6f 70 2e 74 20 74 61 67 20 63      .top.t tag c
ede0: 6f 6e 66 69 67 75 72 65 20 68 69 64 64 65 6e 20  onfigure hidden 
edf0: 2d 65 6c 69 64 65 20 74 72 75 65 0a 20 20 20 20  -elide true.    
ee00: 2e 74 6f 70 2e 74 20 63 6f 6e 66 69 67 75 72 65  .top.t configure
ee10: 20 2d 68 65 69 67 68 74 20 31 35 0a 20 20 20 20   -height 15.    
ee20: 77 6d 20 67 65 6f 6d 65 74 72 79 20 2e 74 6f 70  wm geometry .top
ee30: 20 33 30 30 78 32 30 30 2b 30 2b 30 0a 20 20 20   300x200+0+0.   
ee40: 20 23 20 49 6e 64 69 63 65 73 20 32 31 2e 30 2c   # Indices 21.0,
ee50: 20 31 37 2e 30 20 61 6e 64 20 31 35 2e 30 20 61   17.0 and 15.0 a
ee60: 72 65 20 61 6c 6c 20 6f 6e 20 74 68 65 20 73 61  re all on the sa
ee70: 6d 65 20 64 69 73 70 6c 61 79 20 6c 69 6e 65 0a  me display line.
ee80: 20 20 20 20 23 20 74 68 65 72 65 66 6f 72 65 20      # therefore 
ee90: 69 6e 64 65 78 20 40 30 2c 30 20 73 68 61 6c 6c  index @0,0 shall
eea0: 20 62 65 20 74 68 65 20 73 61 6d 65 20 66 6f 72   be the same for
eeb0: 20 61 6c 6c 20 6f 66 20 74 68 65 6d 0a 20 20 20   all of them.   
eec0: 20 2e 74 6f 70 2e 74 20 73 65 65 20 65 6e 64 0a   .top.t see end.
eed0: 20 20 20 20 75 70 64 61 74 65 0a 20 20 20 20 2e      update.    .
eee0: 74 6f 70 2e 74 20 73 65 65 20 32 31 2e 30 0a 20  top.t see 21.0. 
eef0: 20 20 20 75 70 64 61 74 65 0a 20 20 20 20 73 65     update.    se
ef00: 74 20 69 6e 64 31 20 5b 2e 74 6f 70 2e 74 20 69  t ind1 [.top.t i
ef10: 6e 64 65 78 20 40 30 2c 30 5d 0a 20 20 20 20 2e  ndex @0,0].    .
ef20: 74 6f 70 2e 74 20 73 65 65 20 65 6e 64 0a 20 20  top.t see end.  
ef30: 20 20 75 70 64 61 74 65 0a 20 20 20 20 2e 74 6f    update.    .to
ef40: 70 2e 74 20 73 65 65 20 31 37 2e 30 0a 20 20 20  p.t see 17.0.   
ef50: 20 75 70 64 61 74 65 0a 20 20 20 20 73 65 74 20   update.    set 
ef60: 69 6e 64 32 20 5b 2e 74 6f 70 2e 74 20 69 6e 64  ind2 [.top.t ind
ef70: 65 78 20 40 30 2c 30 5d 0a 20 20 20 20 2e 74 6f  ex @0,0].    .to
ef80: 70 2e 74 20 73 65 65 20 65 6e 64 0a 20 20 20 20  p.t see end.    
ef90: 75 70 64 61 74 65 0a 20 20 20 20 2e 74 6f 70 2e  update.    .top.
efa0: 74 20 73 65 65 20 31 35 2e 30 0a 20 20 20 20 75  t see 15.0.    u
efb0: 70 64 61 74 65 0a 20 20 20 20 73 65 74 20 69 6e  pdate.    set in
efc0: 64 33 20 5b 2e 74 6f 70 2e 74 20 69 6e 64 65 78  d3 [.top.t index
efd0: 20 40 30 2c 30 5d 0a 20 20 20 20 6c 69 73 74 20   @0,0].    list 
efe0: 5b 65 78 70 72 20 7b 24 69 6e 64 31 20 3d 3d 20  [expr {$ind1 == 
eff0: 24 69 6e 64 32 7d 5d 20 5b 65 78 70 72 20 7b 24  $ind2}] [expr {$
f000: 69 6e 64 31 20 3d 3d 20 24 69 6e 64 33 7d 5d 0a  ind1 == $ind3}].
f010: 7d 20 7b 31 20 31 7d 0a 74 65 73 74 20 74 65 78  } {1 1}.test tex
f020: 74 44 69 73 70 2d 31 31 2e 32 30 20 7b 54 6b 54  tDisp-11.20 {TkT
f030: 65 78 74 53 65 74 59 56 69 65 77 2c 20 73 65 65  extSetYView, see
f040: 20 69 6e 20 65 6c 69 64 65 64 20 6c 69 6e 65 73   in elided lines
f050: 7d 20 7b 0a 20 20 20 20 2e 74 6f 70 2e 74 20 64  } {.    .top.t d
f060: 65 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a 20 20  elete 1.0 end.  
f070: 20 20 2e 74 6f 70 2e 74 20 63 6f 6e 66 69 67 75    .top.t configu
f080: 72 65 20 2d 77 72 61 70 20 6e 6f 6e 65 0a 20 20  re -wrap none.  
f090: 20 20 66 6f 72 20 7b 73 65 74 20 69 20 31 7d 20    for {set i 1} 
f0a0: 7b 24 69 20 3c 20 35 7d 20 7b 69 6e 63 72 20 69  {$i < 5} {incr i
f0b0: 7d 20 7b 0a 20 20 20 20 20 20 20 20 2e 74 6f 70  } {.        .top
f0c0: 2e 74 20 69 6e 73 65 72 74 20 65 6e 64 20 5b 73  .t insert end [s
f0d0: 74 72 69 6e 67 20 72 65 70 65 61 74 20 22 4c 69  tring repeat "Li
f0e0: 6e 65 20 24 69 20 22 20 35 30 5d 0a 20 20 20 20  ne $i " 50].    
f0f0: 20 20 20 20 2e 74 6f 70 2e 74 20 69 6e 73 65 72      .top.t inser
f100: 74 20 65 6e 64 20 22 5c 6e 22 0a 20 20 20 20 7d  t end "\n".    }
f110: 0a 20 20 20 20 2e 74 6f 70 2e 74 20 64 65 6c 65  .    .top.t dele
f120: 74 65 20 33 2e 31 31 20 33 2e 31 34 0a 20 20 20  te 3.11 3.14.   
f130: 20 2e 74 6f 70 2e 74 20 74 61 67 20 61 64 64 20   .top.t tag add 
f140: 68 69 64 64 65 6e 20 33 2e 30 20 34 2e 30 0a 20  hidden 3.0 4.0. 
f150: 20 20 20 23 20 74 68 69 73 20 73 68 61 6c 6c 20     # this shall 
f160: 6e 6f 74 20 63 72 61 73 68 20 28 6e 75 6c 6c 20  not crash (null 
f170: 63 68 75 6e 6b 50 74 72 20 69 6e 20 54 6b 54 65  chunkPtr in TkTe
f180: 78 74 53 65 65 43 6d 64 20 69 73 20 74 65 73 74  xtSeeCmd is test
f190: 65 64 29 0a 20 20 20 20 2e 74 6f 70 2e 74 20 73  ed).    .top.t s
f1a0: 65 65 20 33 2e 30 0a 7d 20 7b 7d 0a 74 65 73 74  ee 3.0.} {}.test
f1b0: 20 74 65 78 74 44 69 73 70 2d 31 31 2e 32 31 20   textDisp-11.21 
f1c0: 7b 54 6b 54 65 78 74 53 65 74 59 56 69 65 77 2c  {TkTextSetYView,
f1d0: 20 77 69 6e 64 6f 77 20 68 65 69 67 68 74 20 73   window height s
f1e0: 6d 61 6c 6c 65 72 20 74 68 61 6e 20 74 68 65 20  maller than the 
f1f0: 6c 69 6e 65 20 68 65 69 67 68 74 7d 20 7b 0a 20  line height} {. 
f200: 20 20 20 2e 74 6f 70 2e 74 20 64 65 6c 65 74 65     .top.t delete
f210: 20 31 2e 30 20 65 6e 64 0a 20 20 20 20 66 6f 72   1.0 end.    for
f220: 20 7b 73 65 74 20 69 20 31 7d 20 7b 24 69 20 3c   {set i 1} {$i <
f230: 3d 20 31 30 7d 20 7b 69 6e 63 72 20 69 7d 20 7b  = 10} {incr i} {
f240: 0a 20 20 20 20 20 20 20 20 2e 74 6f 70 2e 74 20  .        .top.t 
f250: 69 6e 73 65 72 74 20 65 6e 64 20 22 4c 69 6e 65  insert end "Line
f260: 20 24 69 5c 6e 22 0a 20 20 20 20 7d 0a 20 20 20   $i\n".    }.   
f270: 20 73 65 74 20 6c 69 6e 65 68 65 69 67 68 74 20   set lineheight 
f280: 5b 66 6f 6e 74 20 6d 65 74 72 69 63 73 20 5b 2e  [font metrics [.
f290: 74 6f 70 2e 74 20 63 67 65 74 20 2d 66 6f 6e 74  top.t cget -font
f2a0: 5d 20 2d 6c 69 6e 65 73 70 61 63 65 5d 0a 20 20  ] -linespace].  
f2b0: 20 20 77 6d 20 67 65 6f 6d 65 74 72 79 20 2e 74    wm geometry .t
f2c0: 6f 70 20 32 30 30 78 5b 65 78 70 72 20 7b 24 6c  op 200x[expr {$l
f2d0: 69 6e 65 68 65 69 67 68 74 20 2f 20 32 7d 5d 0a  ineheight / 2}].
f2e0: 20 20 20 20 75 70 64 61 74 65 0a 20 20 20 20 2e      update.    .
f2f0: 74 6f 70 2e 74 20 73 65 65 20 31 2e 30 0a 20 20  top.t see 1.0.  
f300: 20 20 2e 74 6f 70 2e 74 20 69 6e 64 65 78 20 40    .top.t index @
f310: 30 2c 5b 65 78 70 72 20 7b 24 6c 69 6e 65 68 65  0,[expr {$linehe
f320: 69 67 68 74 20 2d 20 32 7d 5d 0a 7d 20 7b 31 2e  ight - 2}].} {1.
f330: 30 7d 0a 0a 2e 74 20 63 6f 6e 66 69 67 75 72 65  0}...t configure
f340: 20 2d 77 72 61 70 20 77 6f 72 64 0a 2e 74 20 64   -wrap word..t d
f350: 65 6c 65 74 65 20 35 30 2e 30 20 35 31 2e 30 0a  elete 50.0 51.0.
f360: 2e 74 20 69 6e 73 65 72 74 20 35 30 2e 30 20 22  .t insert 50.0 "
f370: 54 68 69 73 20 69 73 20 61 20 6c 6f 6e 67 20 6c  This is a long l
f380: 69 6e 65 2c 20 6f 6e 65 20 74 68 61 74 20 77 69  ine, one that wi
f390: 6c 6c 20 77 72 61 70 20 61 72 6f 75 6e 64 20 74  ll wrap around t
f3a0: 77 69 63 65 2e 5c 6e 22 0a 74 65 73 74 20 74 65  wice.\n".test te
f3b0: 78 74 44 69 73 70 2d 31 32 2e 31 20 7b 4d 65 61  xtDisp-12.1 {Mea
f3c0: 73 75 72 65 55 70 7d 20 7b 0a 20 20 20 20 2e 74  sureUp} {.    .t
f3d0: 20 79 76 69 65 77 20 31 30 30 2e 30 0a 20 20 20   yview 100.0.   
f3e0: 20 75 70 64 61 74 65 0a 20 20 20 20 2e 74 20 79   update.    .t y
f3f0: 76 69 65 77 20 2d 70 69 63 6b 70 6c 61 63 65 20  view -pickplace 
f400: 35 32 2e 30 0a 20 20 20 20 75 70 64 61 74 65 0a  52.0.    update.
f410: 20 20 20 20 2e 74 20 69 6e 64 65 78 20 40 30 2c      .t index @0,
f420: 30 0a 7d 20 7b 34 39 2e 30 7d 0a 74 65 73 74 20  0.} {49.0}.test 
f430: 74 65 78 74 44 69 73 70 2d 31 32 2e 32 20 7b 4d  textDisp-12.2 {M
f440: 65 61 73 75 72 65 55 70 7d 20 7b 0a 20 20 20 20  easureUp} {.    
f450: 2e 74 20 79 76 69 65 77 20 31 30 30 2e 30 0a 20  .t yview 100.0. 
f460: 20 20 20 75 70 64 61 74 65 0a 20 20 20 20 2e 74     update.    .t
f470: 20 79 76 69 65 77 20 2d 70 69 63 6b 70 6c 61 63   yview -pickplac
f480: 65 20 35 33 2e 30 0a 20 20 20 20 75 70 64 61 74  e 53.0.    updat
f490: 65 0a 20 20 20 20 2e 74 20 69 6e 64 65 78 20 40  e.    .t index @
f4a0: 30 2c 30 0a 7d 20 7b 35 30 2e 30 7d 0a 74 65 73  0,0.} {50.0}.tes
f4b0: 74 20 74 65 78 74 44 69 73 70 2d 31 32 2e 33 20  t textDisp-12.3 
f4c0: 7b 4d 65 61 73 75 72 65 55 70 7d 20 7b 0a 20 20  {MeasureUp} {.  
f4d0: 20 20 2e 74 20 79 76 69 65 77 20 31 30 30 2e 30    .t yview 100.0
f4e0: 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20 20 20  .    update.    
f4f0: 2e 74 20 79 76 69 65 77 20 2d 70 69 63 6b 70 6c  .t yview -pickpl
f500: 61 63 65 20 35 30 2e 31 30 0a 20 20 20 20 75 70  ace 50.10.    up
f510: 64 61 74 65 0a 20 20 20 20 2e 74 20 69 6e 64 65  date.    .t inde
f520: 78 20 40 30 2c 30 0a 7d 20 7b 34 35 2e 30 7d 0a  x @0,0.} {45.0}.
f530: 2e 74 20 63 6f 6e 66 69 67 75 72 65 20 2d 77 72  .t configure -wr
f540: 61 70 20 6e 6f 6e 65 0a 74 65 73 74 20 74 65 78  ap none.test tex
f550: 74 44 69 73 70 2d 31 32 2e 34 20 7b 4d 65 61 73  tDisp-12.4 {Meas
f560: 75 72 65 55 70 7d 20 7b 0a 20 20 20 20 2e 74 20  ureUp} {.    .t 
f570: 79 76 69 65 77 20 31 30 30 2e 30 0a 20 20 20 20  yview 100.0.    
f580: 75 70 64 61 74 65 0a 20 20 20 20 2e 74 20 79 76  update.    .t yv
f590: 69 65 77 20 2d 70 69 63 6b 70 6c 61 63 65 20 35  iew -pickplace 5
f5a0: 33 2e 30 0a 20 20 20 20 75 70 64 61 74 65 0a 20  3.0.    update. 
f5b0: 20 20 20 2e 74 20 69 6e 64 65 78 20 40 30 2c 30     .t index @0,0
f5c0: 0a 7d 20 7b 34 38 2e 30 7d 0a 74 65 73 74 20 74  .} {48.0}.test t
f5d0: 65 78 74 44 69 73 70 2d 31 32 2e 35 20 7b 4d 65  extDisp-12.5 {Me
f5e0: 61 73 75 72 65 55 70 7d 20 7b 0a 20 20 20 20 2e  asureUp} {.    .
f5f0: 74 20 79 76 69 65 77 20 31 30 30 2e 30 0a 20 20  t yview 100.0.  
f600: 20 20 75 70 64 61 74 65 0a 20 20 20 20 2e 74 20    update.    .t 
f610: 79 76 69 65 77 20 2d 70 69 63 6b 70 6c 61 63 65  yview -pickplace
f620: 20 35 30 2e 31 30 0a 20 20 20 20 75 70 64 61 74   50.10.    updat
f630: 65 0a 20 20 20 20 2e 74 20 69 6e 64 65 78 20 40  e.    .t index @
f640: 30 2c 30 0a 7d 20 7b 34 35 2e 30 7d 0a 0a 2e 74  0,0.} {45.0}...t
f650: 20 63 6f 6e 66 69 67 75 72 65 20 2d 77 72 61 70   configure -wrap
f660: 20 6e 6f 6e 65 0a 2e 74 20 64 65 6c 65 74 65 20   none..t delete 
f670: 31 2e 30 20 65 6e 64 0a 66 6f 72 20 7b 73 65 74  1.0 end.for {set
f680: 20 69 20 31 7d 20 7b 24 69 20 3c 20 39 39 7d 20   i 1} {$i < 99} 
f690: 7b 69 6e 63 72 20 69 7d 20 7b 0a 20 20 20 20 2e  {incr i} {.    .
f6a0: 74 20 69 6e 73 65 72 74 20 65 6e 64 20 22 4c 69  t insert end "Li
f6b0: 6e 65 20 24 69 5c 6e 22 0a 7d 0a 2e 74 20 69 6e  ne $i\n".}..t in
f6c0: 73 65 72 74 20 65 6e 64 20 22 4c 69 6e 65 20 31  sert end "Line 1
f6d0: 30 30 22 0a 2e 74 20 69 6e 73 65 72 74 20 33 30  00"..t insert 30
f6e0: 2e 65 6e 64 20 7b 20 69 73 20 71 75 69 74 65 20  .end { is quite 
f6f0: 6c 6f 6e 67 2c 20 73 6f 20 74 68 61 74 20 69 74  long, so that it
f700: 20 66 6c 6f 77 73 20 77 61 79 20 6f 66 66 20 74   flows way off t
f710: 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 77 69  he end of the wi
f720: 6e 64 6f 77 20 61 6e 64 20 77 65 20 63 61 6e 20  ndow and we can 
f730: 75 73 65 20 69 74 20 74 6f 20 74 65 73 74 20 6f  use it to test o
f740: 75 74 20 74 68 65 20 68 6f 72 69 7a 6f 6e 74 61  ut the horizonta
f750: 6c 20 70 6f 73 69 74 69 6f 6e 69 6e 67 20 66 65  l positioning fe
f760: 61 74 75 72 65 73 20 6f 66 20 74 68 65 20 22 73  atures of the "s
f770: 65 65 22 20 63 6f 6d 6d 61 6e 64 2e 7d 0a 74 65  ee" command.}.te
f780: 73 74 20 74 65 78 74 44 69 73 70 2d 31 33 2e 31  st textDisp-13.1
f790: 20 7b 54 6b 54 65 78 74 53 65 65 43 6d 64 20 70   {TkTextSeeCmd p
f7a0: 72 6f 63 65 64 75 72 65 7d 20 7b 0a 20 20 20 20  rocedure} {.    
f7b0: 6c 69 73 74 20 5b 63 61 74 63 68 20 7b 2e 74 20  list [catch {.t 
f7c0: 73 65 65 7d 20 6d 73 67 5d 20 24 6d 73 67 0a 7d  see} msg] $msg.}
f7d0: 20 7b 31 20 7b 77 72 6f 6e 67 20 23 20 61 72 67   {1 {wrong # arg
f7e0: 73 3a 20 73 68 6f 75 6c 64 20 62 65 20 22 2e 74  s: should be ".t
f7f0: 20 73 65 65 20 69 6e 64 65 78 22 7d 7d 0a 74 65   see index"}}.te
f800: 73 74 20 74 65 78 74 44 69 73 70 2d 31 33 2e 32  st textDisp-13.2
f810: 20 7b 54 6b 54 65 78 74 53 65 65 43 6d 64 20 70   {TkTextSeeCmd p
f820: 72 6f 63 65 64 75 72 65 7d 20 7b 0a 20 20 20 20  rocedure} {.    
f830: 6c 69 73 74 20 5b 63 61 74 63 68 20 7b 2e 74 20  list [catch {.t 
f840: 73 65 65 20 61 20 62 7d 20 6d 73 67 5d 20 24 6d  see a b} msg] $m
f850: 73 67 0a 7d 20 7b 31 20 7b 77 72 6f 6e 67 20 23  sg.} {1 {wrong #
f860: 20 61 72 67 73 3a 20 73 68 6f 75 6c 64 20 62 65   args: should be
f870: 20 22 2e 74 20 73 65 65 20 69 6e 64 65 78 22 7d   ".t see index"}
f880: 7d 0a 74 65 73 74 20 74 65 78 74 44 69 73 70 2d  }.test textDisp-
f890: 31 33 2e 33 20 7b 54 6b 54 65 78 74 53 65 65 43  13.3 {TkTextSeeC
f8a0: 6d 64 20 70 72 6f 63 65 64 75 72 65 7d 20 7b 0a  md procedure} {.
f8b0: 20 20 20 20 6c 69 73 74 20 5b 63 61 74 63 68 20      list [catch 
f8c0: 7b 2e 74 20 73 65 65 20 62 61 64 49 6e 64 65 78  {.t see badIndex
f8d0: 7d 20 6d 73 67 5d 20 24 6d 73 67 0a 7d 20 7b 31  } msg] $msg.} {1
f8e0: 20 7b 62 61 64 20 74 65 78 74 20 69 6e 64 65 78   {bad text index
f8f0: 20 22 62 61 64 49 6e 64 65 78 22 7d 7d 0a 74 65   "badIndex"}}.te
f900: 73 74 20 74 65 78 74 44 69 73 70 2d 31 33 2e 34  st textDisp-13.4
f910: 20 7b 54 6b 54 65 78 74 53 65 65 43 6d 64 20 70   {TkTextSeeCmd p
f920: 72 6f 63 65 64 75 72 65 7d 20 7b 0a 20 20 20 20  rocedure} {.    
f930: 2e 74 20 78 76 69 65 77 20 6d 6f 76 65 74 6f 20  .t xview moveto 
f940: 30 0a 20 20 20 20 2e 74 20 79 76 69 65 77 20 6d  0.    .t yview m
f950: 6f 76 65 74 6f 20 30 0a 20 20 20 20 75 70 64 61  oveto 0.    upda
f960: 74 65 0a 20 20 20 20 2e 74 20 73 65 65 20 34 2e  te.    .t see 4.
f970: 32 0a 20 20 20 20 2e 74 20 69 6e 64 65 78 20 40  2.    .t index @
f980: 30 2c 30 0a 7d 20 7b 31 2e 30 7d 0a 74 65 73 74  0,0.} {1.0}.test
f990: 20 74 65 78 74 44 69 73 70 2d 31 33 2e 35 20 7b   textDisp-13.5 {
f9a0: 54 6b 54 65 78 74 53 65 65 43 6d 64 20 70 72 6f  TkTextSeeCmd pro
f9b0: 63 65 64 75 72 65 7d 20 7b 0a 20 20 20 20 2e 74  cedure} {.    .t
f9c0: 20 63 6f 6e 66 69 67 75 72 65 20 2d 77 72 61 70   configure -wrap
f9d0: 20 63 68 61 72 0a 20 20 20 20 2e 74 20 78 76 69   char.    .t xvi
f9e0: 65 77 20 6d 6f 76 65 74 6f 20 30 0a 20 20 20 20  ew moveto 0.    
f9f0: 2e 74 20 79 76 69 65 77 20 6d 6f 76 65 74 6f 20  .t yview moveto 
fa00: 30 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20 20  0.    update.   
fa10: 20 2e 74 20 73 65 65 20 31 32 2e 31 0a 20 20 20   .t see 12.1.   
fa20: 20 2e 74 20 69 6e 64 65 78 20 40 30 2c 30 0a 7d   .t index @0,0.}
fa30: 20 7b 33 2e 30 7d 0a 74 65 73 74 20 74 65 78 74   {3.0}.test text
fa40: 44 69 73 70 2d 31 33 2e 36 20 7b 54 6b 54 65 78  Disp-13.6 {TkTex
fa50: 74 53 65 65 43 6d 64 20 70 72 6f 63 65 64 75 72  tSeeCmd procedur
fa60: 65 7d 20 7b 0a 20 20 20 20 2e 74 20 63 6f 6e 66  e} {.    .t conf
fa70: 69 67 75 72 65 20 2d 77 72 61 70 20 63 68 61 72  igure -wrap char
fa80: 0a 20 20 20 20 2e 74 20 78 76 69 65 77 20 6d 6f  .    .t xview mo
fa90: 76 65 74 6f 20 30 0a 20 20 20 20 2e 74 20 79 76  veto 0.    .t yv
faa0: 69 65 77 20 6d 6f 76 65 74 6f 20 30 0a 20 20 20  iew moveto 0.   
fab0: 20 75 70 64 61 74 65 0a 20 20 20 20 2e 74 20 73   update.    .t s
fac0: 65 65 20 33 30 2e 35 30 0a 20 20 20 20 73 65 74  ee 30.50.    set
fad0: 20 78 20 5b 2e 74 20 69 6e 64 65 78 20 40 30 2c   x [.t index @0,
fae0: 30 5d 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69 67  0].    .t config
faf0: 75 72 65 20 2d 77 72 61 70 20 6e 6f 6e 65 0a 20  ure -wrap none. 
fb00: 20 20 20 73 65 74 20 78 0a 7d 20 7b 32 37 2e 30     set x.} {27.0
fb10: 7d 0a 0a 74 65 73 74 20 74 65 78 74 44 69 73 70  }..test textDisp
fb20: 2d 31 33 2e 37 20 7b 54 6b 54 65 78 74 53 65 65  -13.7 {TkTextSee
fb30: 43 6d 64 20 70 72 6f 63 65 64 75 72 65 7d 20 7b  Cmd procedure} {
fb40: 0a 20 20 20 20 2e 74 20 78 76 69 65 77 20 6d 6f  .    .t xview mo
fb50: 76 65 74 6f 20 30 0a 20 20 20 20 2e 74 20 79 76  veto 0.    .t yv
fb60: 69 65 77 20 6d 6f 76 65 74 6f 20 30 0a 20 20 20  iew moveto 0.   
fb70: 20 2e 74 20 74 61 67 20 61 64 64 20 73 65 6c 20   .t tag add sel 
fb80: 33 30 2e 32 30 0a 20 20 20 20 2e 74 20 74 61 67  30.20.    .t tag
fb90: 20 61 64 64 20 73 65 6c 20 33 30 2e 34 30 0a 20   add sel 30.40. 
fba0: 20 20 20 75 70 64 61 74 65 0a 20 20 20 20 2e 74     update.    .t
fbb0: 20 73 65 65 20 33 30 2e 35 30 0a 20 20 20 20 2e   see 30.50.    .
fbc0: 74 20 79 76 69 65 77 20 32 35 2e 30 0a 20 20 20  t yview 25.0.   
fbd0: 20 2e 74 20 73 65 65 20 33 30 2e 35 30 0a 20 20   .t see 30.50.  
fbe0: 20 20 73 65 74 20 78 20 5b 6c 69 73 74 20 5b 2e    set x [list [.
fbf0: 74 20 62 62 6f 78 20 33 30 2e 35 30 5d 5d 0a 20  t bbox 30.50]]. 
fc00: 20 20 20 2e 74 20 73 65 65 20 33 30 2e 33 39 0a     .t see 30.39.
fc10: 20 20 20 20 6c 61 70 70 65 6e 64 20 78 20 5b 2e      lappend x [.
fc20: 74 20 62 62 6f 78 20 33 30 2e 33 39 5d 0a 20 20  t bbox 30.39].  
fc30: 20 20 2e 74 20 73 65 65 20 33 30 2e 33 38 0a 20    .t see 30.38. 
fc40: 20 20 20 6c 61 70 70 65 6e 64 20 78 20 5b 2e 74     lappend x [.t
fc50: 20 62 62 6f 78 20 33 30 2e 33 38 5d 0a 20 20 20   bbox 30.38].   
fc60: 20 2e 74 20 73 65 65 20 33 30 2e 32 30 0a 20 20   .t see 30.20.  
fc70: 20 20 6c 61 70 70 65 6e 64 20 78 20 5b 2e 74 20    lappend x [.t 
fc80: 62 62 6f 78 20 33 30 2e 32 30 5d 0a 7d 20 5b 6c  bbox 30.20].} [l
fc90: 69 73 74 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20  ist \.    [list 
fca0: 5b 65 78 70 72 20 7b 24 70 61 64 78 2b 31 30 2a  [expr {$padx+10*
fcb0: 24 66 69 78 65 64 57 69 64 74 68 7d 5d 20 5b 65  $fixedWidth}] [e
fcc0: 78 70 72 20 7b 24 70 61 64 79 2b 35 2a 24 66 69  xpr {$pady+5*$fi
fcd0: 78 65 64 48 65 69 67 68 74 7d 5d 20 24 66 69 78  xedHeight}] $fix
fce0: 65 64 57 69 64 74 68 20 24 66 69 78 65 64 48 65  edWidth $fixedHe
fcf0: 69 67 68 74 5d 20 5c 0a 20 20 20 20 5b 6c 69 73  ight] \.    [lis
fd00: 74 20 24 70 61 64 78 20 5b 65 78 70 72 20 7b 24  t $padx [expr {$
fd10: 70 61 64 79 2b 35 2a 24 66 69 78 65 64 48 65 69  pady+5*$fixedHei
fd20: 67 68 74 7d 5d 20 24 66 69 78 65 64 57 69 64 74  ght}] $fixedWidt
fd30: 68 20 24 66 69 78 65 64 48 65 69 67 68 74 5d 20  h $fixedHeight] 
fd40: 5c 0a 20 20 20 20 5b 6c 69 73 74 20 24 70 61 64  \.    [list $pad
fd50: 78 20 5b 65 78 70 72 20 7b 24 70 61 64 79 2b 35  x [expr {$pady+5
fd60: 2a 24 66 69 78 65 64 48 65 69 67 68 74 7d 5d 20  *$fixedHeight}] 
fd70: 24 66 69 78 65 64 57 69 64 74 68 20 24 66 69 78  $fixedWidth $fix
fd80: 65 64 48 65 69 67 68 74 5d 20 5c 0a 20 20 20 20  edHeight] \.    
fd90: 5b 6c 69 73 74 20 5b 65 78 70 72 20 7b 24 70 61  [list [expr {$pa
fda0: 64 78 2b 31 30 2a 24 66 69 78 65 64 57 69 64 74  dx+10*$fixedWidt
fdb0: 68 7d 5d 20 5b 65 78 70 72 20 7b 24 70 61 64 79  h}] [expr {$pady
fdc0: 2b 35 2a 24 66 69 78 65 64 48 65 69 67 68 74 7d  +5*$fixedHeight}
fdd0: 5d 20 24 66 69 78 65 64 57 69 64 74 68 20 24 66  ] $fixedWidth $f
fde0: 69 78 65 64 48 65 69 67 68 74 5d 5d 0a 0a 23 20  ixedHeight]]..# 
fdf0: 79 20 70 6f 73 69 74 69 6f 6e 69 6e 67 20 69 73  y positioning is
fe00: 20 64 69 66 66 65 72 65 6e 74 20 62 65 74 77 65   different betwe
fe10: 65 6e 0a 23 20 77 69 6e 64 6f 77 73 20 61 6e 64  en.# windows and
fe20: 20 6c 69 6e 75 78 2f 6d 61 63 20 6f 73 20 78 0a   linux/mac os x.
fe30: 23 20 62 75 67 3f 0a 74 65 73 74 20 74 65 78 74  # bug?.test text
fe40: 44 69 73 70 2d 31 33 2e 38 20 7b 54 6b 54 65 78  Disp-13.8 {TkTex
fe50: 74 53 65 65 43 6d 64 20 70 72 6f 63 65 64 75 72  tSeeCmd procedur
fe60: 65 7d 20 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20  e} -constraints 
fe70: 79 73 63 72 6f 6c 6c 70 6f 73 69 74 69 6f 6e 20  yscrollposition 
fe80: 2d 62 6f 64 79 20 7b 0a 20 20 20 20 2e 74 20 78  -body {.    .t x
fe90: 76 69 65 77 20 6d 6f 76 65 74 6f 20 30 0a 20 20  view moveto 0.  
fea0: 20 20 2e 74 20 79 76 69 65 77 20 6d 6f 76 65 74    .t yview movet
feb0: 6f 20 30 0a 20 20 20 20 2e 74 20 74 61 67 20 61  o 0.    .t tag a
fec0: 64 64 20 73 65 6c 20 33 30 2e 32 30 0a 20 20 20  dd sel 30.20.   
fed0: 20 2e 74 20 74 61 67 20 61 64 64 20 73 65 6c 20   .t tag add sel 
fee0: 33 30 2e 35 30 0a 20 20 20 20 75 70 64 61 74 65  30.50.    update
fef0: 0a 20 20 20 20 2e 74 20 73 65 65 20 33 30 2e 35  .    .t see 30.5
ff00: 30 0a 20 20 20 20 73 65 74 20 78 20 5b 6c 69 73  0.    set x [lis
ff10: 74 20 5b 2e 74 20 62 62 6f 78 20 33 30 2e 35 30  t [.t bbox 30.50
ff20: 5d 5d 0a 20 20 20 20 2e 74 20 73 65 65 20 33 30  ]].    .t see 30
ff30: 2e 36 30 0a 20 20 20 20 6c 61 70 70 65 6e 64 20  .60.    lappend 
ff40: 78 20 5b 2e 74 20 62 62 6f 78 20 33 30 2e 36 30  x [.t bbox 30.60
ff50: 5d 0a 20 20 20 20 2e 74 20 73 65 65 20 33 30 2e  ].    .t see 30.
ff60: 36 35 0a 20 20 20 20 6c 61 70 70 65 6e 64 20 78  65.    lappend x
ff70: 20 5b 2e 74 20 62 62 6f 78 20 33 30 2e 36 35 5d   [.t bbox 30.65]
ff80: 0a 20 20 20 20 2e 74 20 73 65 65 20 33 30 2e 39  .    .t see 30.9
ff90: 30 0a 20 20 20 20 6c 61 70 70 65 6e 64 20 78 20  0.    lappend x 
ffa0: 5b 2e 74 20 62 62 6f 78 20 33 30 2e 39 30 5d 0a  [.t bbox 30.90].
ffb0: 20 20 20 20 73 65 74 20 78 0a 7d 20 2d 72 65 73      set x.} -res
ffc0: 75 6c 74 20 5b 6c 69 73 74 20 5c 0a 20 20 20 20  ult [list \.    
ffd0: 5b 6c 69 73 74 20 5b 65 78 70 72 20 7b 24 70 61  [list [expr {$pa
ffe0: 64 78 2b 31 30 2a 24 66 69 78 65 64 57 69 64 74  dx+10*$fixedWidt
fff0: 68 7d 5d 20 5b 65 78 70 72 20 7b 24 70 61 64 79  h}] [expr {$pady
10000 2b 35 2a 24 66 69 78 65 64 48 65 69 67 68 74 2d  +5*$fixedHeight-
10010 34 7d 5d 20 24 66 69 78 65 64 57 69 64 74 68 20  4}] $fixedWidth 
10020 24 66 69 78 65 64 48 65 69 67 68 74 5d 20 5c 0a  $fixedHeight] \.
10030 20 20 20 20 5b 6c 69 73 74 20 5b 65 78 70 72 20      [list [expr 
10040 7b 24 70 61 64 78 2b 31 39 2a 24 66 69 78 65 64  {$padx+19*$fixed
10050 57 69 64 74 68 7d 5d 20 5b 65 78 70 72 20 7b 24  Width}] [expr {$
10060 70 61 64 79 2b 35 2a 24 66 69 78 65 64 48 65 69  pady+5*$fixedHei
10070 67 68 74 2d 34 7d 5d 20 24 66 69 78 65 64 57 69  ght-4}] $fixedWi
10080 64 74 68 20 24 66 69 78 65 64 48 65 69 67 68 74  dth $fixedHeight
10090 5d 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20 5b 65  ] \.    [list [e
100a0 78 70 72 20 7b 24 70 61 64 78 2b 31 39 2a 24 66  xpr {$padx+19*$f
100b0 69 78 65 64 57 69 64 74 68 7d 5d 20 5b 65 78 70  ixedWidth}] [exp
100c0 72 20 7b 24 70 61 64 79 2b 35 2a 24 66 69 78 65  r {$pady+5*$fixe
100d0 64 48 65 69 67 68 74 2d 34 7d 5d 20 24 66 69 78  dHeight-4}] $fix
100e0 65 64 57 69 64 74 68 20 24 66 69 78 65 64 48 65  edWidth $fixedHe
100f0 69 67 68 74 5d 20 5c 0a 20 20 20 20 5b 6c 69 73  ight] \.    [lis
10100 74 20 5b 65 78 70 72 20 7b 24 70 61 64 78 2b 31  t [expr {$padx+1
10110 30 2a 24 66 69 78 65 64 57 69 64 74 68 7d 5d 20  0*$fixedWidth}] 
10120 5b 65 78 70 72 20 7b 24 70 61 64 79 2b 35 2a 24  [expr {$pady+5*$
10130 66 69 78 65 64 48 65 69 67 68 74 2d 34 7d 5d 20  fixedHeight-4}] 
10140 24 66 69 78 65 64 57 69 64 74 68 20 24 66 69 78  $fixedWidth $fix
10150 65 64 48 65 69 67 68 74 5d 5d 0a 0a 23 20 79 20  edHeight]]..# y 
10160 70 6f 73 69 74 69 6f 6e 69 6e 67 20 69 73 20 64  positioning is d
10170 69 66 66 65 72 65 6e 74 20 62 65 74 77 65 65 6e  ifferent between
10180 0a 23 20 77 69 6e 64 6f 77 73 20 61 6e 64 20 6c  .# windows and l
10190 69 6e 75 78 2f 6d 61 63 20 6f 73 20 78 0a 23 20  inux/mac os x.# 
101a0 62 75 67 3f 0a 74 65 73 74 20 74 65 78 74 44 69  bug?.test textDi
101b0 73 70 2d 31 33 2e 39 20 7b 54 6b 54 65 78 74 53  sp-13.9 {TkTextS
101c0 65 65 43 6d 64 20 70 72 6f 63 65 64 75 72 65 7d  eeCmd procedure}
101d0 20 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20 79 73   -constraints ys
101e0 63 72 6f 6c 6c 70 6f 73 69 74 69 6f 6e 20 2d 62  crollposition -b
101f0 6f 64 79 20 7b 0a 20 20 20 20 23 20 74 68 69 73  ody {.    # this
10200 20 63 61 6e 20 62 65 20 69 6d 70 72 6f 76 65 64   can be improved
10210 0a 20 20 20 20 77 6d 20 67 65 6f 6d 20 2e 20 5b  .    wm geom . [
10220 65 78 70 72 20 24 77 69 64 74 68 2d 32 5d 78 24  expr $width-2]x$
10230 68 65 69 67 68 74 0a 20 20 20 20 2e 74 20 78 76  height.    .t xv
10240 69 65 77 20 6d 6f 76 65 74 6f 20 30 0a 20 20 20  iew moveto 0.   
10250 20 2e 74 20 79 76 69 65 77 20 6d 6f 76 65 74 6f   .t yview moveto
10260 20 30 0a 20 20 20 20 2e 74 20 74 61 67 20 61 64   0.    .t tag ad
10270 64 20 73 65 6c 20 33 30 2e 32 30 0a 20 20 20 20  d sel 30.20.    
10280 2e 74 20 74 61 67 20 61 64 64 20 73 65 6c 20 33  .t tag add sel 3
10290 30 2e 35 30 0a 20 20 20 20 75 70 64 61 74 65 0a  0.50.    update.
102a0 20 20 20 20 2e 74 20 73 65 65 20 33 30 2e 35 30      .t see 30.50
102b0 0a 20 20 20 20 73 65 74 20 78 20 5b 6c 69 73 74  .    set x [list
102c0 20 5b 2e 74 20 62 62 6f 78 20 33 30 2e 35 30 5d   [.t bbox 30.50]
102d0 5d 0a 20 20 20 20 2e 74 20 73 65 65 20 33 30 2e  ].    .t see 30.
102e0 36 30 0a 20 20 20 20 6c 61 70 70 65 6e 64 20 78  60.    lappend x
102f0 20 5b 2e 74 20 62 62 6f 78 20 33 30 2e 36 30 5d   [.t bbox 30.60]
10300 0a 20 20 20 20 2e 74 20 73 65 65 20 33 30 2e 36  .    .t see 30.6
10310 35 0a 20 20 20 20 6c 61 70 70 65 6e 64 20 78 20  5.    lappend x 
10320 5b 2e 74 20 62 62 6f 78 20 33 30 2e 36 35 5d 0a  [.t bbox 30.65].
10330 20 20 20 20 2e 74 20 73 65 65 20 33 30 2e 39 30      .t see 30.90
10340 0a 20 20 20 20 6c 61 70 70 65 6e 64 20 78 20 5b  .    lappend x [
10350 2e 74 20 62 62 6f 78 20 33 30 2e 39 30 5d 0a 7d  .t bbox 30.90].}
10360 20 2d 72 65 73 75 6c 74 20 5b 6c 69 73 74 20 5c   -result [list \
10370 0a 20 20 20 20 5b 6c 69 73 74 20 5b 65 78 70 72  .    [list [expr
10380 20 7b 24 70 61 64 78 2b 31 30 2a 24 66 69 78 65   {$padx+10*$fixe
10390 64 57 69 64 74 68 2b 31 7d 5d 20 5b 65 78 70 72  dWidth+1}] [expr
103a0 20 7b 35 2a 24 66 69 78 65 64 48 65 69 67 68 74   {5*$fixedHeight
103b0 7d 5d 20 24 66 69 78 65 64 57 69 64 74 68 20 24  }] $fixedWidth $
103c0 66 69 78 65 64 48 65 69 67 68 74 5d 20 5c 0a 20  fixedHeight] \. 
103d0 20 20 20 5b 6c 69 73 74 20 5b 65 78 70 72 20 7b     [list [expr {
103e0 24 70 61 64 78 2b 31 39 2a 24 66 69 78 65 64 57  $padx+19*$fixedW
103f0 69 64 74 68 2b 32 7d 5d 20 5b 65 78 70 72 20 7b  idth+2}] [expr {
10400 35 2a 24 66 69 78 65 64 48 65 69 67 68 74 7d 5d  5*$fixedHeight}]
10410 20 24 66 69 78 65 64 57 69 64 74 68 20 24 66 69   $fixedWidth $fi
10420 78 65 64 48 65 69 67 68 74 5d 20 5c 0a 20 20 20  xedHeight] \.   
10430 20 5b 6c 69 73 74 20 5b 65 78 70 72 20 7b 24 70   [list [expr {$p
10440 61 64 78 2b 31 39 2a 24 66 69 78 65 64 57 69 64  adx+19*$fixedWid
10450 74 68 2b 32 7d 5d 20 5b 65 78 70 72 20 7b 35 2a  th+2}] [expr {5*
10460 24 66 69 78 65 64 48 65 69 67 68 74 7d 5d 20 24  $fixedHeight}] $
10470 66 69 78 65 64 57 69 64 74 68 20 24 66 69 78 65  fixedWidth $fixe
10480 64 48 65 69 67 68 74 5d 20 5c 0a 20 20 20 20 5b  dHeight] \.    [
10490 6c 69 73 74 20 5b 65 78 70 72 20 7b 24 70 61 64  list [expr {$pad
104a0 78 2b 31 30 2a 24 66 69 78 65 64 57 69 64 74 68  x+10*$fixedWidth
104b0 2b 31 7d 5d 20 5b 65 78 70 72 20 7b 35 2a 24 66  +1}] [expr {5*$f
104c0 69 78 65 64 48 65 69 67 68 74 7d 5d 20 24 66 69  ixedHeight}] $fi
104d0 78 65 64 57 69 64 74 68 20 24 66 69 78 65 64 48  xedWidth $fixedH
104e0 65 69 67 68 74 5d 5d 0a 0a 74 65 73 74 20 74 65  eight]]..test te
104f0 78 74 44 69 73 70 2d 31 33 2e 31 30 20 7b 54 6b  xtDisp-13.10 {Tk
10500 54 65 78 74 53 65 65 43 6d 64 20 70 72 6f 63 65  TextSeeCmd proce
10510 64 75 72 65 7d 20 7b 7d 20 7b 0a 20 20 20 20 23  dure} {} {.    #
10520 20 53 46 20 42 75 67 20 36 34 31 37 37 38 0a 20   SF Bug 641778. 
10530 20 20 20 73 65 74 20 77 20 2e 74 73 65 65 0a 20     set w .tsee. 
10540 20 20 20 64 65 73 74 72 6f 79 20 24 77 0a 20 20     destroy $w.  
10550 20 20 74 65 78 74 20 24 77 20 2d 66 6f 6e 74 20    text $w -font 
10560 7b 48 65 6c 76 65 74 69 63 61 20 38 20 6e 6f 72  {Helvetica 8 nor
10570 6d 61 6c 7d 20 2d 62 64 20 31 36 0a 20 20 20 20  mal} -bd 16.    
10580 24 77 20 69 6e 73 65 72 74 20 65 6e 64 20 48 65  $w insert end He
10590 6c 6c 6f 0a 20 20 20 20 24 77 20 73 65 65 20 65  llo.    $w see e
105a0 6e 64 0a 20 20 20 20 73 65 74 20 72 65 73 20 5b  nd.    set res [
105b0 24 77 20 62 62 6f 78 20 65 6e 64 5d 0a 20 20 20  $w bbox end].   
105c0 20 64 65 73 74 72 6f 79 20 24 77 0a 20 20 20 20   destroy $w.    
105d0 73 65 74 20 72 65 73 0a 7d 20 7b 7d 0a 74 65 73  set res.} {}.tes
105e0 74 20 74 65 78 74 44 69 73 70 2d 31 33 2e 31 31  t textDisp-13.11
105f0 20 7b 54 6b 54 65 78 74 53 65 65 43 6d 64 20 70   {TkTextSeeCmd p
10600 72 6f 63 65 64 75 72 65 7d 20 7b 7d 20 7b 0a 20  rocedure} {} {. 
10610 20 20 20 23 20 69 6e 73 65 72 74 69 6f 6e 20 6f     # insertion o
10620 66 20 61 20 63 68 61 72 61 63 74 65 72 20 61 74  f a character at
10630 20 65 6e 64 20 6f 66 20 61 20 6c 69 6e 65 20 63   end of a line c
10640 6f 6e 74 61 69 6e 69 6e 67 20 6d 75 6c 74 69 2d  ontaining multi-
10650 62 79 74 65 0a 20 20 20 20 23 20 63 68 61 72 61  byte.    # chara
10660 63 74 65 72 73 20 61 6e 64 20 63 61 6c 6c 69 6e  cters and callin
10670 67 20 73 65 65 20 61 74 20 74 68 65 20 6c 69 6e  g see at the lin
10680 65 20 65 6e 64 20 73 68 61 6c 6c 20 61 63 74 75  e end shall actu
10690 61 6c 6c 79 20 73 68 6f 77 0a 20 20 20 20 23 20  ally show.    # 
106a0 74 68 69 73 20 63 68 61 72 61 63 74 65 72 0a 20  this character. 
106b0 20 20 20 74 6f 70 6c 65 76 65 6c 20 2e 74 6f 70     toplevel .top
106c0 32 0a 20 20 20 20 70 61 63 6b 20 5b 74 65 78 74  2.    pack [text
106d0 20 2e 74 6f 70 32 2e 74 32 20 2d 77 72 61 70 20   .top2.t2 -wrap 
106e0 6e 6f 6e 65 5d 0a 20 20 20 20 66 6f 72 20 7b 73  none].    for {s
106f0 65 74 20 69 20 31 7d 20 7b 24 69 20 3c 20 35 7d  et i 1} {$i < 5}
10700 20 7b 69 6e 63 72 20 69 7d 20 7b 0a 20 20 20 20   {incr i} {.    
10710 20 20 20 20 2e 74 6f 70 32 2e 74 32 20 69 6e 73      .top2.t2 ins
10720 65 72 74 20 65 6e 64 20 5b 73 74 72 69 6e 67 20  ert end [string 
10730 72 65 70 65 61 74 20 22 4c 69 6e 65 20 24 69 3a  repeat "Line $i:
10740 20 c3 a9 c3 a8 c3 a0 c3 a7 c3 b9 22 20 35 5d 5c   .........." 5]\
10750 6e 0a 0a 20 20 20 20 7d 0a 20 20 20 20 77 6d 20  n..    }.    wm 
10760 67 65 6f 6d 65 74 72 79 20 2e 74 6f 70 32 20 33  geometry .top2 3
10770 30 30 78 32 30 30 2b 30 2b 30 0a 20 20 20 20 75  00x200+0+0.    u
10780 70 64 61 74 65 0a 20 20 20 20 2e 74 6f 70 32 2e  pdate.    .top2.
10790 74 32 20 73 65 65 20 22 31 2e 30 20 6c 69 6e 65  t2 see "1.0 line
107a0 65 6e 64 22 0a 20 20 20 20 75 70 64 61 74 65 0a  end".    update.
107b0 20 20 20 20 73 65 74 20 72 65 66 20 5b 2e 74 6f      set ref [.to
107c0 70 32 2e 74 32 20 69 6e 64 65 78 20 40 30 2c 30  p2.t2 index @0,0
107d0 5d 0a 20 20 20 20 2e 74 6f 70 32 2e 74 32 20 69  ].    .top2.t2 i
107e0 6e 73 65 72 74 20 22 31 2e 30 20 6c 69 6e 65 65  nsert "1.0 linee
107f0 6e 64 22 20 c3 a7 0a 20 20 20 20 2e 74 6f 70 32  nd" ...    .top2
10800 2e 74 32 20 73 65 65 20 22 31 2e 30 20 6c 69 6e  .t2 see "1.0 lin
10810 65 65 6e 64 22 0a 20 20 20 20 75 70 64 61 74 65  eend".    update
10820 0a 20 20 20 20 73 65 74 20 6e 65 77 20 5b 2e 74  .    set new [.t
10830 6f 70 32 2e 74 32 20 69 6e 64 65 78 20 40 30 2c  op2.t2 index @0,
10840 30 5d 0a 20 20 20 20 73 65 74 20 72 65 73 20 5b  0].    set res [
10850 2e 74 6f 70 32 2e 74 32 20 63 6f 6d 70 61 72 65  .top2.t2 compare
10860 20 24 72 65 66 20 3d 3d 20 24 6e 65 77 5d 0a 20   $ref == $new]. 
10870 20 20 20 64 65 73 74 72 6f 79 20 2e 74 6f 70 32     destroy .top2
10880 0a 20 20 20 20 73 65 74 20 72 65 73 0a 7d 20 7b  .    set res.} {
10890 30 7d 0a 77 6d 20 67 65 6f 6d 20 2e 20 7b 7d 0a  0}.wm geom . {}.
108a0 0a 2e 74 20 63 6f 6e 66 69 67 75 72 65 20 2d 77  ..t configure -w
108b0 72 61 70 20 6e 6f 6e 65 0a 74 65 73 74 20 74 65  rap none.test te
108c0 78 74 44 69 73 70 2d 31 34 2e 31 20 7b 54 6b 54  xtDisp-14.1 {TkT
108d0 65 78 74 58 76 69 65 77 43 6d 64 20 70 72 6f 63  extXviewCmd proc
108e0 65 64 75 72 65 7d 20 7b 0a 20 20 20 20 2e 74 20  edure} {.    .t 
108f0 64 65 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a 20  delete 1.0 end. 
10900 20 20 20 75 70 64 61 74 65 0a 20 20 20 20 2e 74     update.    .t
10910 20 69 6e 73 65 72 74 20 65 6e 64 20 78 78 78 78   insert end xxxx
10920 78 78 78 78 78 5c 6e 0a 20 20 20 20 2e 74 20 69  xxxxx\n.    .t i
10930 6e 73 65 72 74 20 65 6e 64 20 22 78 78 78 78 78  nsert end "xxxxx
10940 20 78 78 78 78 78 78 78 78 78 78 78 20 78 78 78   xxxxxxxxxxx xxx
10950 78 20 78 78 78 78 78 78 78 78 78 78 78 78 78 78  x xxxxxxxxxxxxxx
10960 78 78 78 78 78 78 20 78 78 78 78 78 78 78 78 78  xxxxxx xxxxxxxxx
10970 78 78 78 5c 6e 22 0a 20 20 20 20 2e 74 20 69 6e  xxx\n".    .t in
10980 73 65 72 74 20 65 6e 64 20 22 78 78 78 78 20 78  sert end "xxxx x
10990 78 78 78 78 78 78 78 78 20 78 78 78 78 78 78 78  xxxxxxxx xxxxxxx
109a0 78 78 78 78 78 78 22 0a 20 20 20 20 2e 74 20 78  xxxxxx".    .t x
109b0 76 69 65 77 20 6d 6f 76 65 74 6f 20 2e 35 0a 20  view moveto .5. 
109c0 20 20 20 2e 74 20 78 76 69 65 77 0a 7d 20 5b 6c     .t xview.} [l
109d0 69 73 74 20 30 2e 35 20 5b 65 78 70 72 20 7b 36  ist 0.5 [expr {6
109e0 2e 2f 37 2e 7d 5d 5d 0a 2e 74 20 63 6f 6e 66 69  ./7.}]]..t confi
109f0 67 75 72 65 20 2d 77 72 61 70 20 63 68 61 72 0a  gure -wrap char.
10a00 74 65 73 74 20 74 65 78 74 44 69 73 70 2d 31 34  test textDisp-14
10a10 2e 32 20 7b 54 6b 54 65 78 74 58 76 69 65 77 43  .2 {TkTextXviewC
10a20 6d 64 20 70 72 6f 63 65 64 75 72 65 7d 20 7b 0a  md procedure} {.
10a30 20 20 20 20 2e 74 20 64 65 6c 65 74 65 20 31 2e      .t delete 1.
10a40 30 20 65 6e 64 0a 20 20 20 20 75 70 64 61 74 65  0 end.    update
10a50 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20 65  .    .t insert e
10a60 6e 64 20 78 78 78 78 78 78 78 78 78 5c 6e 0a 20  nd xxxxxxxxx\n. 
10a70 20 20 20 2e 74 20 69 6e 73 65 72 74 20 65 6e 64     .t insert end
10a80 20 22 78 78 78 78 78 5c 6e 22 0a 20 20 20 20 2e   "xxxxx\n".    .
10a90 74 20 69 6e 73 65 72 74 20 65 6e 64 20 22 78 78  t insert end "xx
10aa0 78 78 22 0a 20 20 20 20 2e 74 20 78 76 69 65 77  xx".    .t xview
10ab0 0a 7d 20 7b 30 2e 30 20 31 2e 30 7d 0a 2e 74 20  .} {0.0 1.0}..t 
10ac0 63 6f 6e 66 69 67 75 72 65 20 2d 77 72 61 70 20  configure -wrap 
10ad0 6e 6f 6e 65 0a 74 65 73 74 20 74 65 78 74 44 69  none.test textDi
10ae0 73 70 2d 31 34 2e 33 20 7b 54 6b 54 65 78 74 58  sp-14.3 {TkTextX
10af0 76 69 65 77 43 6d 64 20 70 72 6f 63 65 64 75 72  viewCmd procedur
10b00 65 7d 20 7b 0a 20 20 20 20 2e 74 20 64 65 6c 65  e} {.    .t dele
10b10 74 65 20 31 2e 30 20 65 6e 64 0a 20 20 20 20 75  te 1.0 end.    u
10b20 70 64 61 74 65 0a 20 20 20 20 2e 74 20 69 6e 73  pdate.    .t ins
10b30 65 72 74 20 65 6e 64 20 78 78 78 78 78 78 78 78  ert end xxxxxxxx
10b40 78 5c 6e 0a 20 20 20 20 2e 74 20 69 6e 73 65 72  x\n.    .t inser
10b50 74 20 65 6e 64 20 22 78 78 78 78 78 5c 6e 22 0a  t end "xxxxx\n".
10b60 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20 65 6e      .t insert en
10b70 64 20 22 78 78 78 78 22 0a 20 20 20 20 2e 74 20  d "xxxx".    .t 
10b80 78 76 69 65 77 0a 7d 20 7b 30 2e 30 20 31 2e 30  xview.} {0.0 1.0
10b90 7d 0a 74 65 73 74 20 74 65 78 74 44 69 73 70 2d  }.test textDisp-
10ba0 31 34 2e 34 20 7b 54 6b 54 65 78 74 58 76 69 65  14.4 {TkTextXvie
10bb0 77 43 6d 64 20 70 72 6f 63 65 64 75 72 65 7d 20  wCmd procedure} 
10bc0 7b 0a 20 20 20 20 6c 69 73 74 20 5b 63 61 74 63  {.    list [catc
10bd0 68 20 7b 2e 74 20 78 76 69 65 77 20 6d 6f 76 65  h {.t xview move
10be0 74 6f 7d 20 6d 73 67 5d 20 24 6d 73 67 0a 7d 20  to} msg] $msg.} 
10bf0 7b 31 20 7b 77 72 6f 6e 67 20 23 20 61 72 67 73  {1 {wrong # args
10c00 3a 20 73 68 6f 75 6c 64 20 62 65 20 22 2e 74 20  : should be ".t 
10c10 78 76 69 65 77 20 6d 6f 76 65 74 6f 20 66 72 61  xview moveto fra
10c20 63 74 69 6f 6e 22 7d 7d 0a 74 65 73 74 20 74 65  ction"}}.test te
10c30 78 74 44 69 73 70 2d 31 34 2e 35 20 7b 54 6b 54  xtDisp-14.5 {TkT
10c40 65 78 74 58 76 69 65 77 43 6d 64 20 70 72 6f 63  extXviewCmd proc
10c50 65 64 75 72 65 7d 20 7b 0a 20 20 20 20 6c 69 73  edure} {.    lis
10c60 74 20 5b 63 61 74 63 68 20 7b 2e 74 20 78 76 69  t [catch {.t xvi
10c70 65 77 20 6d 6f 76 65 74 6f 20 61 20 62 7d 20 6d  ew moveto a b} m
10c80 73 67 5d 20 24 6d 73 67 0a 7d 20 7b 31 20 7b 77  sg] $msg.} {1 {w
10c90 72 6f 6e 67 20 23 20 61 72 67 73 3a 20 73 68 6f  rong # args: sho
10ca0 75 6c 64 20 62 65 20 22 2e 74 20 78 76 69 65 77  uld be ".t xview
10cb0 20 6d 6f 76 65 74 6f 20 66 72 61 63 74 69 6f 6e   moveto fraction
10cc0 22 7d 7d 0a 74 65 73 74 20 74 65 78 74 44 69 73  "}}.test textDis
10cd0 70 2d 31 34 2e 36 20 7b 54 6b 54 65 78 74 58 76  p-14.6 {TkTextXv
10ce0 69 65 77 43 6d 64 20 70 72 6f 63 65 64 75 72 65  iewCmd procedure
10cf0 7d 20 7b 0a 20 20 20 20 6c 69 73 74 20 5b 63 61  } {.    list [ca
10d00 74 63 68 20 7b 2e 74 20 78 76 69 65 77 20 6d 6f  tch {.t xview mo
10d10 76 65 74 6f 20 61 7d 20 6d 73 67 5d 20 24 6d 73  veto a} msg] $ms
10d20 67 0a 7d 20 7b 31 20 7b 65 78 70 65 63 74 65 64  g.} {1 {expected
10d30 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e 74 20   floating-point 
10d40 6e 75 6d 62 65 72 20 62 75 74 20 67 6f 74 20 22  number but got "
10d50 61 22 7d 7d 0a 74 65 73 74 20 74 65 78 74 44 69  a"}}.test textDi
10d60 73 70 2d 31 34 2e 37 20 7b 54 6b 54 65 78 74 58  sp-14.7 {TkTextX
10d70 76 69 65 77 43 6d 64 20 70 72 6f 63 65 64 75 72  viewCmd procedur
10d80 65 7d 20 7b 0a 20 20 20 20 2e 74 20 64 65 6c 65  e} {.    .t dele
10d90 74 65 20 31 2e 30 20 65 6e 64 0a 20 20 20 20 2e  te 1.0 end.    .
10da0 74 20 69 6e 73 65 72 74 20 65 6e 64 20 78 78 78  t insert end xxx
10db0 78 78 78 78 78 78 5c 6e 0a 20 20 20 20 2e 74 20  xxxxxx\n.    .t 
10dc0 69 6e 73 65 72 74 20 65 6e 64 20 22 78 78 78 78  insert end "xxxx
10dd0 78 20 78 78 78 78 78 78 78 78 78 78 78 20 78 78  x xxxxxxxxxxx xx
10de0 78 78 20 78 78 78 78 78 78 78 78 78 78 78 78 78  xx xxxxxxxxxxxxx
10df0 78 78 78 78 78 78 78 20 78 78 78 78 78 78 78 78  xxxxxxx xxxxxxxx
10e00 78 78 78 78 5c 6e 22 0a 20 20 20 20 2e 74 20 69  xxxx\n".    .t i
10e10 6e 73 65 72 74 20 65 6e 64 20 22 78 78 78 78 20  nsert end "xxxx 
10e20 78 78 78 78 78 78 78 78 78 20 78 78 78 78 78 78  xxxxxxxxx xxxxxx
10e30 78 78 78 78 78 78 78 22 0a 20 20 20 20 2e 74 20  xxxxxxx".    .t 
10e40 78 76 69 65 77 20 6d 6f 76 65 74 6f 20 2e 33 0a  xview moveto .3.
10e50 20 20 20 20 2e 74 20 78 76 69 65 77 0a 7d 20 5b      .t xview.} [
10e60 6c 69 73 74 20 5b 65 78 70 72 20 7b 31 31 38 2e  list [expr {118.
10e70 30 2f 33 39 32 7d 5d 20 5b 65 78 70 72 20 7b 32  0/392}] [expr {2
10e80 35 38 2e 30 2f 33 39 32 7d 5d 5d 0a 74 65 73 74  58.0/392}]].test
10e90 20 74 65 78 74 44 69 73 70 2d 31 34 2e 38 20 7b   textDisp-14.8 {
10ea0 54 6b 54 65 78 74 58 76 69 65 77 43 6d 64 20 70  TkTextXviewCmd p
10eb0 72 6f 63 65 64 75 72 65 7d 20 7b 0a 20 20 20 20  rocedure} {.    
10ec0 2e 74 20 64 65 6c 65 74 65 20 31 2e 30 20 65 6e  .t delete 1.0 en
10ed0 64 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20  d.    .t insert 
10ee0 65 6e 64 20 78 78 78 78 78 78 78 78 78 5c 6e 0a  end xxxxxxxxx\n.
10ef0 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20 65 6e      .t insert en
10f00 64 20 22 78 78 78 78 78 20 78 78 78 78 78 78 78  d "xxxxx xxxxxxx
10f10 78 78 78 78 20 78 78 78 78 20 78 78 78 78 78 78  xxxx xxxx xxxxxx
10f20 78 78 78 78 78 78 78 78 78 78 78 78 78 78 20 78  xxxxxxxxxxxxxx x
10f30 78 78 78 78 78 78 78 78 78 78 78 5c 6e 22 0a 20  xxxxxxxxxxx\n". 
10f40 20 20 20 2e 74 20 69 6e 73 65 72 74 20 65 6e 64     .t insert end
10f50 20 22 78 78 78 78 20 78 78 78 78 78 78 78 78 78   "xxxx xxxxxxxxx
10f60 20 78 78 78 78 78 78 78 78 78 78 78 78 78 22 0a   xxxxxxxxxxxxx".
10f70 20 20 20 20 2e 74 20 78 76 69 65 77 20 6d 6f 76      .t xview mov
10f80 65 74 6f 20 2d 2e 34 0a 20 20 20 20 2e 74 20 78  eto -.4.    .t x
10f90 76 69 65 77 0a 7d 20 5b 6c 69 73 74 20 30 2e 30  view.} [list 0.0
10fa0 20 5b 65 78 70 72 20 7b 35 2e 30 2f 31 34 7d 5d   [expr {5.0/14}]
10fb0 5d 0a 74 65 73 74 20 74 65 78 74 44 69 73 70 2d  ].test textDisp-
10fc0 31 34 2e 39 20 7b 54 6b 54 65 78 74 58 76 69 65  14.9 {TkTextXvie
10fd0 77 43 6d 64 20 70 72 6f 63 65 64 75 72 65 7d 20  wCmd procedure} 
10fe0 7b 0a 20 20 20 20 2e 74 20 64 65 6c 65 74 65 20  {.    .t delete 
10ff0 31 2e 30 20 65 6e 64 0a 20 20 20 20 2e 74 20 69  1.0 end.    .t i
11000 6e 73 65 72 74 20 65 6e 64 20 78 78 78 78 78 78  nsert end xxxxxx
11010 78 78 78 5c 6e 0a 20 20 20 20 2e 74 20 69 6e 73  xxx\n.    .t ins
11020 65 72 74 20 65 6e 64 20 22 78 78 78 78 78 20 78  ert end "xxxxx x
11030 78 78 78 78 78 78 78 78 78 78 20 78 78 78 78 20  xxxxxxxxxx xxxx 
11040 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78  xxxxxxxxxxxxxxxx
11050 78 78 78 78 20 78 78 78 78 78 78 78 78 78 78 78  xxxx xxxxxxxxxxx
11060 78 5c 6e 22 0a 20 20 20 20 2e 74 20 69 6e 73 65  x\n".    .t inse
11070 72 74 20 65 6e 64 20 22 78 78 78 78 20 78 78 78  rt end "xxxx xxx
11080 78 78 78 78 78 78 20 78 78 78 78 78 78 78 78 78  xxxxxx xxxxxxxxx
11090 78 78 78 78 22 0a 20 20 20 20 2e 74 20 78 76 69  xxxx".    .t xvi
110a0 65 77 20 6d 20 31 2e 34 0a 20 20 20 20 2e 74 20  ew m 1.4.    .t 
110b0 78 76 69 65 77 0a 7d 20 5b 6c 69 73 74 20 5b 65  xview.} [list [e
110c0 78 70 72 20 7b 39 2e 30 2f 31 34 7d 5d 20 31 2e  xpr {9.0/14}] 1.
110d0 30 5d 0a 74 65 73 74 20 74 65 78 74 44 69 73 70  0].test textDisp
110e0 2d 31 34 2e 31 30 20 7b 54 6b 54 65 78 74 58 76  -14.10 {TkTextXv
110f0 69 65 77 43 6d 64 20 70 72 6f 63 65 64 75 72 65  iewCmd procedure
11100 7d 20 7b 0a 20 20 20 20 6c 69 73 74 20 5b 63 61  } {.    list [ca
11110 74 63 68 20 7b 2e 74 20 78 76 69 65 77 20 73 63  tch {.t xview sc
11120 72 6f 6c 6c 20 61 7d 20 6d 73 67 5d 20 24 6d 73  roll a} msg] $ms
11130 67 0a 7d 20 7b 31 20 7b 77 72 6f 6e 67 20 23 20  g.} {1 {wrong # 
11140 61 72 67 73 3a 20 73 68 6f 75 6c 64 20 62 65 20  args: should be 
11150 22 2e 74 20 78 76 69 65 77 20 73 63 72 6f 6c 6c  ".t xview scroll
11160 20 6e 75 6d 62 65 72 20 75 6e 69 74 73 7c 70 61   number units|pa
11170 67 65 73 7c 70 69 78 65 6c 73 22 7d 7d 0a 74 65  ges|pixels"}}.te
11180 73 74 20 74 65 78 74 44 69 73 70 2d 31 34 2e 31  st textDisp-14.1
11190 31 20 7b 54 6b 54 65 78 74 58 76 69 65 77 43 6d  1 {TkTextXviewCm
111a0 64 20 70 72 6f 63 65 64 75 72 65 7d 20 7b 0a 20  d procedure} {. 
111b0 20 20 20 6c 69 73 74 20 5b 63 61 74 63 68 20 7b     list [catch {
111c0 2e 74 20 78 76 69 65 77 20 73 63 72 6f 6c 6c 20  .t xview scroll 
111d0 61 20 62 20 63 7d 20 6d 73 67 5d 20 24 6d 73 67  a b c} msg] $msg
111e0 0a 7d 20 7b 31 20 7b 77 72 6f 6e 67 20 23 20 61  .} {1 {wrong # a
111f0 72 67 73 3a 20 73 68 6f 75 6c 64 20 62 65 20 22  rgs: should be "
11200 2e 74 20 78 76 69 65 77 20 73 63 72 6f 6c 6c 20  .t xview scroll 
11210 6e 75 6d 62 65 72 20 75 6e 69 74 73 7c 70 61 67  number units|pag
11220 65 73 7c 70 69 78 65 6c 73 22 7d 7d 0a 74 65 73  es|pixels"}}.tes
11230 74 20 74 65 78 74 44 69 73 70 2d 31 34 2e 31 32  t textDisp-14.12
11240 20 7b 54 6b 54 65 78 74 58 76 69 65 77 43 6d 64   {TkTextXviewCmd
11250 20 70 72 6f 63 65 64 75 72 65 7d 20 7b 0a 20 20   procedure} {.  
11260 20 20 6c 69 73 74 20 5b 63 61 74 63 68 20 7b 2e    list [catch {.
11270 74 20 78 76 69 65 77 20 73 63 72 6f 6c 6c 20 67  t xview scroll g
11280 6f 72 70 20 75 6e 69 74 73 7d 20 6d 73 67 5d 20  orp units} msg] 
11290 24 6d 73 67 0a 7d 20 7b 31 20 7b 65 78 70 65 63  $msg.} {1 {expec
112a0 74 65 64 20 69 6e 74 65 67 65 72 20 62 75 74 20  ted integer but 
112b0 67 6f 74 20 22 67 6f 72 70 22 7d 7d 0a 74 65 73  got "gorp"}}.tes
112c0 74 20 74 65 78 74 44 69 73 70 2d 31 34 2e 31 33  t textDisp-14.13
112d0 20 7b 54 6b 54 65 78 74 58 76 69 65 77 43 6d 64   {TkTextXviewCmd
112e0 20 70 72 6f 63 65 64 75 72 65 7d 20 7b 0a 20 20   procedure} {.  
112f0 20 20 2e 74 20 64 65 6c 65 74 65 20 31 2e 30 20    .t delete 1.0 
11300 65 6e 64 0a 20 20 20 20 2e 74 20 69 6e 73 65 72  end.    .t inser
11310 74 20 65 6e 64 20 78 78 78 78 78 78 78 78 78 5c  t end xxxxxxxxx\
11320 6e 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20  n.    .t insert 
11330 65 6e 64 20 22 61 30 20 61 31 20 61 32 20 61 33  end "a0 a1 a2 a3
11340 20 61 34 20 61 35 20 61 36 20 61 37 20 61 38 20   a4 a5 a6 a7 a8 
11350 61 39 20 62 30 20 62 31 20 62 32 20 62 33 20 62  a9 b0 b1 b2 b3 b
11360 34 20 62 35 20 62 36 20 62 37 20 62 38 20 62 39  4 b5 b6 b7 b8 b9
11370 20 63 30 20 63 31 20 63 32 20 63 33 20 63 34 20   c0 c1 c2 c3 c4 
11380 63 35 20 63 36 20 63 37 20 63 38 20 63 39 20 63  c5 c6 c7 c8 c9 c
11390 30 20 63 31 20 63 32 20 63 33 20 63 34 20 63 35  0 c1 c2 c3 c4 c5
113a0 20 63 36 20 63 37 20 63 38 20 63 39 5c 6e 22 0a   c6 c7 c8 c9\n".
113b0 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20 65 6e      .t insert en
113c0 64 20 22 78 78 78 78 20 78 78 78 78 78 78 78 78  d "xxxx xxxxxxxx
113d0 78 20 78 78 78 78 78 78 78 78 78 78 78 78 78 22  x xxxxxxxxxxxxx"
113e0 0a 20 20 20 20 2e 74 20 78 76 69 65 77 20 6d 6f  .    .t xview mo
113f0 76 65 74 6f 20 30 0a 20 20 20 20 2e 74 20 78 76  veto 0.    .t xv
11400 69 65 77 20 73 63 72 6f 6c 6c 20 32 20 70 61 0a  iew scroll 2 pa.
11410 20 20 20 20 73 65 74 20 78 20 5b 2e 74 20 69 6e      set x [.t in
11420 64 65 78 20 40 30 2c 32 32 5d 0a 20 20 20 20 2e  dex @0,22].    .
11430 74 20 78 76 69 65 77 20 73 63 72 6f 6c 6c 20 2d  t xview scroll -
11440 31 20 70 61 0a 20 20 20 20 6c 61 70 70 65 6e 64  1 pa.    lappend
11450 20 78 20 5b 2e 74 20 69 6e 64 65 78 20 40 30 2c   x [.t index @0,
11460 32 32 5d 0a 20 20 20 20 2e 74 20 78 76 69 65 77  22].    .t xview
11470 20 73 63 72 6f 6c 6c 20 2d 32 20 70 61 67 65 73   scroll -2 pages
11480 0a 20 20 20 20 6c 61 70 70 65 6e 64 20 78 20 5b  .    lappend x [
11490 2e 74 20 69 6e 64 65 78 20 40 30 2c 32 32 5d 0a  .t index @0,22].
114a0 7d 20 7b 32 2e 33 36 20 32 2e 31 38 20 32 2e 30  } {2.36 2.18 2.0
114b0 7d 0a 74 65 73 74 20 74 65 78 74 44 69 73 70 2d  }.test textDisp-
114c0 31 34 2e 31 34 20 7b 54 6b 54 65 78 74 58 76 69  14.14 {TkTextXvi
114d0 65 77 43 6d 64 20 70 72 6f 63 65 64 75 72 65 7d  ewCmd procedure}
114e0 20 7b 0a 20 20 20 20 2e 74 20 64 65 6c 65 74 65   {.    .t delete
114f0 20 31 2e 30 20 65 6e 64 0a 20 20 20 20 2e 74 20   1.0 end.    .t 
11500 69 6e 73 65 72 74 20 65 6e 64 20 78 78 78 78 78  insert end xxxxx
11510 78 78 78 78 5c 6e 0a 20 20 20 20 2e 74 20 69 6e  xxxx\n.    .t in
11520 73 65 72 74 20 65 6e 64 20 22 61 30 20 61 31 20  sert end "a0 a1 
11530 61 32 20 61 33 20 61 34 20 61 35 20 61 36 20 61  a2 a3 a4 a5 a6 a
11540 37 20 61 38 20 61 39 20 62 30 20 62 31 20 62 32  7 a8 a9 b0 b1 b2
11550 20 62 33 20 62 34 20 62 35 20 62 36 20 62 37 20   b3 b4 b5 b6 b7 
11560 62 38 20 62 39 20 63 30 20 63 31 20 63 32 20 63  b8 b9 c0 c1 c2 c
11570 33 20 63 34 20 63 35 20 63 36 20 63 37 20 63 38  3 c4 c5 c6 c7 c8
11580 20 63 39 20 63 30 20 63 31 20 63 32 20 63 33 20   c9 c0 c1 c2 c3 
11590 63 34 20 63 35 20 63 36 20 63 37 20 63 38 20 63  c4 c5 c6 c7 c8 c
115a0 39 5c 6e 22 0a 20 20 20 20 2e 74 20 69 6e 73 65  9\n".    .t inse
115b0 72 74 20 65 6e 64 20 22 78 78 78 78 20 78 78 78  rt end "xxxx xxx
115c0 78 78 78 78 78 78 20 78 78 78 78 78 78 78 78 78  xxxxxx xxxxxxxxx
115d0 78 78 78 78 22 0a 20 20 20 20 2e 74 20 78 76 69  xxxx".    .t xvi
115e0 65 77 20 6d 6f 76 65 74 6f 20 30 0a 20 20 20 20  ew moveto 0.    
115f0 2e 74 20 78 76 69 65 77 20 73 63 72 6f 6c 6c 20  .t xview scroll 
11600 32 31 20 75 0a 20 20 20 20 73 65 74 20 78 20 5b  21 u.    set x [
11610 2e 74 20 69 6e 64 65 78 20 40 30 2c 32 32 5d 0a  .t index @0,22].
11620 20 20 20 20 2e 74 20 78 76 69 65 77 20 73 63 72      .t xview scr
11630 6f 6c 6c 20 2d 31 20 75 0a 20 20 20 20 6c 61 70  oll -1 u.    lap
11640 70 65 6e 64 20 78 20 5b 2e 74 20 69 6e 64 65 78  pend x [.t index
11650 20 40 30 2c 32 32 5d 0a 20 20 20 20 2e 74 20 78   @0,22].    .t x
11660 76 69 65 77 20 73 63 72 6f 6c 6c 20 31 30 30 20  view scroll 100 
11670 75 6e 69 74 73 0a 20 20 20 20 6c 61 70 70 65 6e  units.    lappen
11680 64 20 78 20 5b 2e 74 20 69 6e 64 65 78 20 40 30  d x [.t index @0
11690 2c 32 32 5d 0a 20 20 20 20 2e 74 20 78 76 69 65  ,22].    .t xvie
116a0 77 20 73 63 72 6f 6c 6c 20 2d 31 35 20 75 6e 69  w scroll -15 uni
116b0 74 73 0a 20 20 20 20 6c 61 70 70 65 6e 64 20 78  ts.    lappend x
116c0 20 5b 2e 74 20 69 6e 64 65 78 20 40 30 2c 32 32   [.t index @0,22
116d0 5d 0a 7d 20 7b 32 2e 32 31 20 32 2e 32 30 20 32  ].} {2.21 2.20 2
116e0 2e 39 39 20 32 2e 38 34 7d 0a 74 65 73 74 20 74  .99 2.84}.test t
116f0 65 78 74 44 69 73 70 2d 31 34 2e 31 35 20 7b 54  extDisp-14.15 {T
11700 6b 54 65 78 74 58 76 69 65 77 43 6d 64 20 70 72  kTextXviewCmd pr
11710 6f 63 65 64 75 72 65 7d 20 7b 0a 20 20 20 20 6c  ocedure} {.    l
11720 69 73 74 20 5b 63 61 74 63 68 20 7b 2e 74 20 78  ist [catch {.t x
11730 76 69 65 77 20 73 63 72 6f 6c 6c 20 31 34 20 67  view scroll 14 g
11740 6c 6f 62 73 7d 20 6d 73 67 5d 20 24 6d 73 67 0a  lobs} msg] $msg.
11750 7d 20 7b 31 20 7b 62 61 64 20 61 72 67 75 6d 65  } {1 {bad argume
11760 6e 74 20 22 67 6c 6f 62 73 22 3a 20 6d 75 73 74  nt "globs": must
11770 20 62 65 20 75 6e 69 74 73 2c 20 70 61 67 65 73   be units, pages
11780 2c 20 6f 72 20 70 69 78 65 6c 73 7d 7d 0a 74 65  , or pixels}}.te
11790 73 74 20 74 65 78 74 44 69 73 70 2d 31 34 2e 31  st textDisp-14.1
117a0 36 20 7b 54 6b 54 65 78 74 58 76 69 65 77 43 6d  6 {TkTextXviewCm
117b0 64 20 70 72 6f 63 65 64 75 72 65 7d 20 7b 0a 20  d procedure} {. 
117c0 20 20 20 6c 69 73 74 20 5b 63 61 74 63 68 20 7b     list [catch {
117d0 2e 74 20 78 76 69 65 77 20 66 6c 6f 75 6e 64 65  .t xview flounde
117e0 72 7d 20 6d 73 67 5d 20 24 6d 73 67 0a 7d 20 7b  r} msg] $msg.} {
117f0 31 20 7b 62 61 64 20 6f 70 74 69 6f 6e 20 22 66  1 {bad option "f
11800 6c 6f 75 6e 64 65 72 22 3a 20 6d 75 73 74 20 62  lounder": must b
11810 65 20 6d 6f 76 65 74 6f 20 6f 72 20 73 63 72 6f  e moveto or scro
11820 6c 6c 7d 7d 0a 0a 2e 74 20 63 6f 6e 66 69 67 75  ll}}...t configu
11830 72 65 20 2d 77 72 61 70 20 63 68 61 72 0a 2e 74  re -wrap char..t
11840 20 64 65 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a   delete 1.0 end.
11850 66 6f 72 20 7b 73 65 74 20 69 20 31 7d 20 7b 24  for {set i 1} {$
11860 69 20 3c 20 39 39 7d 20 7b 69 6e 63 72 20 69 7d  i < 99} {incr i}
11870 20 7b 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74   {.    .t insert
11880 20 65 6e 64 20 22 4c 69 6e 65 20 24 69 5c 6e 22   end "Line $i\n"
11890 0a 7d 0a 2e 74 20 69 6e 73 65 72 74 20 65 6e 64  .}..t insert end
118a0 20 22 4c 69 6e 65 20 31 30 30 22 0a 2e 74 20 64   "Line 100"..t d
118b0 65 6c 65 74 65 20 35 30 2e 30 20 35 31 2e 30 0a  elete 50.0 51.0.
118c0 2e 74 20 69 6e 73 65 72 74 20 35 30 2e 30 20 22  .t insert 50.0 "
118d0 54 68 69 73 20 69 73 20 61 20 6c 6f 6e 67 20 6c  This is a long l
118e0 69 6e 65 2c 20 6f 6e 65 20 74 68 61 74 20 77 69  ine, one that wi
118f0 6c 6c 20 77 72 61 70 20 61 72 6f 75 6e 64 20 74  ll wrap around t
11900 77 69 63 65 2e 5c 6e 22 0a 74 65 73 74 20 74 65  wice.\n".test te
11910 78 74 44 69 73 70 2d 31 35 2e 31 20 7b 53 63 72  xtDisp-15.1 {Scr
11920 6f 6c 6c 42 79 4c 69 6e 65 73 20 70 72 6f 63 65  ollByLines proce
11930 64 75 72 65 2c 20 73 63 72 6f 6c 6c 69 6e 67 20  dure, scrolling 
11940 62 61 63 6b 77 61 72 64 73 7d 20 7b 0a 20 20 20  backwards} {.   
11950 20 2e 74 20 79 76 69 65 77 20 34 35 2e 30 0a 20   .t yview 45.0. 
11960 20 20 20 75 70 64 61 74 65 0a 20 20 20 20 2e 74     update.    .t
11970 20 79 76 69 65 77 20 73 63 72 6f 6c 6c 20 2d 33   yview scroll -3
11980 20 75 6e 69 74 73 0a 20 20 20 20 2e 74 20 69 6e   units.    .t in
11990 64 65 78 20 40 30 2c 30 0a 7d 20 7b 34 32 2e 30  dex @0,0.} {42.0
119a0 7d 0a 74 65 73 74 20 74 65 78 74 44 69 73 70 2d  }.test textDisp-
119b0 31 35 2e 32 20 7b 53 63 72 6f 6c 6c 42 79 4c 69  15.2 {ScrollByLi
119c0 6e 65 73 20 70 72 6f 63 65 64 75 72 65 2c 20 73  nes procedure, s
119d0 63 72 6f 6c 6c 69 6e 67 20 62 61 63 6b 77 61 72  crolling backwar
119e0 64 73 7d 20 7b 0a 20 20 20 20 2e 74 20 79 76 69  ds} {.    .t yvi
119f0 65 77 20 35 31 2e 30 0a 20 20 20 20 75 70 64 61  ew 51.0.    upda
11a00 74 65 0a 20 20 20 20 2e 74 20 79 76 69 65 77 20  te.    .t yview 
11a10 73 63 72 6f 6c 6c 20 2d 32 20 75 6e 69 74 73 0a  scroll -2 units.
11a20 20 20 20 20 2e 74 20 69 6e 64 65 78 20 40 30 2c      .t index @0,
11a30 30 0a 7d 20 7b 35 30 2e 32 30 7d 0a 74 65 73 74  0.} {50.20}.test
11a40 20 74 65 78 74 44 69 73 70 2d 31 35 2e 33 20 7b   textDisp-15.3 {
11a50 53 63 72 6f 6c 6c 42 79 4c 69 6e 65 73 20 70 72  ScrollByLines pr
11a60 6f 63 65 64 75 72 65 2c 20 73 63 72 6f 6c 6c 69  ocedure, scrolli
11a70 6e 67 20 62 61 63 6b 77 61 72 64 73 7d 20 7b 0a  ng backwards} {.
11a80 20 20 20 20 2e 74 20 79 76 69 65 77 20 35 31 2e      .t yview 51.
11a90 30 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20 20  0.    update.   
11aa0 20 2e 74 20 79 76 69 65 77 20 73 63 72 6f 6c 6c   .t yview scroll
11ab0 20 2d 34 20 75 6e 69 74 73 0a 20 20 20 20 2e 74   -4 units.    .t
11ac0 20 69 6e 64 65 78 20 40 30 2c 30 0a 7d 20 7b 34   index @0,0.} {4
11ad0 39 2e 30 7d 0a 74 65 73 74 20 74 65 78 74 44 69  9.0}.test textDi
11ae0 73 70 2d 31 35 2e 34 20 7b 53 63 72 6f 6c 6c 42  sp-15.4 {ScrollB
11af0 79 4c 69 6e 65 73 20 70 72 6f 63 65 64 75 72 65  yLines procedure
11b00 2c 20 73 63 72 6f 6c 6c 69 6e 67 20 62 61 63 6b  , scrolling back
11b10 77 61 72 64 73 7d 20 7b 0a 20 20 20 20 2e 74 20  wards} {.    .t 
11b20 79 76 69 65 77 20 35 30 2e 32 31 0a 20 20 20 20  yview 50.21.    
11b30 75 70 64 61 74 65 0a 20 20 20 20 2e 74 20 79 76  update.    .t yv
11b40 69 65 77 20 73 63 72 6f 6c 6c 20 2d 32 20 75 6e  iew scroll -2 un
11b50 69 74 73 0a 20 20 20 20 2e 74 20 69 6e 64 65 78  its.    .t index
11b60 20 40 30 2c 30 0a 7d 20 7b 34 39 2e 30 7d 0a 74   @0,0.} {49.0}.t
11b70 65 73 74 20 74 65 78 74 44 69 73 70 2d 31 35 2e  est textDisp-15.
11b80 35 20 7b 53 63 72 6f 6c 6c 42 79 4c 69 6e 65 73  5 {ScrollByLines
11b90 20 70 72 6f 63 65 64 75 72 65 2c 20 73 63 72 6f   procedure, scro
11ba0 6c 6c 69 6e 67 20 62 61 63 6b 77 61 72 64 73 7d  lling backwards}
11bb0 20 7b 0a 20 20 20 20 2e 74 20 79 76 69 65 77 20   {.    .t yview 
11bc0 35 30 2e 34 31 0a 20 20 20 20 75 70 64 61 74 65  50.41.    update
11bd0 0a 20 20 20 20 2e 74 20 79 76 69 65 77 20 73 63  .    .t yview sc
11be0 72 6f 6c 6c 20 2d 32 20 75 6e 69 74 73 0a 20 20  roll -2 units.  
11bf0 20 20 2e 74 20 69 6e 64 65 78 20 40 30 2c 30 0a    .t index @0,0.
11c00 7d 20 7b 35 30 2e 30 7d 0a 74 65 73 74 20 74 65  } {50.0}.test te
11c10 78 74 44 69 73 70 2d 31 35 2e 36 20 7b 53 63 72  xtDisp-15.6 {Scr
11c20 6f 6c 6c 42 79 4c 69 6e 65 73 20 70 72 6f 63 65  ollByLines proce
11c30 64 75 72 65 2c 20 73 63 72 6f 6c 6c 69 6e 67 20  dure, scrolling 
11c40 62 61 63 6b 77 61 72 64 73 7d 20 7b 0a 20 20 20  backwards} {.   
11c50 20 2e 74 20 79 76 69 65 77 20 33 2e 32 0a 20 20   .t yview 3.2.  
11c60 20 20 75 70 64 61 74 65 0a 20 20 20 20 2e 74 20    update.    .t 
11c70 79 76 69 65 77 20 73 63 72 6f 6c 6c 20 2d 35 20  yview scroll -5 
11c80 75 6e 69 74 73 0a 20 20 20 20 2e 74 20 69 6e 64  units.    .t ind
11c90 65 78 20 40 30 2c 30 0a 7d 20 7b 31 2e 30 7d 0a  ex @0,0.} {1.0}.
11ca0 74 65 73 74 20 74 65 78 74 44 69 73 70 2d 31 35  test textDisp-15
11cb0 2e 37 20 7b 53 63 72 6f 6c 6c 42 79 4c 69 6e 65  .7 {ScrollByLine
11cc0 73 20 70 72 6f 63 65 64 75 72 65 2c 20 73 63 72  s procedure, scr
11cd0 6f 6c 6c 69 6e 67 20 66 6f 72 77 61 72 64 73 7d  olling forwards}
11ce0 20 7b 0a 20 20 20 20 2e 74 20 79 76 69 65 77 20   {.    .t yview 
11cf0 34 38 2e 30 0a 20 20 20 20 75 70 64 61 74 65 0a  48.0.    update.
11d00 20 20 20 20 2e 74 20 79 76 69 65 77 20 73 63 72      .t yview scr
11d10 6f 6c 6c 20 34 20 75 6e 69 74 73 0a 20 20 20 20  oll 4 units.    
11d20 2e 74 20 69 6e 64 65 78 20 40 30 2c 30 0a 7d 20  .t index @0,0.} 
11d30 7b 35 30 2e 34 30 7d 0a 0a 74 65 73 74 20 74 65  {50.40}..test te
11d40 78 74 44 69 73 70 2d 31 35 2e 38 20 7b 53 63 72  xtDisp-15.8 {Scr
11d50 6f 6c 6c 69 6e 67 20 6e 65 61 72 20 65 6e 64 20  olling near end 
11d60 6f 66 20 77 69 6e 64 6f 77 7d 20 7b 0a 20 20 20  of window} {.   
11d70 20 73 65 74 20 74 65 78 74 68 65 69 67 68 74 20   set textheight 
11d80 31 32 0a 20 20 20 20 73 65 74 20 74 65 78 74 77  12.    set textw
11d90 69 64 74 68 20 33 30 0a 0a 20 20 20 20 74 6f 70  idth 30..    top
11da0 6c 65 76 65 6c 20 2e 74 66 0a 20 20 20 20 66 72  level .tf.    fr
11db0 61 6d 65 20 2e 74 66 2e 66 20 2d 72 65 6c 69 65  ame .tf.f -relie
11dc0 66 20 73 75 6e 6b 65 6e 20 2d 62 6f 72 64 65 72  f sunken -border
11dd0 77 69 64 74 68 20 32 0a 20 20 20 20 70 61 63 6b  width 2.    pack
11de0 20 2e 74 66 2e 66 20 2d 70 61 64 78 20 31 30 20   .tf.f -padx 10 
11df0 2d 70 61 64 79 20 31 30 0a 0a 20 20 20 20 74 65  -pady 10..    te
11e00 78 74 20 2e 74 66 2e 66 2e 74 20 2d 66 6f 6e 74  xt .tf.f.t -font
11e10 20 7b 22 43 6f 75 72 69 65 72 20 4e 65 77 22 20   {"Courier New" 
11e20 39 7d 20 2d 68 65 69 67 68 74 20 24 74 65 78 74  9} -height $text
11e30 68 65 69 67 68 74 20 5c 0a 20 20 20 20 20 20 2d  height \.      -
11e40 77 69 64 74 68 20 24 74 65 78 74 77 69 64 74 68  width $textwidth
11e50 20 2d 79 73 63 72 6f 6c 6c 63 6f 6d 6d 61 6e 64   -yscrollcommand
11e60 20 22 2e 74 66 2e 66 2e 73 62 20 73 65 74 22 0a   ".tf.f.sb set".
11e70 20 20 20 20 73 63 72 6f 6c 6c 62 61 72 20 2e 74      scrollbar .t
11e80 66 2e 66 2e 73 62 20 2d 63 6f 6d 6d 61 6e 64 20  f.f.sb -command 
11e90 22 2e 74 66 2e 66 2e 74 20 79 76 69 65 77 22 0a  ".tf.f.t yview".
11ea0 20 20 20 20 70 61 63 6b 20 2e 74 66 2e 66 2e 74      pack .tf.f.t
11eb0 20 2d 73 69 64 65 20 6c 65 66 74 20 2d 65 78 70   -side left -exp
11ec0 61 6e 64 20 31 20 2d 66 69 6c 6c 20 62 6f 74 68  and 1 -fill both
11ed0 0a 20 20 20 20 70 61 63 6b 20 2e 74 66 2e 66 2e  .    pack .tf.f.
11ee0 73 62 20 2d 73 69 64 65 20 72 69 67 68 74 20 2d  sb -side right -
11ef0 66 69 6c 6c 20 79 0a 0a 20 20 20 20 2e 74 66 2e  fill y..    .tf.
11f00 66 2e 74 20 74 61 67 20 63 6f 6e 66 69 67 75 72  f.t tag configur
11f10 65 20 48 65 61 64 65 72 20 2d 66 6f 6e 74 20 7b  e Header -font {
11f20 48 65 6c 76 65 74 69 63 61 20 31 34 20 62 6f 6c  Helvetica 14 bol
11f30 64 20 69 74 61 6c 69 63 7d 20 5c 0a 20 20 20 20  d italic} \.    
11f40 20 20 2d 77 72 61 70 20 77 6f 72 64 20 2d 73 70    -wrap word -sp
11f50 61 63 69 6e 67 31 20 31 32 20 2d 73 70 61 63 69  acing1 12 -spaci
11f60 6e 67 33 20 34 0a 0a 20 20 20 20 2e 74 66 2e 66  ng3 4..    .tf.f
11f70 2e 74 20 69 6e 73 65 72 74 20 65 6e 64 20 22 46  .t insert end "F
11f80 6f 6f 22 20 48 65 61 64 65 72 0a 20 20 20 20 66  oo" Header.    f
11f90 6f 72 20 7b 73 65 74 20 69 20 31 7d 20 7b 24 69  or {set i 1} {$i
11fa0 20 3c 20 24 74 65 78 74 68 65 69 67 68 74 7d 20   < $textheight} 
11fb0 7b 69 6e 63 72 20 69 7d 20 7b 0a 09 2e 74 66 2e  {incr i} {...tf.
11fc0 66 2e 74 20 69 6e 73 65 72 74 20 65 6e 64 20 22  f.t insert end "
11fd0 5c 6e 4c 69 6e 65 20 24 69 22 0a 20 20 20 20 7d  \nLine $i".    }
11fe0 0a 20 20 20 20 75 70 64 61 74 65 20 3b 20 61 66  .    update ; af
11ff0 74 65 72 20 31 30 30 30 20 3b 20 75 70 64 61 74  ter 1000 ; updat
12000 65 0a 20 20 20 20 73 65 74 20 72 65 66 69 6e 64  e.    set refind
12010 20 5b 2e 74 66 2e 66 2e 74 20 69 6e 64 65 78 20   [.tf.f.t index 
12020 40 30 2c 6c 61 73 74 5d 0a 20 20 20 20 23 20 53  @0,last].    # S
12030 68 6f 75 6c 64 20 73 63 72 6f 6c 6c 20 61 6e 64  hould scroll and
12040 20 73 68 6f 75 6c 64 20 6e 6f 74 20 63 72 61 73   should not cras
12050 68 21 0a 20 20 20 20 2e 74 66 2e 66 2e 74 20 79  h!.    .tf.f.t y
12060 76 69 65 77 20 73 63 72 6f 6c 6c 20 31 20 75 6e  view scroll 1 un
12070 69 74 0a 20 20 20 20 23 20 43 68 65 63 6b 20 74  it.    # Check t
12080 68 61 74 20 69 74 20 68 61 73 20 73 63 72 6f 6c  hat it has scrol
12090 6c 65 64 0a 20 20 20 20 73 65 74 20 6e 65 77 69  led.    set newi
120a0 6e 64 20 5b 2e 74 66 2e 66 2e 74 20 69 6e 64 65  nd [.tf.f.t inde
120b0 78 20 40 30 2c 6c 61 73 74 5d 0a 20 20 20 20 73  x @0,last].    s
120c0 65 74 20 72 65 73 20 5b 2e 74 66 2e 66 2e 74 20  et res [.tf.f.t 
120d0 63 6f 6d 70 61 72 65 20 24 6e 65 77 69 6e 64 20  compare $newind 
120e0 3e 20 24 72 65 66 69 6e 64 5d 0a 20 20 20 20 64  > $refind].    d
120f0 65 73 74 72 6f 79 20 2e 74 66 0a 20 20 20 20 73  estroy .tf.    s
12100 65 74 20 72 65 73 0a 7d 20 7b 31 7d 0a 0a 2e 74  et res.} {1}...t
12110 20 63 6f 6e 66 69 67 75 72 65 20 2d 77 72 61 70   configure -wrap
12120 20 63 68 61 72 0a 2e 74 20 64 65 6c 65 74 65 20   char..t delete 
12130 31 2e 30 20 65 6e 64 0a 2e 74 20 69 6e 73 65 72  1.0 end..t inser
12140 74 20 69 6e 73 65 72 74 20 22 4c 69 6e 65 20 31  t insert "Line 1
12150 22 0a 66 6f 72 20 7b 73 65 74 20 69 20 32 7d 20  ".for {set i 2} 
12160 7b 24 69 20 3c 3d 20 32 30 30 7d 20 7b 69 6e 63  {$i <= 200} {inc
12170 72 20 69 7d 20 7b 0a 20 20 20 20 2e 74 20 69 6e  r i} {.    .t in
12180 73 65 72 74 20 65 6e 64 20 22 5c 6e 4c 69 6e 65  sert end "\nLine
12190 20 24 69 22 0a 7d 0a 2e 74 20 74 61 67 20 61 64   $i".}..t tag ad
121a0 64 20 62 69 67 20 31 30 30 2e 30 20 31 30 35 2e  d big 100.0 105.
121b0 30 0a 2e 74 20 69 6e 73 65 72 74 20 31 35 31 2e  0..t insert 151.
121c0 65 6e 64 20 7b 20 68 61 73 20 61 20 6c 6f 74 20  end { has a lot 
121d0 6f 66 20 65 78 74 72 61 20 74 65 78 74 2c 20 73  of extra text, s
121e0 6f 20 74 68 61 74 20 69 74 20 77 72 61 70 73 20  o that it wraps 
121f0 61 72 6f 75 6e 64 20 6f 6e 20 74 68 65 20 73 63  around on the sc
12200 72 65 65 6e 20 73 65 76 65 72 61 6c 20 74 69 6d  reen several tim
12210 65 73 20 6f 76 65 72 2e 7d 0a 2e 74 20 69 6e 73  es over.}..t ins
12220 65 72 74 20 31 35 33 2e 65 6e 64 20 7b 20 61 6c  ert 153.end { al
12230 73 6f 20 68 61 73 20 65 6e 6f 75 67 20 65 78 74  so has enoug ext
12240 72 61 20 74 65 78 74 20 74 6f 20 77 72 61 70 2e  ra text to wrap.
12250 7d 0a 75 70 64 61 74 65 20 3b 20 2e 74 20 73 79  }.update ; .t sy
12260 6e 63 3b 20 75 70 64 61 74 65 0a 74 65 73 74 20  nc; update.test 
12270 74 65 78 74 44 69 73 70 2d 31 36 2e 31 20 7b 54  textDisp-16.1 {T
12280 6b 54 65 78 74 59 76 69 65 77 43 6d 64 20 70 72  kTextYviewCmd pr
12290 6f 63 65 64 75 72 65 7d 20 2d 63 6f 6e 73 74 72  ocedure} -constr
122a0 61 69 6e 74 73 20 74 65 78 74 66 6f 6e 74 73 20  aints textfonts 
122b0 2d 62 6f 64 79 20 7b 0a 20 20 20 20 2e 74 20 79  -body {.    .t y
122c0 76 69 65 77 20 32 31 2e 30 0a 20 20 20 20 73 65  view 21.0.    se
122d0 74 20 78 20 5b 2e 74 20 79 76 69 65 77 5d 0a 20  t x [.t yview]. 
122e0 20 20 20 2e 74 20 79 76 69 65 77 20 31 2e 30 0a     .t yview 1.0.
122f0 20 20 20 20 6c 69 73 74 20 5b 65 78 70 72 20 7b      list [expr {
12300 69 6e 74 28 5b 6c 69 6e 64 65 78 20 24 78 20 30  int([lindex $x 0
12310 5d 2a 31 30 30 29 7d 5d 20 5b 65 78 70 72 20 7b  ]*100)}] [expr {
12320 69 6e 74 20 28 5b 6c 69 6e 64 65 78 20 24 78 20  int ([lindex $x 
12330 31 5d 20 2a 20 31 30 30 29 7d 5d 0a 7d 20 2d 72  1] * 100)}].} -r
12340 65 73 75 6c 74 20 7b 39 20 31 34 7d 0a 74 65 73  esult {9 14}.tes
12350 74 20 74 65 78 74 44 69 73 70 2d 31 36 2e 32 20  t textDisp-16.2 
12360 7b 54 6b 54 65 78 74 59 76 69 65 77 43 6d 64 20  {TkTextYviewCmd 
12370 70 72 6f 63 65 64 75 72 65 7d 20 7b 0a 20 20 20  procedure} {.   
12380 20 6c 69 73 74 20 5b 63 61 74 63 68 20 7b 2e 74   list [catch {.t
12390 20 79 76 69 65 77 20 32 20 33 7d 20 6d 73 67 5d   yview 2 3} msg]
123a0 20 24 6d 73 67 0a 7d 20 7b 31 20 7b 62 61 64 20   $msg.} {1 {bad 
123b0 6f 70 74 69 6f 6e 20 22 32 22 3a 20 6d 75 73 74  option "2": must
123c0 20 62 65 20 6d 6f 76 65 74 6f 20 6f 72 20 73 63   be moveto or sc
123d0 72 6f 6c 6c 7d 7d 0a 74 65 73 74 20 74 65 78 74  roll}}.test text
123e0 44 69 73 70 2d 31 36 2e 33 20 7b 54 6b 54 65 78  Disp-16.3 {TkTex
123f0 74 59 76 69 65 77 43 6d 64 20 70 72 6f 63 65 64  tYviewCmd proced
12400 75 72 65 7d 20 7b 0a 20 20 20 20 6c 69 73 74 20  ure} {.    list 
12410 5b 63 61 74 63 68 20 7b 2e 74 20 79 76 69 65 77  [catch {.t yview
12420 20 2d 70 69 63 6b 70 6c 61 63 65 7d 20 6d 73 67   -pickplace} msg
12430 5d 20 24 6d 73 67 0a 7d 20 7b 31 20 7b 77 72 6f  ] $msg.} {1 {wro
12440 6e 67 20 23 20 61 72 67 73 3a 20 73 68 6f 75 6c  ng # args: shoul
12450 64 20 62 65 20 22 2e 74 20 79 76 69 65 77 20 2d  d be ".t yview -
12460 70 69 63 6b 70 6c 61 63 65 20 6c 69 6e 65 4e 75  pickplace lineNu
12470 6d 7c 69 6e 64 65 78 22 7d 7d 0a 74 65 73 74 20  m|index"}}.test 
12480 74 65 78 74 44 69 73 70 2d 31 36 2e 34 20 7b 54  textDisp-16.4 {T
12490 6b 54 65 78 74 59 76 69 65 77 43 6d 64 20 70 72  kTextYviewCmd pr
124a0 6f 63 65 64 75 72 65 7d 20 7b 0a 20 20 20 20 6c  ocedure} {.    l
124b0 69 73 74 20 5b 63 61 74 63 68 20 7b 2e 74 20 79  ist [catch {.t y
124c0 76 69 65 77 20 2d 70 69 63 6b 70 6c 61 63 65 20  view -pickplace 
124d0 32 20 33 7d 20 6d 73 67 5d 20 24 6d 73 67 0a 7d  2 3} msg] $msg.}
124e0 20 7b 31 20 7b 77 72 6f 6e 67 20 23 20 61 72 67   {1 {wrong # arg
124f0 73 3a 20 73 68 6f 75 6c 64 20 62 65 20 22 2e 74  s: should be ".t
12500 20 79 76 69 65 77 20 2d 70 69 63 6b 70 6c 61 63   yview -pickplac
12510 65 20 6c 69 6e 65 4e 75 6d 7c 69 6e 64 65 78 22  e lineNum|index"
12520 7d 7d 0a 74 65 73 74 20 74 65 78 74 44 69 73 70  }}.test textDisp
12530 2d 31 36 2e 35 20 7b 54 6b 54 65 78 74 59 76 69  -16.5 {TkTextYvi
12540 65 77 43 6d 64 20 70 72 6f 63 65 64 75 72 65 7d  ewCmd procedure}
12550 20 7b 0a 20 20 20 20 6c 69 73 74 20 5b 63 61 74   {.    list [cat
12560 63 68 20 7b 2e 74 20 79 76 69 65 77 20 2d 62 6f  ch {.t yview -bo
12570 67 75 73 20 32 7d 20 6d 73 67 5d 20 24 6d 73 67  gus 2} msg] $msg
12580 0a 7d 20 7b 31 20 7b 62 61 64 20 6f 70 74 69 6f  .} {1 {bad optio
12590 6e 20 22 2d 62 6f 67 75 73 22 3a 20 6d 75 73 74  n "-bogus": must
125a0 20 62 65 20 6d 6f 76 65 74 6f 20 6f 72 20 73 63   be moveto or sc
125b0 72 6f 6c 6c 7d 7d 0a 74 65 73 74 20 74 65 78 74  roll}}.test text
125c0 44 69 73 70 2d 31 36 2e 36 20 7b 54 6b 54 65 78  Disp-16.6 {TkTex
125d0 74 59 76 69 65 77 43 6d 64 20 70 72 6f 63 65 64  tYviewCmd proced
125e0 75 72 65 2c 20 69 6e 74 65 67 65 72 20 70 6f 73  ure, integer pos
125f0 69 74 69 6f 6e 7d 20 7b 0a 20 20 20 20 2e 74 20  ition} {.    .t 
12600 79 76 69 65 77 20 31 30 30 2e 30 0a 20 20 20 20  yview 100.0.    
12610 75 70 64 61 74 65 0a 20 20 20 20 2e 74 20 79 76  update.    .t yv
12620 69 65 77 20 39 38 0a 20 20 20 20 2e 74 20 69 6e  iew 98.    .t in
12630 64 65 78 20 40 30 2c 30 0a 7d 20 7b 39 39 2e 30  dex @0,0.} {99.0
12640 7d 0a 74 65 73 74 20 74 65 78 74 44 69 73 70 2d  }.test textDisp-
12650 31 36 2e 37 20 7b 54 6b 54 65 78 74 59 76 69 65  16.7 {TkTextYvie
12660 77 43 6d 64 20 70 72 6f 63 65 64 75 72 65 7d 20  wCmd procedure} 
12670 7b 0a 20 20 20 20 2e 74 20 79 76 69 65 77 20 32  {.    .t yview 2
12680 2e 30 0a 20 20 20 20 2e 74 20 79 76 20 2d 70 69  .0.    .t yv -pi
12690 63 6b 70 6c 61 63 65 20 31 33 2e 30 0a 20 20 20  ckplace 13.0.   
126a0 20 2e 74 20 69 6e 64 65 78 20 40 30 2c 30 0a 7d   .t index @0,0.}
126b0 20 7b 34 2e 30 7d 0a 74 65 73 74 20 74 65 78 74   {4.0}.test text
126c0 44 69 73 70 2d 31 36 2e 38 20 7b 54 6b 54 65 78  Disp-16.8 {TkTex
126d0 74 59 76 69 65 77 43 6d 64 20 70 72 6f 63 65 64  tYviewCmd proced
126e0 75 72 65 7d 20 7b 0a 20 20 20 20 6c 69 73 74 20  ure} {.    list 
126f0 5b 63 61 74 63 68 20 7b 2e 74 20 79 76 69 65 77  [catch {.t yview
12700 20 62 61 64 5f 6d 61 72 6b 5f 6e 61 6d 65 7d 20   bad_mark_name} 
12710 6d 73 67 5d 20 24 6d 73 67 0a 7d 20 7b 31 20 7b  msg] $msg.} {1 {
12720 62 61 64 20 74 65 78 74 20 69 6e 64 65 78 20 22  bad text index "
12730 62 61 64 5f 6d 61 72 6b 5f 6e 61 6d 65 22 7d 7d  bad_mark_name"}}
12740 0a 74 65 73 74 20 74 65 78 74 44 69 73 70 2d 31  .test textDisp-1
12750 36 2e 39 20 7b 54 6b 54 65 78 74 59 76 69 65 77  6.9 {TkTextYview
12760 43 6d 64 20 70 72 6f 63 65 64 75 72 65 2c 20 22  Cmd procedure, "
12770 6d 6f 76 65 74 6f 22 20 6f 70 74 69 6f 6e 7d 20  moveto" option} 
12780 7b 0a 20 20 20 20 6c 69 73 74 20 5b 63 61 74 63  {.    list [catc
12790 68 20 7b 2e 74 20 79 76 69 65 77 20 6d 6f 76 65  h {.t yview move
127a0 74 6f 20 61 20 62 7d 20 6d 73 67 5d 20 24 6d 73  to a b} msg] $ms
127b0 67 0a 7d 20 7b 31 20 7b 77 72 6f 6e 67 20 23 20  g.} {1 {wrong # 
127c0 61 72 67 73 3a 20 73 68 6f 75 6c 64 20 62 65 20  args: should be 
127d0 22 2e 74 20 79 76 69 65 77 20 6d 6f 76 65 74 6f  ".t yview moveto
127e0 20 66 72 61 63 74 69 6f 6e 22 7d 7d 0a 74 65 73   fraction"}}.tes
127f0 74 20 74 65 78 74 44 69 73 70 2d 31 36 2e 31 30  t textDisp-16.10
12800 20 7b 54 6b 54 65 78 74 59 76 69 65 77 43 6d 64   {TkTextYviewCmd
12810 20 70 72 6f 63 65 64 75 72 65 2c 20 22 6d 6f 76   procedure, "mov
12820 65 74 6f 22 20 6f 70 74 69 6f 6e 7d 20 7b 0a 20  eto" option} {. 
12830 20 20 20 6c 69 73 74 20 5b 63 61 74 63 68 20 7b     list [catch {
12840 2e 74 20 79 76 69 65 77 20 6d 6f 76 65 74 6f 20  .t yview moveto 
12850 67 6f 72 70 7d 20 6d 73 67 5d 20 24 6d 73 67 0a  gorp} msg] $msg.
12860 7d 20 7b 31 20 7b 65 78 70 65 63 74 65 64 20 66  } {1 {expected f
12870 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e 74 20 6e 75  loating-point nu
12880 6d 62 65 72 20 62 75 74 20 67 6f 74 20 22 67 6f  mber but got "go
12890 72 70 22 7d 7d 0a 74 65 73 74 20 74 65 78 74 44  rp"}}.test textD
128a0 69 73 70 2d 31 36 2e 31 31 20 7b 54 6b 54 65 78  isp-16.11 {TkTex
128b0 74 59 76 69 65 77 43 6d 64 20 70 72 6f 63 65 64  tYviewCmd proced
128c0 75 72 65 2c 20 22 6d 6f 76 65 74 6f 22 20 6f 70  ure, "moveto" op
128d0 74 69 6f 6e 7d 20 2d 63 6f 6e 73 74 72 61 69 6e  tion} -constrain
128e0 74 73 20 74 65 78 74 66 6f 6e 74 73 20 2d 62 6f  ts textfonts -bo
128f0 64 79 20 7b 0a 20 20 20 20 2e 74 20 79 76 69 65  dy {.    .t yvie
12900 77 20 6d 6f 76 65 74 6f 20 30 2e 35 0a 20 20 20  w moveto 0.5.   
12910 20 2e 74 20 69 6e 64 65 78 20 40 30 2c 30 0a 7d   .t index @0,0.}
12920 20 2d 72 65 73 75 6c 74 20 7b 31 30 33 2e 30 7d   -result {103.0}
12930 0a 74 65 73 74 20 74 65 78 74 44 69 73 70 2d 31  .test textDisp-1
12940 36 2e 31 32 20 7b 54 6b 54 65 78 74 59 76 69 65  6.12 {TkTextYvie
12950 77 43 6d 64 20 70 72 6f 63 65 64 75 72 65 2c 20  wCmd procedure, 
12960 22 6d 6f 76 65 74 6f 22 20 6f 70 74 69 6f 6e 7d  "moveto" option}
12970 20 7b 0a 20 20 20 20 2e 74 20 79 76 69 65 77 20   {.    .t yview 
12980 6d 6f 76 65 74 6f 20 2d 31 0a 20 20 20 20 2e 74  moveto -1.    .t
12990 20 69 6e 64 65 78 20 40 30 2c 30 0a 7d 20 7b 31   index @0,0.} {1
129a0 2e 30 7d 0a 74 65 73 74 20 74 65 78 74 44 69 73  .0}.test textDis
129b0 70 2d 31 36 2e 31 33 20 7b 54 6b 54 65 78 74 59  p-16.13 {TkTextY
129c0 76 69 65 77 43 6d 64 20 70 72 6f 63 65 64 75 72  viewCmd procedur
129d0 65 2c 20 22 6d 6f 76 65 74 6f 22 20 6f 70 74 69  e, "moveto" opti
129e0 6f 6e 7d 20 7b 0a 20 20 20 20 2e 74 20 79 76 69  on} {.    .t yvi
129f0 65 77 20 6d 6f 76 65 74 6f 20 31 2e 31 0a 20 20  ew moveto 1.1.  
12a00 20 20 2e 74 20 69 6e 64 65 78 20 40 30 2c 30 0a    .t index @0,0.
12a10 7d 20 7b 31 39 31 2e 30 7d 0a 74 65 73 74 20 74  } {191.0}.test t
12a20 65 78 74 44 69 73 70 2d 31 36 2e 31 34 20 7b 54  extDisp-16.14 {T
12a30 6b 54 65 78 74 59 76 69 65 77 43 6d 64 20 70 72  kTextYviewCmd pr
12a40 6f 63 65 64 75 72 65 2c 20 22 6d 6f 76 65 74 6f  ocedure, "moveto
12a50 22 20 6f 70 74 69 6f 6e 7d 20 2d 63 6f 6e 73 74  " option} -const
12a60 72 61 69 6e 74 73 20 74 65 78 74 66 6f 6e 74 73  raints textfonts
12a70 20 2d 62 6f 64 79 20 7b 0a 20 20 20 20 2e 74 20   -body {.    .t 
12a80 79 76 69 65 77 20 6d 6f 76 65 74 6f 20 2e 37 35  yview moveto .75
12a90 0a 20 20 20 20 2e 74 20 69 6e 64 65 78 20 40 30  .    .t index @0
12aa0 2c 30 0a 7d 20 2d 72 65 73 75 6c 74 20 7b 31 35  ,0.} -result {15
12ab0 31 2e 36 30 7d 0a 74 65 73 74 20 74 65 78 74 44  1.60}.test textD
12ac0 69 73 70 2d 31 36 2e 31 35 20 7b 54 6b 54 65 78  isp-16.15 {TkTex
12ad0 74 59 76 69 65 77 43 6d 64 20 70 72 6f 63 65 64  tYviewCmd proced
12ae0 75 72 65 2c 20 22 6d 6f 76 65 74 6f 22 20 6f 70  ure, "moveto" op
12af0 74 69 6f 6e 7d 20 2d 63 6f 6e 73 74 72 61 69 6e  tion} -constrain
12b00 74 73 20 74 65 78 74 66 6f 6e 74 73 20 2d 62 6f  ts textfonts -bo
12b10 64 79 20 7b 0a 20 20 20 20 2e 74 20 79 76 69 65  dy {.    .t yvie
12b20 77 20 6d 6f 76 65 74 6f 20 2e 37 35 32 0a 20 20  w moveto .752.  
12b30 20 20 2e 74 20 69 6e 64 65 78 20 40 30 2c 30 0a    .t index @0,0.
12b40 7d 20 2d 72 65 73 75 6c 74 20 7b 31 35 31 2e 36  } -result {151.6
12b50 30 7d 0a 74 65 73 74 20 74 65 78 74 44 69 73 70  0}.test textDisp
12b60 2d 31 36 2e 31 36 20 7b 54 6b 54 65 78 74 59 76  -16.16 {TkTextYv
12b70 69 65 77 43 6d 64 20 70 72 6f 63 65 64 75 72 65  iewCmd procedure
12b80 2c 20 22 6d 6f 76 65 74 6f 22 20 6f 70 74 69 6f  , "moveto" optio
12b90 6e 7d 20 7b 74 65 78 74 66 6f 6e 74 73 7d 20 7b  n} {textfonts} {
12ba0 0a 20 20 20 20 73 65 74 20 63 6f 75 6e 74 20 5b  .    set count [
12bb0 65 78 70 72 20 7b 35 20 2a 20 24 62 69 67 48 65  expr {5 * $bigHe
12bc0 69 67 68 74 20 2b 20 31 35 30 20 2a 20 24 66 69  ight + 150 * $fi
12bd0 78 65 64 48 65 69 67 68 74 7d 5d 0a 20 20 20 20  xedHeight}].    
12be0 73 65 74 20 65 78 74 72 61 20 5b 65 78 70 72 20  set extra [expr 
12bf0 7b 30 2e 30 34 20 2a 20 64 6f 75 62 6c 65 28 24  {0.04 * double($
12c00 66 69 78 65 64 44 69 66 66 20 2a 20 31 35 30 29  fixedDiff * 150)
12c10 20 2f 20 64 6f 75 62 6c 65 28 24 63 6f 75 6e 74   / double($count
12c20 29 7d 5d 0a 20 20 20 20 2e 74 20 79 76 69 65 77  )}].    .t yview
12c30 20 6d 6f 76 65 74 6f 20 5b 65 78 70 72 20 7b 2e   moveto [expr {.
12c40 37 35 33 20 2d 20 24 65 78 74 72 61 7d 5d 0a 20  753 - $extra}]. 
12c50 20 20 20 2e 74 20 69 6e 64 65 78 20 40 30 2c 30     .t index @0,0
12c60 0a 7d 20 7b 31 35 31 2e 36 30 7d 0a 74 65 73 74  .} {151.60}.test
12c70 20 74 65 78 74 44 69 73 70 2d 31 36 2e 31 37 20   textDisp-16.17 
12c80 7b 54 6b 54 65 78 74 59 76 69 65 77 43 6d 64 20  {TkTextYviewCmd 
12c90 70 72 6f 63 65 64 75 72 65 2c 20 22 6d 6f 76 65  procedure, "move
12ca0 74 6f 22 20 6f 70 74 69 6f 6e 7d 20 2d 63 6f 6e  to" option} -con
12cb0 73 74 72 61 69 6e 74 73 20 74 65 78 74 66 6f 6e  straints textfon
12cc0 74 73 20 2d 62 6f 64 79 20 7b 0a 20 20 20 20 2e  ts -body {.    .
12cd0 74 20 79 76 69 65 77 20 6d 6f 76 65 74 6f 20 2e  t yview moveto .
12ce0 37 35 35 0a 20 20 20 20 2e 74 20 69 6e 64 65 78  755.    .t index
12cf0 20 40 30 2c 30 0a 7d 20 2d 72 65 73 75 6c 74 20   @0,0.} -result 
12d00 7b 31 35 31 2e 38 30 7d 0a 74 65 73 74 20 74 65  {151.80}.test te
12d10 78 74 44 69 73 70 2d 31 36 2e 31 38 20 7b 54 6b  xtDisp-16.18 {Tk
12d20 54 65 78 74 59 76 69 65 77 43 6d 64 20 70 72 6f  TextYviewCmd pro
12d30 63 65 64 75 72 65 2c 20 22 6d 6f 76 65 74 6f 22  cedure, "moveto"
12d40 20 72 6f 75 6e 64 6f 66 66 7d 20 7b 74 65 78 74   roundoff} {text
12d50 66 6f 6e 74 73 7d 20 7b 0a 20 20 20 20 63 61 74  fonts} {.    cat
12d60 63 68 20 7b 64 65 73 74 72 6f 79 20 2e 74 6f 70  ch {destroy .top
12d70 31 7d 0a 20 20 20 20 74 6f 70 6c 65 76 65 6c 20  1}.    toplevel 
12d80 2e 74 6f 70 31 0a 20 20 20 20 77 6d 20 67 65 6f  .top1.    wm geo
12d90 6d 65 74 72 79 20 2e 74 6f 70 31 20 2b 30 2b 30  metry .top1 +0+0
12da0 0a 20 20 20 20 74 65 78 74 20 2e 74 6f 70 31 2e  .    text .top1.
12db0 74 20 2d 68 65 69 67 68 74 20 33 20 2d 77 69 64  t -height 3 -wid
12dc0 74 68 20 34 20 2d 77 72 61 70 20 6e 6f 6e 65 20  th 4 -wrap none 
12dd0 2d 73 65 74 67 72 69 64 20 31 20 2d 70 61 64 78  -setgrid 1 -padx
12de0 20 36 20 5c 0a 09 2d 73 70 61 63 69 6e 67 33 20   6 \..-spacing3 
12df0 36 0a 20 20 20 20 70 61 63 6b 20 2e 74 6f 70 31  6.    pack .top1
12e00 2e 74 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20  .t.    update.  
12e10 20 20 2e 74 6f 70 31 2e 74 20 69 6e 73 65 72 74    .top1.t insert
12e20 20 65 6e 64 20 22 31 5c 6e 32 5c 6e 33 5c 6e 34   end "1\n2\n3\n4
12e30 5c 6e 35 5c 6e 36 22 0a 20 20 20 20 2e 74 6f 70  \n5\n6".    .top
12e40 31 2e 74 20 79 76 69 65 77 20 6d 6f 76 65 74 6f  1.t yview moveto
12e50 20 30 2e 33 33 33 33 0a 20 20 20 20 73 65 74 20   0.3333.    set 
12e60 72 65 73 75 6c 74 20 5b 2e 74 6f 70 31 2e 74 20  result [.top1.t 
12e70 79 76 69 65 77 5d 0a 20 20 20 20 64 65 73 74 72  yview].    destr
12e80 6f 79 20 2e 74 6f 70 31 0a 20 20 20 20 73 65 74  oy .top1.    set
12e90 20 72 65 73 75 6c 74 0a 7d 20 5b 6c 69 73 74 20   result.} [list 
12ea0 5b 65 78 70 72 20 7b 31 2e 30 2f 33 7d 5d 20 5b  [expr {1.0/3}] [
12eb0 65 78 70 72 20 7b 35 2e 30 2f 36 7d 5d 5d 0a 74  expr {5.0/6}]].t
12ec0 65 73 74 20 74 65 78 74 44 69 73 70 2d 31 36 2e  est textDisp-16.
12ed0 31 39 20 7b 54 6b 54 65 78 74 59 76 69 65 77 43  19 {TkTextYviewC
12ee0 6d 64 20 70 72 6f 63 65 64 75 72 65 2c 20 22 73  md procedure, "s
12ef0 63 72 6f 6c 6c 22 20 6f 70 74 69 6f 6e 7d 20 7b  croll" option} {
12f00 0a 20 20 20 20 6c 69 73 74 20 5b 63 61 74 63 68  .    list [catch
12f10 20 7b 2e 74 20 79 76 69 65 77 20 73 63 72 6f 6c   {.t yview scrol
12f20 6c 20 61 7d 20 6d 73 67 5d 20 24 6d 73 67 0a 7d  l a} msg] $msg.}
12f30 20 7b 31 20 7b 77 72 6f 6e 67 20 23 20 61 72 67   {1 {wrong # arg
12f40 73 3a 20 73 68 6f 75 6c 64 20 62 65 20 22 2e 74  s: should be ".t
12f50 20 79 76 69 65 77 20 73 63 72 6f 6c 6c 20 6e 75   yview scroll nu
12f60 6d 62 65 72 20 75 6e 69 74 73 7c 70 61 67 65 73  mber units|pages
12f70 7c 70 69 78 65 6c 73 22 7d 7d 0a 74 65 73 74 20  |pixels"}}.test 
12f80 74 65 78 74 44 69 73 70 2d 31 36 2e 32 30 20 7b  textDisp-16.20 {
12f90 54 6b 54 65 78 74 59 76 69 65 77 43 6d 64 20 70  TkTextYviewCmd p
12fa0 72 6f 63 65 64 75 72 65 2c 20 22 73 63 72 6f 6c  rocedure, "scrol
12fb0 6c 22 20 6f 70 74 69 6f 6e 7d 20 7b 0a 20 20 20  l" option} {.   
12fc0 20 6c 69 73 74 20 5b 63 61 74 63 68 20 7b 2e 74   list [catch {.t
12fd0 20 79 76 69 65 77 20 73 63 72 6f 6c 6c 20 61 20   yview scroll a 
12fe0 62 20 63 7d 20 6d 73 67 5d 20 24 6d 73 67 0a 7d  b c} msg] $msg.}
12ff0 20 7b 31 20 7b 77 72 6f 6e 67 20 23 20 61 72 67   {1 {wrong # arg
13000 73 3a 20 73 68 6f 75 6c 64 20 62 65 20 22 2e 74  s: should be ".t
13010 20 79 76 69 65 77 20 73 63 72 6f 6c 6c 20 6e 75   yview scroll nu
13020 6d 62 65 72 20 75 6e 69 74 73 7c 70 61 67 65 73  mber units|pages
13030 7c 70 69 78 65 6c 73 22 7d 7d 0a 74 65 73 74 20  |pixels"}}.test 
13040 74 65 78 74 44 69 73 70 2d 31 36 2e 32 31 20 7b  textDisp-16.21 {
13050 54 6b 54 65 78 74 59 76 69 65 77 43 6d 64 20 70  TkTextYviewCmd p
13060 72 6f 63 65 64 75 72 65 2c 20 22 73 63 72 6f 6c  rocedure, "scrol
13070 6c 22 20 6f 70 74 69 6f 6e 7d 20 7b 0a 20 20 20  l" option} {.   
13080 20 6c 69 73 74 20 5b 63 61 74 63 68 20 7b 2e 74   list [catch {.t
13090 20 79 76 69 65 77 20 73 63 72 6f 6c 6c 20 62 61   yview scroll ba
130a0 64 49 6e 74 20 62 6f 67 75 73 7d 20 6d 73 67 5d  dInt bogus} msg]
130b0 20 24 6d 73 67 0a 7d 20 7b 31 20 7b 62 61 64 20   $msg.} {1 {bad 
130c0 61 72 67 75 6d 65 6e 74 20 22 62 6f 67 75 73 22  argument "bogus"
130d0 3a 20 6d 75 73 74 20 62 65 20 75 6e 69 74 73 2c  : must be units,
130e0 20 70 61 67 65 73 2c 20 6f 72 20 70 69 78 65 6c   pages, or pixel
130f0 73 7d 7d 0a 74 65 73 74 20 74 65 78 74 44 69 73  s}}.test textDis
13100 70 2d 31 36 2e 32 31 2e 32 20 7b 54 6b 54 65 78  p-16.21.2 {TkTex
13110 74 59 76 69 65 77 43 6d 64 20 70 72 6f 63 65 64  tYviewCmd proced
13120 75 72 65 2c 20 22 73 63 72 6f 6c 6c 22 20 6f 70  ure, "scroll" op
13130 74 69 6f 6e 7d 20 7b 0a 20 20 20 20 6c 69 73 74  tion} {.    list
13140 20 5b 63 61 74 63 68 20 7b 2e 74 20 79 76 69 65   [catch {.t yvie
13150 77 20 73 63 72 6f 6c 6c 20 62 61 64 49 6e 74 20  w scroll badInt 
13160 75 6e 69 74 73 7d 20 6d 73 67 5d 20 24 6d 73 67  units} msg] $msg
13170 0a 7d 20 7b 31 20 7b 65 78 70 65 63 74 65 64 20  .} {1 {expected 
13180 69 6e 74 65 67 65 72 20 62 75 74 20 67 6f 74 20  integer but got 
13190 22 62 61 64 49 6e 74 22 7d 7d 0a 74 65 73 74 20  "badInt"}}.test 
131a0 74 65 78 74 44 69 73 70 2d 31 36 2e 32 32 20 7b  textDisp-16.22 {
131b0 54 6b 54 65 78 74 59 76 69 65 77 43 6d 64 20 70  TkTextYviewCmd p
131c0 72 6f 63 65 64 75 72 65 2c 20 22 73 63 72 6f 6c  rocedure, "scrol
131d0 6c 22 20 6f 70 74 69 6f 6e 2c 20 62 61 63 6b 20  l" option, back 
131e0 70 61 67 65 73 7d 20 7b 0a 20 20 20 20 2e 74 20  pages} {.    .t 
131f0 79 76 69 65 77 20 35 30 2e 30 0a 20 20 20 20 75  yview 50.0.    u
13200 70 64 61 74 65 0a 20 20 20 20 2e 74 20 79 76 69  pdate.    .t yvi
13210 65 77 20 73 63 72 6f 6c 6c 20 2d 31 20 70 61 67  ew scroll -1 pag
13220 65 73 0a 20 20 20 20 2e 74 20 69 6e 64 65 78 20  es.    .t index 
13230 40 30 2c 30 0a 7d 20 7b 34 32 2e 30 7d 0a 74 65  @0,0.} {42.0}.te
13240 73 74 20 74 65 78 74 44 69 73 70 2d 31 36 2e 32  st textDisp-16.2
13250 32 2e 31 20 7b 54 6b 54 65 78 74 59 76 69 65 77  2.1 {TkTextYview
13260 43 6d 64 20 70 72 6f 63 65 64 75 72 65 2c 20 22  Cmd procedure, "
13270 73 63 72 6f 6c 6c 22 20 6f 70 74 69 6f 6e 2c 20  scroll" option, 
13280 62 61 63 6b 20 70 61 67 65 73 7d 20 7b 0a 20 20  back pages} {.  
13290 20 20 6c 69 73 74 20 5b 63 61 74 63 68 20 7b 2e    list [catch {.
132a0 74 20 79 76 69 65 77 20 73 63 72 6f 6c 6c 20 2d  t yview scroll -
132b0 33 20 70 7d 20 72 65 73 5d 20 24 72 65 73 0a 7d  3 p} res] $res.}
132c0 20 7b 31 20 7b 61 6d 62 69 67 75 6f 75 73 20 61   {1 {ambiguous a
132d0 72 67 75 6d 65 6e 74 20 22 70 22 3a 20 6d 75 73  rgument "p": mus
132e0 74 20 62 65 20 75 6e 69 74 73 2c 20 70 61 67 65  t be units, page
132f0 73 2c 20 6f 72 20 70 69 78 65 6c 73 7d 7d 0a 74  s, or pixels}}.t
13300 65 73 74 20 74 65 78 74 44 69 73 70 2d 31 36 2e  est textDisp-16.
13310 32 33 20 7b 54 6b 54 65 78 74 59 76 69 65 77 43  23 {TkTextYviewC
13320 6d 64 20 70 72 6f 63 65 64 75 72 65 2c 20 22 73  md procedure, "s
13330 63 72 6f 6c 6c 22 20 6f 70 74 69 6f 6e 2c 20 62  croll" option, b
13340 61 63 6b 20 70 61 67 65 73 7d 20 7b 0a 20 20 20  ack pages} {.   
13350 20 2e 74 20 79 76 69 65 77 20 35 30 2e 30 0a 20   .t yview 50.0. 
13360 20 20 20 75 70 64 61 74 65 0a 20 20 20 20 2e 74     update.    .t
13370 20 79 76 69 65 77 20 73 63 72 6f 6c 6c 20 2d 33   yview scroll -3
13380 20 70 61 0a 20 20 20 20 2e 74 20 69 6e 64 65 78   pa.    .t index
13390 20 40 30 2c 30 0a 7d 20 7b 32 36 2e 30 7d 0a 74   @0,0.} {26.0}.t
133a0 65 73 74 20 74 65 78 74 44 69 73 70 2d 31 36 2e  est textDisp-16.
133b0 32 34 20 7b 54 6b 54 65 78 74 59 76 69 65 77 43  24 {TkTextYviewC
133c0 6d 64 20 70 72 6f 63 65 64 75 72 65 2c 20 22 73  md procedure, "s
133d0 63 72 6f 6c 6c 22 20 6f 70 74 69 6f 6e 2c 20 62  croll" option, b
133e0 61 63 6b 20 70 61 67 65 73 7d 20 7b 0a 20 20 20  ack pages} {.   
133f0 20 2e 74 20 79 76 69 65 77 20 35 2e 30 0a 20 20   .t yview 5.0.  
13400 20 20 75 70 64 61 74 65 0a 20 20 20 20 2e 74 20    update.    .t 
13410 79 76 69 65 77 20 73 63 72 6f 6c 6c 20 2d 33 20  yview scroll -3 
13420 70 61 0a 20 20 20 20 2e 74 20 69 6e 64 65 78 20  pa.    .t index 
13430 40 30 2c 30 0a 7d 20 7b 31 2e 30 7d 0a 74 65 73  @0,0.} {1.0}.tes
13440 74 20 74 65 78 74 44 69 73 70 2d 31 36 2e 32 35  t textDisp-16.25
13450 20 7b 54 6b 54 65 78 74 59 76 69 65 77 43 6d 64   {TkTextYviewCmd
13460 20 70 72 6f 63 65 64 75 72 65 2c 20 22 73 63 72   procedure, "scr
13470 6f 6c 6c 22 20 6f 70 74 69 6f 6e 2c 20 62 61 63  oll" option, bac
13480 6b 20 70 61 67 65 73 7d 20 2d 73 65 74 75 70 20  k pages} -setup 
13490 7b 0a 20 20 20 20 23 20 4f 6e 20 73 6f 6d 65 20  {.    # On some 
134a0 28 4c 69 6e 75 78 29 20 70 6c 61 74 66 6f 72 6d  (Linux) platform
134b0 73 2c 20 74 68 65 20 77 69 6e 64 6f 77 20 6d 61  s, the window ma
134c0 6e 61 67 65 72 20 70 72 65 76 65 6e 74 73 20 74  nager prevents t
134d0 68 65 20 77 69 6e 64 6f 77 20 68 65 69 67 68 74  he window height
134e0 0a 20 20 20 20 23 20 74 6f 20 62 65 20 72 65 64  .    # to be red
134f0 75 63 65 64 20 74 6f 20 61 73 20 73 6d 61 6c 6c  uced to as small
13500 20 61 73 20 77 68 61 74 20 68 61 70 70 65 6e 73   as what happens
13510 20 74 6f 20 62 65 20 6f 6e 65 20 6c 69 6e 65 20   to be one line 
13520 28 77 69 74 68 20 74 68 65 20 66 6f 6e 74 0a 20  (with the font. 
13530 20 20 20 23 20 73 69 7a 65 20 77 65 20 77 6f 75     # size we wou
13540 6c 64 20 6e 6f 72 6d 61 6c 6c 79 20 75 73 65 29  ld normally use)
13550 2e 0a 20 20 20 20 23 20 54 68 65 20 73 63 72 6f  ..    # The scro
13560 6c 6c 69 6e 67 20 61 6c 72 67 6f 72 69 74 68 6d  lling alrgorithm
13570 20 74 65 73 74 65 64 20 68 65 72 65 20 64 65 70   tested here dep
13580 65 6e 64 73 20 6f 6e 20 77 68 65 74 68 65 72 20  ends on whether 
13590 61 20 73 69 6e 67 6c 65 20 6c 69 6e 65 20 69 73  a single line is
135a0 0a 20 20 20 20 23 20 6d 6f 72 65 20 6f 72 20 6c  .    # more or l
135b0 65 73 73 20 74 68 61 6e 20 61 20 71 75 61 72 74  ess than a quart
135c0 65 72 20 6f 66 20 74 68 65 20 64 69 73 70 6c 61  er of the displa
135d0 79 2e 0a 20 20 20 20 23 20 54 68 65 20 74 65 73  y..    # The tes
135e0 74 20 69 73 20 70 72 65 76 65 6e 74 65 64 20 66  t is prevented f
135f0 72 6f 6d 20 65 72 72 6f 6e 65 6f 75 73 6c 79 20  rom erroneously 
13600 66 61 69 6c 69 6e 67 20 62 79 20 75 73 69 6e 67  failing by using
13610 20 61 20 6c 61 72 67 65 20 70 69 78 65 6c 20 73   a large pixel s
13620 69 7a 65 0a 20 20 20 20 23 20 66 6f 6e 74 2c 20  ize.    # font, 
13630 77 68 69 63 68 20 73 68 6f 75 6c 64 20 61 6c 77  which should alw
13640 61 79 73 20 62 65 20 74 61 6c 6c 65 72 20 74 68  ays be taller th
13650 61 6e 20 74 68 65 20 6d 69 6e 69 6d 75 6d 20 68  an the minimum h
13660 65 69 67 68 74 20 6f 66 20 74 68 65 20 77 69 6e  eight of the win
13670 64 6f 77 2c 0a 20 20 20 20 23 20 77 68 69 6c 65  dow,.    # while
13680 20 73 74 69 6c 6c 20 74 65 73 74 69 6e 67 20 77   still testing w
13690 68 61 74 20 77 65 20 77 61 6e 74 20 74 6f 20 74  hat we want to t
136a0 65 73 74 20 28 77 68 69 63 68 20 69 73 20 73 63  est (which is sc
136b0 72 6f 6c 6c 69 6e 67 20 75 70 20 31 20 70 61 67  rolling up 1 pag
136c0 65 0a 20 20 20 20 23 20 77 68 65 6e 20 74 68 65  e.    # when the
136d0 20 77 69 6e 64 6f 77 20 68 65 69 67 68 74 20 69   window height i
136e0 73 20 6a 75 73 74 20 31 20 6c 69 6e 65 20 74 61  s just 1 line ta
136f0 6c 6c 2e 0a 20 20 20 20 73 65 74 20 73 61 76 65  ll..    set save
13700 64 46 6f 6e 74 20 5b 2e 74 20 63 67 65 74 20 2d  dFont [.t cget -
13710 66 6f 6e 74 5d 0a 20 20 20 20 2e 74 20 63 6f 6e  font].    .t con
13720 66 69 67 75 72 65 20 2d 68 65 69 67 68 74 20 31  figure -height 1
13730 20 2d 66 6f 6e 74 20 24 62 69 67 46 6f 6e 74 0a   -font $bigFont.
13740 20 20 20 20 75 70 64 61 74 65 0a 7d 20 2d 62 6f      update.} -bo
13750 64 79 20 7b 0a 20 20 20 20 2e 74 20 79 76 69 65  dy {.    .t yvie
13760 77 20 35 30 2e 30 0a 20 20 20 20 75 70 64 61 74  w 50.0.    updat
13770 65 0a 20 20 20 20 2e 74 20 79 76 69 65 77 20 73  e.    .t yview s
13780 63 72 6f 6c 6c 20 2d 31 20 70 61 67 65 73 0a 20  croll -1 pages. 
13790 20 20 20 73 65 74 20 78 20 5b 2e 74 20 69 6e 64     set x [.t ind
137a0 65 78 20 40 30 2c 30 5d 0a 20 20 20 20 73 65 74  ex @0,0].    set
137b0 20 78 0a 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a   x.} -cleanup {.
137c0 20 20 20 20 2e 74 20 63 6f 6e 66 69 67 75 72 65      .t configure
137d0 20 2d 68 65 69 67 68 74 20 31 30 20 2d 66 6f 6e   -height 10 -fon
137e0 74 20 24 73 61 76 65 64 46 6f 6e 74 0a 20 20 20  t $savedFont.   
137f0 20 75 70 64 61 74 65 0a 7d 20 2d 72 65 73 75 6c   update.} -resul
13800 74 20 7b 34 39 2e 30 7d 0a 74 65 73 74 20 74 65  t {49.0}.test te
13810 78 74 44 69 73 70 2d 31 36 2e 32 36 20 7b 54 6b  xtDisp-16.26 {Tk
13820 54 65 78 74 59 76 69 65 77 43 6d 64 20 70 72 6f  TextYviewCmd pro
13830 63 65 64 75 72 65 2c 20 22 73 63 72 6f 6c 6c 22  cedure, "scroll"
13840 20 6f 70 74 69 6f 6e 2c 20 66 6f 72 77 61 72 64   option, forward
13850 20 70 61 67 65 73 7d 20 7b 0a 20 20 20 20 2e 74   pages} {.    .t
13860 20 79 76 69 65 77 20 35 30 2e 30 0a 20 20 20 20   yview 50.0.    
13870 75 70 64 61 74 65 0a 20 20 20 20 2e 74 20 79 76  update.    .t yv
13880 69 65 77 20 73 63 72 6f 6c 6c 20 31 20 70 61 67  iew scroll 1 pag
13890 65 73 0a 20 20 20 20 2e 74 20 69 6e 64 65 78 20  es.    .t index 
138a0 40 30 2c 30 0a 7d 20 7b 35 38 2e 30 7d 0a 74 65  @0,0.} {58.0}.te
138b0 73 74 20 74 65 78 74 44 69 73 70 2d 31 36 2e 32  st textDisp-16.2
138c0 37 20 7b 54 6b 54 65 78 74 59 76 69 65 77 43 6d  7 {TkTextYviewCm
138d0 64 20 70 72 6f 63 65 64 75 72 65 2c 20 22 73 63  d procedure, "sc
138e0 72 6f 6c 6c 22 20 6f 70 74 69 6f 6e 2c 20 66 6f  roll" option, fo
138f0 72 77 61 72 64 20 70 61 67 65 73 7d 20 7b 0a 20  rward pages} {. 
13900 20 20 20 2e 74 20 79 76 69 65 77 20 35 30 2e 30     .t yview 50.0
13910 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20 20 20  .    update.    
13920 2e 74 20 79 76 69 65 77 20 73 63 72 6f 6c 6c 20  .t yview scroll 
13930 32 20 70 61 67 65 73 0a 20 20 20 20 2e 74 20 69  2 pages.    .t i
13940 6e 64 65 78 20 40 30 2c 30 0a 7d 20 7b 36 36 2e  ndex @0,0.} {66.
13950 30 7d 0a 74 65 73 74 20 74 65 78 74 44 69 73 70  0}.test textDisp
13960 2d 31 36 2e 32 38 20 7b 54 6b 54 65 78 74 59 76  -16.28 {TkTextYv
13970 69 65 77 43 6d 64 20 70 72 6f 63 65 64 75 72 65  iewCmd procedure
13980 2c 20 22 73 63 72 6f 6c 6c 22 20 6f 70 74 69 6f  , "scroll" optio
13990 6e 2c 20 66 6f 72 77 61 72 64 20 70 61 67 65 73  n, forward pages
139a0 7d 20 7b 74 65 78 74 66 6f 6e 74 73 7d 20 7b 0a  } {textfonts} {.
139b0 20 20 20 20 2e 74 20 79 76 69 65 77 20 39 38 2e      .t yview 98.
139c0 30 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20 20  0.    update.   
139d0 20 2e 74 20 79 76 69 65 77 20 73 63 72 6f 6c 6c   .t yview scroll
139e0 20 31 20 70 61 67 65 0a 20 20 20 20 73 65 74 20   1 page.    set 
139f0 72 65 73 20 5b 65 78 70 72 20 69 6e 74 28 5b 2e  res [expr int([.
13a00 74 20 69 6e 64 65 78 20 40 30 2c 30 5d 29 5d 0a  t index @0,0])].
13a10 20 20 20 20 69 66 20 7b 24 66 69 78 65 64 44 69      if {$fixedDi
13a20 66 66 20 3e 20 31 7d 20 7b 0a 09 69 6e 63 72 20  ff > 1} {..incr 
13a30 72 65 73 20 2d 31 0a 20 20 20 20 7d 0a 20 20 20  res -1.    }.   
13a40 20 73 65 74 20 72 65 73 0a 7d 20 7b 31 30 32 7d   set res.} {102}
13a50 0a 74 65 73 74 20 74 65 78 74 44 69 73 70 2d 31  .test textDisp-1
13a60 36 2e 32 39 20 7b 54 6b 54 65 78 74 59 76 69 65  6.29 {TkTextYvie
13a70 77 43 6d 64 20 70 72 6f 63 65 64 75 72 65 2c 20  wCmd procedure, 
13a80 22 73 63 72 6f 6c 6c 22 20 6f 70 74 69 6f 6e 2c  "scroll" option,
13a90 20 66 6f 72 77 61 72 64 20 70 61 67 65 73 7d 20   forward pages} 
13aa0 7b 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69 67 75  {.    .t configu
13ab0 72 65 20 2d 68 65 69 67 68 74 20 31 0a 20 20 20  re -height 1.   
13ac0 20 75 70 64 61 74 65 0a 20 20 20 20 2e 74 20 79   update.    .t y
13ad0 76 69 65 77 20 35 30 2e 30 0a 20 20 20 20 75 70  view 50.0.    up
13ae0 64 61 74 65 0a 20 20 20 20 2e 74 20 79 76 69 65  date.    .t yvie
13af0 77 20 73 63 72 6f 6c 6c 20 31 20 70 61 67 65 73  w scroll 1 pages
13b00 0a 20 20 20 20 73 65 74 20 78 20 5b 2e 74 20 69  .    set x [.t i
13b10 6e 64 65 78 20 40 30 2c 30 5d 0a 20 20 20 20 2e  ndex @0,0].    .
13b20 74 20 63 6f 6e 66 69 67 75 72 65 20 2d 68 65 69  t configure -hei
13b30 67 68 74 20 31 30 0a 20 20 20 20 75 70 64 61 74  ght 10.    updat
13b40 65 0a 20 20 20 20 73 65 74 20 78 0a 7d 20 7b 35  e.    set x.} {5
13b50 31 2e 30 7d 0a 74 65 73 74 20 74 65 78 74 44 69  1.0}.test textDi
13b60 73 70 2d 31 36 2e 33 30 20 7b 54 6b 54 65 78 74  sp-16.30 {TkText
13b70 59 76 69 65 77 43 6d 64 20 70 72 6f 63 65 64 75  YviewCmd procedu
13b80 72 65 2c 20 22 73 63 72 6f 6c 6c 20 75 6e 69 74  re, "scroll unit
13b90 73 22 20 6f 70 74 69 6f 6e 7d 20 7b 0a 20 20 20  s" option} {.   
13ba0 20 2e 74 20 79 76 69 65 77 20 34 35 2e 30 0a 20   .t yview 45.0. 
13bb0 20 20 20 75 70 64 61 74 65 0a 20 20 20 20 2e 74     update.    .t
13bc0 20 79 76 69 65 77 20 73 63 72 6f 6c 6c 20 2d 33   yview scroll -3
13bd0 20 75 6e 69 74 73 0a 20 20 20 20 2e 74 20 69 6e   units.    .t in
13be0 64 65 78 20 40 30 2c 30 0a 7d 20 7b 34 32 2e 30  dex @0,0.} {42.0
13bf0 7d 0a 74 65 73 74 20 74 65 78 74 44 69 73 70 2d  }.test textDisp-
13c00 31 36 2e 33 31 20 7b 54 6b 54 65 78 74 59 76 69  16.31 {TkTextYvi
13c10 65 77 43 6d 64 20 70 72 6f 63 65 64 75 72 65 2c  ewCmd procedure,
13c20 20 22 73 63 72 6f 6c 6c 20 75 6e 69 74 73 22 20   "scroll units" 
13c30 6f 70 74 69 6f 6e 7d 20 7b 0a 20 20 20 20 2e 74  option} {.    .t
13c40 20 79 76 69 65 77 20 31 34 39 2e 30 0a 20 20 20   yview 149.0.   
13c50 20 75 70 64 61 74 65 0a 20 20 20 20 2e 74 20 79   update.    .t y
13c60 76 69 65 77 20 73 63 72 6f 6c 6c 20 34 20 75 6e  view scroll 4 un
13c70 69 74 73 0a 20 20 20 20 2e 74 20 69 6e 64 65 78  its.    .t index
13c80 20 40 30 2c 30 0a 7d 20 7b 31 35 31 2e 34 30 7d   @0,0.} {151.40}
13c90 0a 74 65 73 74 20 74 65 78 74 44 69 73 70 2d 31  .test textDisp-1
13ca0 36 2e 33 32 20 7b 54 6b 54 65 78 74 59 76 69 65  6.32 {TkTextYvie
13cb0 77 43 6d 64 20 70 72 6f 63 65 64 75 72 65 7d 20  wCmd procedure} 
13cc0 7b 0a 20 20 20 20 6c 69 73 74 20 5b 63 61 74 63  {.    list [catc
13cd0 68 20 7b 2e 74 20 79 76 69 65 77 20 73 63 72 6f  h {.t yview scro
13ce0 6c 6c 20 31 32 20 62 6f 67 6f 69 64 73 7d 20 6d  ll 12 bogoids} m
13cf0 73 67 5d 20 24 6d 73 67 0a 7d 20 7b 31 20 7b 62  sg] $msg.} {1 {b
13d00 61 64 20 61 72 67 75 6d 65 6e 74 20 22 62 6f 67  ad argument "bog
13d10 6f 69 64 73 22 3a 20 6d 75 73 74 20 62 65 20 75  oids": must be u
13d20 6e 69 74 73 2c 20 70 61 67 65 73 2c 20 6f 72 20  nits, pages, or 
13d30 70 69 78 65 6c 73 7d 7d 0a 74 65 73 74 20 74 65  pixels}}.test te
13d40 78 74 44 69 73 70 2d 31 36 2e 33 33 20 7b 54 6b  xtDisp-16.33 {Tk
13d50 54 65 78 74 59 76 69 65 77 43 6d 64 20 70 72 6f  TextYviewCmd pro
13d60 63 65 64 75 72 65 7d 20 7b 0a 20 20 20 20 6c 69  cedure} {.    li
13d70 73 74 20 5b 63 61 74 63 68 20 7b 2e 74 20 79 76  st [catch {.t yv
13d80 69 65 77 20 62 61 64 5f 61 72 67 20 31 20 32 7d  iew bad_arg 1 2}
13d90 20 6d 73 67 5d 20 24 6d 73 67 0a 7d 20 7b 31 20   msg] $msg.} {1 
13da0 7b 62 61 64 20 6f 70 74 69 6f 6e 20 22 62 61 64  {bad option "bad
13db0 5f 61 72 67 22 3a 20 6d 75 73 74 20 62 65 20 6d  _arg": must be m
13dc0 6f 76 65 74 6f 20 6f 72 20 73 63 72 6f 6c 6c 7d  oveto or scroll}
13dd0 7d 0a 74 65 73 74 20 74 65 78 74 44 69 73 70 2d  }.test textDisp-
13de0 31 36 2e 33 34 20 7b 54 6b 54 65 78 74 59 76 69  16.34 {TkTextYvi
13df0 65 77 43 6d 64 20 70 72 6f 63 65 64 75 72 65 7d  ewCmd procedure}
13e00 20 7b 0a 20 20 20 20 73 65 74 20 72 65 73 20 7b   {.    set res {
13e10 7d 0a 20 20 20 20 2e 74 20 79 76 69 65 77 20 31  }.    .t yview 1
13e20 2e 30 0a 20 20 20 20 6c 61 70 70 65 6e 64 20 72  .0.    lappend r
13e30 65 73 20 5b 66 6f 72 6d 61 74 20 25 2e 31 32 67  es [format %.12g
13e40 20 5b 65 78 70 72 20 7b 5b 6c 69 6e 64 65 78 20   [expr {[lindex 
13e50 5b 2e 74 20 79 76 69 65 77 5d 20 30 5d 0a 09 2a  [.t yview] 0]..*
13e60 20 5b 2e 74 20 63 6f 75 6e 74 20 2d 79 70 69 78   [.t count -ypix
13e70 65 6c 73 20 31 2e 30 20 65 6e 64 5d 7d 5d 5d 0a  els 1.0 end]}]].
13e80 20 20 20 20 2e 74 20 79 76 69 65 77 20 73 63 72      .t yview scr
13e90 6f 6c 6c 20 31 20 70 69 78 65 6c 73 0a 20 20 20  oll 1 pixels.   
13ea0 20 6c 61 70 70 65 6e 64 20 72 65 73 20 5b 66 6f   lappend res [fo
13eb0 72 6d 61 74 20 25 2e 31 32 67 20 5b 65 78 70 72  rmat %.12g [expr
13ec0 20 7b 5b 6c 69 6e 64 65 78 20 5b 2e 74 20 79 76   {[lindex [.t yv
13ed0 69 65 77 5d 20 30 5d 0a 09 2a 20 5b 2e 74 20 63  iew] 0]..* [.t c
13ee0 6f 75 6e 74 20 2d 79 70 69 78 65 6c 73 20 31 2e  ount -ypixels 1.
13ef0 30 20 65 6e 64 5d 7d 5d 5d 0a 20 20 20 20 2e 74  0 end]}]].    .t
13f00 20 79 76 69 65 77 20 73 63 72 6f 6c 6c 20 31 20   yview scroll 1 
13f10 70 69 78 65 6c 73 0a 20 20 20 20 6c 61 70 70 65  pixels.    lappe
13f20 6e 64 20 72 65 73 20 5b 66 6f 72 6d 61 74 20 25  nd res [format %
13f30 2e 31 32 67 20 5b 65 78 70 72 20 7b 5b 6c 69 6e  .12g [expr {[lin
13f40 64 65 78 20 5b 2e 74 20 79 76 69 65 77 5d 20 30  dex [.t yview] 0
13f50 5d 0a 09 2a 20 5b 2e 74 20 63 6f 75 6e 74 20 2d  ]..* [.t count -
13f60 79 70 69 78 65 6c 73 20 31 2e 30 20 65 6e 64 5d  ypixels 1.0 end]
13f70 7d 5d 5d 0a 20 20 20 20 2e 74 20 79 76 69 65 77  }]].    .t yview
13f80 20 73 63 72 6f 6c 6c 20 31 20 70 69 78 65 6c 73   scroll 1 pixels
13f90 0a 20 20 20 20 6c 61 70 70 65 6e 64 20 72 65 73  .    lappend res
13fa0 20 5b 66 6f 72 6d 61 74 20 25 2e 31 32 67 20 5b   [format %.12g [
13fb0 65 78 70 72 20 7b 5b 6c 69 6e 64 65 78 20 5b 2e  expr {[lindex [.
13fc0 74 20 79 76 69 65 77 5d 20 30 5d 0a 09 2a 20 5b  t yview] 0]..* [
13fd0 2e 74 20 63 6f 75 6e 74 20 2d 79 70 69 78 65 6c  .t count -ypixel
13fe0 73 20 31 2e 30 20 65 6e 64 5d 7d 5d 5d 0a 20 20  s 1.0 end]}]].  
13ff0 20 20 2e 74 20 79 76 69 65 77 20 73 63 72 6f 6c    .t yview scrol
14000 6c 20 31 20 70 69 78 65 6c 73 0a 20 20 20 20 6c  l 1 pixels.    l
14010 61 70 70 65 6e 64 20 72 65 73 20 5b 66 6f 72 6d  append res [form
14020 61 74 20 25 2e 31 32 67 20 5b 65 78 70 72 20 7b  at %.12g [expr {
14030 5b 6c 69 6e 64 65 78 20 5b 2e 74 20 79 76 69 65  [lindex [.t yvie
14040 77 5d 20 30 5d 0a 09 2a 20 5b 2e 74 20 63 6f 75  w] 0]..* [.t cou
14050 6e 74 20 2d 79 70 69 78 65 6c 73 20 31 2e 30 20  nt -ypixels 1.0 
14060 65 6e 64 5d 7d 5d 5d 0a 20 20 20 20 2e 74 20 79  end]}]].    .t y
14070 76 69 65 77 20 73 63 72 6f 6c 6c 20 31 20 70 69  view scroll 1 pi
14080 78 65 6c 73 0a 20 20 20 20 6c 61 70 70 65 6e 64  xels.    lappend
14090 20 72 65 73 20 5b 66 6f 72 6d 61 74 20 25 2e 31   res [format %.1
140a0 32 67 20 5b 65 78 70 72 20 7b 5b 6c 69 6e 64 65  2g [expr {[linde
140b0 78 20 5b 2e 74 20 79 76 69 65 77 5d 20 30 5d 0a  x [.t yview] 0].
140c0 09 2a 20 5b 2e 74 20 63 6f 75 6e 74 20 2d 79 70  .* [.t count -yp
140d0 69 78 65 6c 73 20 31 2e 30 20 65 6e 64 5d 7d 5d  ixels 1.0 end]}]
140e0 5d 0a 7d 20 7b 30 20 31 20 32 20 33 20 34 20 35  ].} {0 1 2 3 4 5
140f0 7d 0a 74 65 73 74 20 74 65 78 74 44 69 73 70 2d  }.test textDisp-
14100 31 36 2e 33 35 20 7b 54 6b 54 65 78 74 59 76 69  16.35 {TkTextYvi
14110 65 77 43 6d 64 20 70 72 6f 63 65 64 75 72 65 7d  ewCmd procedure}
14120 20 7b 0a 20 20 20 20 73 65 74 20 72 65 73 20 7b   {.    set res {
14130 7d 0a 20 20 20 20 2e 74 20 79 76 69 65 77 20 31  }.    .t yview 1
14140 2e 30 0a 20 20 20 20 6c 61 70 70 65 6e 64 20 72  .0.    lappend r
14150 65 73 20 5b 65 78 70 72 20 7b 72 6f 75 6e 64 28  es [expr {round(
14160 5b 6c 69 6e 64 65 78 20 5b 2e 74 20 79 76 69 65  [lindex [.t yvie
14170 77 5d 20 30 5d 20 2a 20 5b 2e 74 20 63 6f 75 6e  w] 0] * [.t coun
14180 74 20 2d 79 70 69 78 65 6c 73 20 31 2e 30 20 65  t -ypixels 1.0 e
14190 6e 64 5d 29 7d 5d 0a 20 20 20 20 2e 74 20 79 76  nd])}].    .t yv
141a0 69 65 77 20 73 63 72 6f 6c 6c 20 31 33 20 70 69  iew scroll 13 pi
141b0 78 65 6c 73 0a 20 20 20 20 6c 61 70 70 65 6e 64  xels.    lappend
141c0 20 72 65 73 20 5b 65 78 70 72 20 7b 72 6f 75 6e   res [expr {roun
141d0 64 28 5b 6c 69 6e 64 65 78 20 5b 2e 74 20 79 76  d([lindex [.t yv
141e0 69 65 77 5d 20 30 5d 20 2a 20 5b 2e 74 20 63 6f  iew] 0] * [.t co
141f0 75 6e 74 20 2d 79 70 69 78 65 6c 73 20 31 2e 30  unt -ypixels 1.0
14200 20 65 6e 64 5d 29 7d 5d 0a 20 20 20 20 2e 74 20   end])}].    .t 
14210 79 76 69 65 77 20 73 63 72 6f 6c 6c 20 2d 34 20  yview scroll -4 
14220 70 69 78 65 6c 73 0a 20 20 20 20 6c 61 70 70 65  pixels.    lappe
14230 6e 64 20 72 65 73 20 5b 65 78 70 72 20 7b 72 6f  nd res [expr {ro
14240 75 6e 64 28 5b 6c 69 6e 64 65 78 20 5b 2e 74 20  und([lindex [.t 
14250 79 76 69 65 77 5d 20 30 5d 20 2a 20 5b 2e 74 20  yview] 0] * [.t 
14260 63 6f 75 6e 74 20 2d 79 70 69 78 65 6c 73 20 31  count -ypixels 1
14270 2e 30 20 65 6e 64 5d 29 7d 5d 0a 20 20 20 20 2e  .0 end])}].    .
14280 74 20 79 76 69 65 77 20 73 63 72 6f 6c 6c 20 2d  t yview scroll -
14290 39 20 70 69 78 65 6c 73 0a 20 20 20 20 6c 61 70  9 pixels.    lap
142a0 70 65 6e 64 20 72 65 73 20 5b 65 78 70 72 20 7b  pend res [expr {
142b0 72 6f 75 6e 64 28 5b 6c 69 6e 64 65 78 20 5b 2e  round([lindex [.
142c0 74 20 79 76 69 65 77 5d 20 30 5d 20 2a 20 5b 2e  t yview] 0] * [.
142d0 74 20 63 6f 75 6e 74 20 2d 79 70 69 78 65 6c 73  t count -ypixels
142e0 20 31 2e 30 20 65 6e 64 5d 29 7d 5d 0a 7d 20 7b   1.0 end])}].} {
142f0 30 20 31 33 20 39 20 30 7d 0a 74 65 73 74 20 74  0 13 9 0}.test t
14300 65 78 74 44 69 73 70 2d 31 36 2e 33 36 20 7b 54  extDisp-16.36 {T
14310 6b 54 65 78 74 59 76 69 65 77 43 6d 64 20 70 72  kTextYviewCmd pr
14320 6f 63 65 64 75 72 65 7d 20 7b 0a 20 20 20 20 73  ocedure} {.    s
14330 65 74 20 72 65 73 20 7b 7d 0a 20 20 20 20 2e 74  et res {}.    .t
14340 20 79 76 69 65 77 20 31 2e 30 0a 20 20 20 20 2e   yview 1.0.    .
14350 74 20 79 76 69 65 77 20 73 63 72 6f 6c 6c 20 35  t yview scroll 5
14360 20 70 69 78 65 6c 73 0a 20 20 20 20 2e 74 20 79   pixels.    .t y
14370 76 69 65 77 20 73 63 72 6f 6c 6c 20 2d 31 20 70  view scroll -1 p
14380 61 67 65 73 0a 20 20 20 20 6c 61 70 70 65 6e 64  ages.    lappend
14390 20 72 65 73 20 5b 65 78 70 72 20 7b 5b 6c 69 6e   res [expr {[lin
143a0 64 65 78 20 5b 2e 74 20 79 76 69 65 77 5d 20 30  dex [.t yview] 0
143b0 5d 20 2a 20 5b 2e 74 20 63 6f 75 6e 74 20 2d 79  ] * [.t count -y
143c0 70 69 78 65 6c 73 20 31 2e 30 20 65 6e 64 5d 7d  pixels 1.0 end]}
143d0 5d 0a 20 20 20 20 2e 74 20 79 76 69 65 77 20 73  ].    .t yview s
143e0 63 72 6f 6c 6c 20 35 20 70 69 78 65 6c 73 0a 20  croll 5 pixels. 
143f0 20 20 20 2e 74 20 79 76 69 65 77 20 73 63 72 6f     .t yview scro
14400 6c 6c 20 2d 31 20 75 6e 69 74 73 0a 20 20 20 20  ll -1 units.    
14410 6c 61 70 70 65 6e 64 20 72 65 73 20 5b 65 78 70  lappend res [exp
14420 72 20 7b 5b 6c 69 6e 64 65 78 20 5b 2e 74 20 79  r {[lindex [.t y
14430 76 69 65 77 5d 20 30 5d 20 2a 20 5b 2e 74 20 63  view] 0] * [.t c
14440 6f 75 6e 74 20 2d 79 70 69 78 65 6c 73 20 31 2e  ount -ypixels 1.
14450 30 20 65 6e 64 5d 7d 5d 0a 7d 20 7b 30 2e 30 20  0 end]}].} {0.0 
14460 30 2e 30 7d 0a 74 65 73 74 20 74 65 78 74 44 69  0.0}.test textDi
14470 73 70 2d 31 36 2e 33 37 20 7b 54 6b 54 65 78 74  sp-16.37 {TkText
14480 59 76 69 65 77 43 6d 64 20 70 72 6f 63 65 64 75  YviewCmd procedu
14490 72 65 7d 20 7b 0a 20 20 20 20 6c 69 73 74 20 5b  re} {.    list [
144a0 63 61 74 63 68 20 7b 2e 74 20 79 76 69 65 77 20  catch {.t yview 
144b0 73 63 72 6f 6c 6c 20 31 2e 33 20 70 69 78 65 6c  scroll 1.3 pixel
144c0 73 7d 20 6d 73 67 5d 20 24 6d 73 67 0a 7d 20 7b  s} msg] $msg.} {
144d0 30 20 7b 7d 7d 0a 74 65 73 74 20 74 65 78 74 44  0 {}}.test textD
144e0 69 73 70 2d 31 36 2e 33 38 20 7b 54 6b 54 65 78  isp-16.38 {TkTex
144f0 74 59 76 69 65 77 43 6d 64 20 70 72 6f 63 65 64  tYviewCmd proced
14500 75 72 65 7d 20 7b 0a 20 20 20 20 6c 69 73 74 20  ure} {.    list 
14510 5b 63 61 74 63 68 20 7b 2e 74 20 79 76 69 65 77  [catch {.t yview
14520 20 73 63 72 6f 6c 6c 20 31 2e 33 62 6c 61 68 20   scroll 1.3blah 
14530 70 69 78 65 6c 73 7d 20 6d 73 67 5d 20 24 6d 73  pixels} msg] $ms
14540 67 0a 7d 20 7b 31 20 7b 62 61 64 20 73 63 72 65  g.} {1 {bad scre
14550 65 6e 20 64 69 73 74 61 6e 63 65 20 22 31 2e 33  en distance "1.3
14560 62 6c 61 68 22 7d 7d 0a 74 65 73 74 20 74 65 78  blah"}}.test tex
14570 74 44 69 73 70 2d 31 36 2e 33 39 20 7b 54 6b 54  tDisp-16.39 {TkT
14580 65 78 74 59 76 69 65 77 43 6d 64 20 70 72 6f 63  extYviewCmd proc
14590 65 64 75 72 65 7d 20 7b 0a 20 20 20 20 6c 69 73  edure} {.    lis
145a0 74 20 5b 63 61 74 63 68 20 7b 2e 74 20 79 76 69  t [catch {.t yvi
145b0 65 77 20 73 63 72 6f 6c 6c 20 31 2e 33 69 20 70  ew scroll 1.3i p
145c0 69 78 65 6c 73 7d 20 6d 73 67 5d 20 24 6d 73 67  ixels} msg] $msg
145d0 0a 7d 20 7b 30 20 7b 7d 7d 0a 74 65 73 74 20 74  .} {0 {}}.test t
145e0 65 78 74 44 69 73 70 2d 31 36 2e 34 30 20 7b 74  extDisp-16.40 {t
145f0 65 78 74 20 63 6f 75 6e 74 20 2d 78 70 69 78 65  ext count -xpixe
14600 6c 73 7d 20 7b 0a 20 20 20 20 73 65 74 20 72 65  ls} {.    set re
14610 73 20 7b 7d 0a 20 20 20 20 6c 61 70 70 65 6e 64  s {}.    lappend
14620 20 72 65 73 20 5b 2e 74 20 63 6f 75 6e 74 20 2d   res [.t count -
14630 78 70 69 78 65 6c 73 20 31 2e 30 20 31 2e 35 5d  xpixels 1.0 1.5]
14640 20 5c 0a 20 20 20 20 20 20 5b 2e 74 20 63 6f 75   \.      [.t cou
14650 6e 74 20 2d 78 70 69 78 65 6c 73 20 31 2e 35 20  nt -xpixels 1.5 
14660 31 2e 30 5d 20 5c 0a 20 20 20 20 20 20 5b 2e 74  1.0] \.      [.t
14670 20 63 6f 75 6e 74 20 2d 78 70 69 78 65 6c 73 20   count -xpixels 
14680 31 2e 30 20 31 33 2e 30 5d 20 5c 0a 20 20 20 20  1.0 13.0] \.    
14690 20 20 5b 2e 74 20 63 6f 75 6e 74 20 2d 78 70 69    [.t count -xpi
146a0 78 65 6c 73 20 31 2e 30 20 22 31 2e 30 20 64 69  xels 1.0 "1.0 di
146b0 73 70 6c 61 79 6c 69 6e 65 65 6e 64 22 5d 20 5c  splaylineend"] \
146c0 0a 20 20 20 20 20 20 5b 2e 74 20 63 6f 75 6e 74  .      [.t count
146d0 20 2d 78 70 69 78 65 6c 73 20 31 2e 30 20 22 31   -xpixels 1.0 "1
146e0 2e 30 20 6c 69 6e 65 65 6e 64 22 5d 20 5c 0a 20  .0 lineend"] \. 
146f0 20 20 20 20 20 5b 2e 74 20 63 6f 75 6e 74 20 2d       [.t count -
14700 78 70 69 78 65 6c 73 20 31 2e 30 20 22 31 2e 30  xpixels 1.0 "1.0
14710 20 64 69 73 70 6c 61 79 6c 69 6e 65 65 6e 64 22   displaylineend"
14720 5d 20 5c 0a 20 20 20 20 20 20 5b 2e 74 20 63 6f  ] \.      [.t co
14730 75 6e 74 20 2d 78 70 69 78 65 6c 73 20 31 2e 30  unt -xpixels 1.0
14740 20 65 6e 64 5d 0a 7d 20 7b 33 35 20 2d 33 35 20   end].} {35 -35 
14750 30 20 34 32 20 34 32 20 34 32 20 30 7d 0a 74 65  0 42 42 42 0}.te
14760 73 74 20 74 65 78 74 44 69 73 70 2d 31 36 2e 34  st textDisp-16.4
14770 31 20 7b 74 65 78 74 20 63 6f 75 6e 74 20 2d 78  1 {text count -x
14780 70 69 78 65 6c 73 20 77 69 74 68 20 69 6e 64 69  pixels with indi
14790 63 65 73 20 69 6e 20 65 6c 69 64 65 64 20 6c 69  ces in elided li
147a0 6e 65 73 7d 20 7b 0a 20 20 20 20 73 65 74 20 72  nes} {.    set r
147b0 65 73 20 7b 7d 0a 20 20 20 20 2e 74 20 64 65 6c  es {}.    .t del
147c0 65 74 65 20 31 2e 30 20 65 6e 64 0a 20 20 20 20  ete 1.0 end.    
147d0 66 6f 72 20 7b 73 65 74 20 69 20 31 7d 20 7b 24  for {set i 1} {$
147e0 69 20 3c 20 34 30 7d 20 7b 69 6e 63 72 20 69 7d  i < 40} {incr i}
147f0 20 7b 0a 20 20 20 20 20 20 20 20 2e 74 20 69 6e   {.        .t in
14800 73 65 72 74 20 65 6e 64 20 5b 73 74 72 69 6e 67  sert end [string
14810 20 72 65 70 65 61 74 20 22 4c 69 6e 65 20 24 69   repeat "Line $i
14820 22 20 32 30 5d 0a 20 20 20 20 20 20 20 20 2e 74  " 20].        .t
14830 20 69 6e 73 65 72 74 20 65 6e 64 20 22 5c 6e 22   insert end "\n"
14840 0a 20 20 20 20 7d 0a 20 20 20 20 2e 74 20 63 6f  .    }.    .t co
14850 6e 66 69 67 75 72 65 20 2d 77 72 61 70 20 6e 6f  nfigure -wrap no
14860 6e 65 0a 20 20 20 20 2e 74 20 74 61 67 20 61 64  ne.    .t tag ad
14870 64 20 68 69 64 64 65 6e 20 35 2e 31 35 20 32 30  d hidden 5.15 20
14880 2e 31 35 0a 20 20 20 20 2e 74 20 74 61 67 20 63  .15.    .t tag c
14890 6f 6e 66 69 67 75 72 65 20 68 69 64 64 65 6e 20  onfigure hidden 
148a0 2d 65 6c 69 64 65 20 74 72 75 65 0a 20 20 20 20  -elide true.    
148b0 6c 61 70 70 65 6e 64 20 72 65 73 20 5b 2e 74 20  lappend res [.t 
148c0 63 6f 75 6e 74 20 2d 78 70 69 78 65 6c 73 20 35  count -xpixels 5
148d0 2e 31 35 20 36 2e 30 5d 20 5c 0a 20 20 20 20 20  .15 6.0] \.     
148e0 20 5b 2e 74 20 63 6f 75 6e 74 20 2d 78 70 69 78   [.t count -xpix
148f0 65 6c 73 20 35 2e 31 35 20 36 2e 31 5d 20 5c 0a  els 5.15 6.1] \.
14900 20 20 20 20 20 20 5b 2e 74 20 63 6f 75 6e 74 20        [.t count 
14910 2d 78 70 69 78 65 6c 73 20 36 2e 30 20 36 2e 31  -xpixels 6.0 6.1
14920 5d 20 5c 0a 20 20 20 20 20 20 5b 2e 74 20 63 6f  ] \.      [.t co
14930 75 6e 74 20 2d 78 70 69 78 65 6c 73 20 36 2e 31  unt -xpixels 6.1
14940 20 36 2e 32 5d 20 5c 0a 20 20 20 20 20 20 5b 2e   6.2] \.      [.
14950 74 20 63 6f 75 6e 74 20 2d 78 70 69 78 65 6c 73  t count -xpixels
14960 20 36 2e 31 20 36 2e 30 5d 20 5c 0a 20 20 20 20   6.1 6.0] \.    
14970 20 20 5b 2e 74 20 63 6f 75 6e 74 20 2d 78 70 69    [.t count -xpi
14980 78 65 6c 73 20 36 2e 30 20 37 2e 30 5d 20 5c 0a  xels 6.0 7.0] \.
14990 20 20 20 20 20 20 5b 2e 74 20 63 6f 75 6e 74 20        [.t count 
149a0 2d 78 70 69 78 65 6c 73 20 36 2e 31 20 37 2e 31  -xpixels 6.1 7.1
149b0 5d 20 5c 0a 20 20 20 20 20 20 5b 2e 74 20 63 6f  ] \.      [.t co
149c0 75 6e 74 20 2d 78 70 69 78 65 6c 73 20 31 35 2e  unt -xpixels 15.
149d0 30 20 32 30 2e 31 35 5d 20 5c 0a 20 20 20 20 20  0 20.15] \.     
149e0 20 5b 2e 74 20 63 6f 75 6e 74 20 2d 78 70 69 78   [.t count -xpix
149f0 65 6c 73 20 32 30 2e 31 35 20 32 30 2e 31 36 5d  els 20.15 20.16]
14a00 20 5c 0a 20 20 20 20 20 20 5b 2e 74 20 63 6f 75   \.      [.t cou
14a10 6e 74 20 2d 78 70 69 78 65 6c 73 20 32 30 2e 31  nt -xpixels 20.1
14a20 36 20 32 30 2e 31 35 5d 0a 20 20 20 20 2e 74 20  6 20.15].    .t 
14a30 74 61 67 20 72 65 6d 6f 76 65 20 68 69 64 64 65  tag remove hidde
14a40 6e 20 32 30 2e 30 20 32 30 2e 31 35 0a 20 20 20  n 20.0 20.15.   
14a50 20 6c 61 70 70 65 6e 64 20 72 65 73 20 5b 65 78   lappend res [ex
14a60 70 72 20 7b 5b 2e 74 20 63 6f 75 6e 74 20 2d 78  pr {[.t count -x
14a70 70 69 78 65 6c 73 20 35 2e 30 20 32 30 2e 30 5d  pixels 5.0 20.0]
14a80 20 21 3d 20 30 7d 5d 0a 7d 20 5b 6c 69 73 74 20   != 0}].} [list 
14a90 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20  0 0 0 0 0 0 0 0 
14aa0 24 66 69 78 65 64 57 69 64 74 68 20 2d 24 66 69  $fixedWidth -$fi
14ab0 78 65 64 57 69 64 74 68 20 31 5d 0a 74 65 73 74  xedWidth 1].test
14ac0 20 74 65 78 74 44 69 73 70 2d 31 36 2e 34 32 20   textDisp-16.42 
14ad0 7b 54 6b 54 65 78 74 59 76 69 65 77 43 6d 64 20  {TkTextYviewCmd 
14ae0 70 72 6f 63 65 64 75 72 65 20 77 69 74 68 20 69  procedure with i
14af0 6e 64 69 63 65 73 20 69 6e 20 65 6c 69 64 65 64  ndices in elided
14b00 20 6c 69 6e 65 73 7d 20 7b 0a 20 20 20 20 2e 74   lines} {.    .t
14b10 20 63 6f 6e 66 69 67 75 72 65 20 2d 77 72 61 70   configure -wrap
14b20 20 6e 6f 6e 65 0a 20 20 20 20 2e 74 20 64 65 6c   none.    .t del
14b30 65 74 65 20 31 2e 30 20 65 6e 64 0a 20 20 20 20  ete 1.0 end.    
14b40 66 6f 72 20 7b 73 65 74 20 69 20 31 7d 20 7b 24  for {set i 1} {$
14b50 69 20 3c 20 31 30 30 7d 20 7b 69 6e 63 72 20 69  i < 100} {incr i
14b60 7d 20 7b 0a 20 20 20 20 20 20 20 20 2e 74 20 69  } {.        .t i
14b70 6e 73 65 72 74 20 65 6e 64 20 5b 73 74 72 69 6e  nsert end [strin
14b80 67 20 72 65 70 65 61 74 20 22 4c 69 6e 65 20 24  g repeat "Line $
14b90 69 22 20 32 30 5d 0a 20 20 20 20 20 20 20 20 2e  i" 20].        .
14ba0 74 20 69 6e 73 65 72 74 20 65 6e 64 20 22 5c 6e  t insert end "\n
14bb0 22 0a 20 20 20 20 7d 0a 20 20 20 20 2e 74 20 74  ".    }.    .t t
14bc0 61 67 20 61 64 64 20 68 69 64 64 65 6e 20 35 2e  ag add hidden 5.
14bd0 31 35 20 32 30 2e 31 35 0a 20 20 20 20 2e 74 20  15 20.15.    .t 
14be0 74 61 67 20 63 6f 6e 66 69 67 75 72 65 20 68 69  tag configure hi
14bf0 64 64 65 6e 20 2d 65 6c 69 64 65 20 74 72 75 65  dden -elide true
14c00 0a 20 20 20 20 2e 74 20 79 76 69 65 77 20 33 35  .    .t yview 35
14c10 2e 30 0a 20 20 20 20 2e 74 20 79 76 69 65 77 20  .0.    .t yview 
14c20 73 63 72 6f 6c 6c 20 5b 65 78 70 72 20 7b 2d 20  scroll [expr {- 
14c30 31 35 20 2a 20 24 66 69 78 65 64 48 65 69 67 68  15 * $fixedHeigh
14c40 74 7d 5d 20 70 69 78 65 6c 73 0a 20 20 20 20 75  t}] pixels.    u
14c50 70 64 61 74 65 0a 20 20 20 20 2e 74 20 69 6e 64  pdate.    .t ind
14c60 65 78 20 40 30 2c 30 0a 7d 20 7b 35 2e 30 7d 0a  ex @0,0.} {5.0}.
14c70 74 65 73 74 20 74 65 78 74 44 69 73 70 2d 31 36  test textDisp-16
14c80 2e 34 33 20 7b 54 6b 54 65 78 74 59 76 69 65 77  .43 {TkTextYview
14c90 43 6d 64 20 70 72 6f 63 65 64 75 72 65 20 77 69  Cmd procedure wi
14ca0 74 68 20 69 6e 64 69 63 65 73 20 69 6e 20 65 6c  th indices in el
14cb0 69 64 65 64 20 6c 69 6e 65 73 7d 20 7b 0a 20 20  ided lines} {.  
14cc0 20 20 2e 74 20 63 6f 6e 66 69 67 75 72 65 20 2d    .t configure -
14cd0 77 72 61 70 20 6e 6f 6e 65 0a 20 20 20 20 2e 74  wrap none.    .t
14ce0 20 64 65 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a   delete 1.0 end.
14cf0 20 20 20 20 66 6f 72 20 7b 73 65 74 20 69 20 31      for {set i 1
14d00 7d 20 7b 24 69 20 3c 20 31 30 30 7d 20 7b 69 6e  } {$i < 100} {in
14d10 63 72 20 69 7d 20 7b 0a 20 20 20 20 20 20 20 20  cr i} {.        
14d20 2e 74 20 69 6e 73 65 72 74 20 65 6e 64 20 5b 73  .t insert end [s
14d30 74 72 69 6e 67 20 72 65 70 65 61 74 20 22 4c 69  tring repeat "Li
14d40 6e 65 20 24 69 22 20 32 30 5d 0a 20 20 20 20 20  ne $i" 20].     
14d50 20 20 20 2e 74 20 69 6e 73 65 72 74 20 65 6e 64     .t insert end
14d60 20 22 5c 6e 22 0a 20 20 20 20 7d 0a 20 20 20 20   "\n".    }.    
14d70 2e 74 20 74 61 67 20 61 64 64 20 68 69 64 64 65  .t tag add hidde
14d80 6e 20 35 2e 31 35 20 32 30 2e 31 35 0a 20 20 20  n 5.15 20.15.   
14d90 20 2e 74 20 74 61 67 20 63 6f 6e 66 69 67 75 72   .t tag configur
14da0 65 20 68 69 64 64 65 6e 20 2d 65 6c 69 64 65 20  e hidden -elide 
14db0 74 72 75 65 0a 20 20 20 20 2e 74 20 79 76 69 65  true.    .t yvie
14dc0 77 20 33 35 2e 30 0a 20 20 20 20 2e 74 20 79 76  w 35.0.    .t yv
14dd0 69 65 77 20 73 63 72 6f 6c 6c 20 2d 31 35 20 75  iew scroll -15 u
14de0 6e 69 74 73 0a 20 20 20 20 75 70 64 61 74 65 0a  nits.    update.
14df0 20 20 20 20 2e 74 20 69 6e 64 65 78 20 40 30 2c      .t index @0,
14e00 30 0a 7d 20 7b 35 2e 30 7d 0a 74 65 73 74 20 74  0.} {5.0}.test t
14e10 65 78 74 44 69 73 70 2d 31 36 2e 34 34 20 7b 54  extDisp-16.44 {T
14e20 6b 54 65 78 74 59 76 69 65 77 43 6d 64 20 70 72  kTextYviewCmd pr
14e30 6f 63 65 64 75 72 65 2c 20 73 63 72 6f 6c 6c 20  ocedure, scroll 
14e40 64 6f 77 6e 2c 20 77 69 74 68 20 65 6c 69 64 65  down, with elide
14e50 64 20 6c 69 6e 65 73 7d 20 7b 0a 20 20 20 20 2e  d lines} {.    .
14e60 74 20 63 6f 6e 66 69 67 75 72 65 20 2d 77 72 61  t configure -wra
14e70 70 20 6e 6f 6e 65 0a 20 20 20 20 2e 74 20 64 65  p none.    .t de
14e80 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a 20 20 20  lete 1.0 end.   
14e90 20 66 6f 72 65 61 63 68 20 78 20 5b 6c 69 73 74   foreach x [list
14ea0 20 30 20 31 20 32 20 33 20 34 20 35 20 36 20 37   0 1 2 3 4 5 6 7
14eb0 20 38 20 39 20 30 5d 20 7b 0a 20 20 20 20 20 20   8 9 0] {.      
14ec0 2e 74 20 69 6e 73 65 72 74 20 65 6e 64 20 22 24  .t insert end "$
14ed0 78 20 61 61 61 31 5c 6e 24 78 20 62 62 62 32 5c  x aaa1\n$x bbb2\
14ee0 6e 24 78 20 63 63 63 33 5c 6e 24 78 20 64 64 64  n$x ccc3\n$x ddd
14ef0 34 5c 6e 24 78 20 65 65 65 35 5c 6e 24 78 20 66  4\n$x eee5\n$x f
14f00 66 66 36 22 0a 20 20 20 20 20 20 2e 74 20 69 6e  ff6".      .t in
14f10 73 65 72 74 20 65 6e 64 20 22 24 78 20 31 31 31  sert end "$x 111
14f20 31 5c 6e 24 78 20 32 32 32 32 5c 6e 24 78 20 33  1\n$x 2222\n$x 3
14f30 33 33 33 5c 6e 24 78 20 34 34 34 34 5c 6e 24 78  333\n$x 4444\n$x
14f40 20 35 35 35 35 5c 6e 24 78 20 36 36 36 36 22 20   5555\n$x 6666" 
14f50 68 69 64 64 65 6e 0a 20 20 20 20 7d 0a 20 20 20  hidden.    }.   
14f60 20 2e 74 20 74 61 67 20 63 6f 6e 66 69 67 75 72   .t tag configur
14f70 65 20 68 69 64 64 65 6e 20 2d 65 6c 69 64 65 20  e hidden -elide 
14f80 74 72 75 65 20 3b 20 23 20 35 20 68 69 64 64 65  true ; # 5 hidde
14f90 6e 20 6c 69 6e 65 73 0a 20 20 20 20 75 70 64 61  n lines.    upda
14fa0 74 65 0a 20 20 20 20 2e 74 20 73 65 65 20 5b 65  te.    .t see [e
14fb0 78 70 72 20 7b 35 20 2b 20 5b 77 69 6e 66 6f 20  xpr {5 + [winfo 
14fc0 68 65 69 67 68 74 20 2e 74 5d 20 2f 20 24 66 69  height .t] / $fi
14fd0 78 65 64 48 65 69 67 68 74 7d 20 2b 20 31 5d 2e  xedHeight} + 1].
14fe0 30 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20 20  0.    update.   
14ff0 20 2e 74 20 69 6e 64 65 78 20 40 30 2c 30 0a 7d   .t index @0,0.}
15000 20 7b 32 2e 30 7d 0a 0a 2e 74 20 64 65 6c 65 74   {2.0}...t delet
15010 65 20 31 2e 30 20 65 6e 64 0a 66 6f 72 65 61 63  e 1.0 end.foreac
15020 68 20 69 20 7b 61 20 62 20 63 20 64 20 65 20 66  h i {a b c d e f
15030 20 67 20 68 20 69 20 6a 20 6b 20 6c 20 6d 20 6e   g h i j k l m n
15040 20 6f 20 70 20 71 20 72 20 73 20 74 20 75 20 76   o p q r s t u v
15050 20 77 20 78 20 79 20 7a 7d 20 7b 0a 20 20 20 20   w x y z} {.    
15060 2e 74 20 69 6e 73 65 72 74 20 65 6e 64 20 22 5c  .t insert end "\
15070 6e 4c 69 6e 65 20 24 69 20 31 31 31 31 31 20 24  nLine $i 11111 $
15080 69 20 32 32 32 32 32 20 24 69 20 33 33 33 33 33  i 22222 $i 33333
15090 20 24 69 20 34 34 34 34 34 20 24 69 20 35 35 35   $i 44444 $i 555
150a0 35 35 22 0a 20 20 20 20 2e 74 20 69 6e 73 65 72  55".    .t inser
150b0 74 20 65 6e 64 20 22 20 24 69 20 36 36 36 36 36  t end " $i 66666
150c0 20 24 69 20 37 37 37 37 37 20 24 69 20 38 38 38   $i 77777 $i 888
150d0 38 38 20 24 69 22 0a 7d 0a 2e 74 20 63 6f 6e 66  88 $i".}..t conf
150e0 69 67 75 72 65 20 2d 77 72 61 70 20 6e 6f 6e 65  igure -wrap none
150f0 0a 74 65 73 74 20 74 65 78 74 44 69 73 70 2d 31  .test textDisp-1
15100 37 2e 31 20 7b 54 6b 54 65 78 74 53 63 61 6e 43  7.1 {TkTextScanC
15110 6d 64 20 70 72 6f 63 65 64 75 72 65 7d 20 7b 0a  md procedure} {.
15120 20 20 20 20 6c 69 73 74 20 5b 63 61 74 63 68 20      list [catch 
15130 7b 2e 74 20 73 63 61 6e 20 61 20 62 7d 20 6d 73  {.t scan a b} ms
15140 67 5d 20 24 6d 73 67 0a 7d 20 7b 31 20 7b 77 72  g] $msg.} {1 {wr
15150 6f 6e 67 20 23 20 61 72 67 73 3a 20 73 68 6f 75  ong # args: shou
15160 6c 64 20 62 65 20 22 2e 74 20 73 63 61 6e 20 6d  ld be ".t scan m
15170 61 72 6b 20 78 20 79 22 20 6f 72 20 22 2e 74 20  ark x y" or ".t 
15180 73 63 61 6e 20 64 72 61 67 74 6f 20 78 20 79 20  scan dragto x y 
15190 3f 67 61 69 6e 3f 22 7d 7d 0a 74 65 73 74 20 74  ?gain?"}}.test t
151a0 65 78 74 44 69 73 70 2d 31 37 2e 32 20 7b 54 6b  extDisp-17.2 {Tk
151b0 54 65 78 74 53 63 61 6e 43 6d 64 20 70 72 6f 63  TextScanCmd proc
151c0 65 64 75 72 65 7d 20 7b 0a 20 20 20 20 6c 69 73  edure} {.    lis
151d0 74 20 5b 63 61 74 63 68 20 7b 2e 74 20 73 63 61  t [catch {.t sca
151e0 6e 20 61 20 62 20 63 20 64 7d 20 6d 73 67 5d 20  n a b c d} msg] 
151f0 24 6d 73 67 0a 7d 20 7b 31 20 7b 65 78 70 65 63  $msg.} {1 {expec
15200 74 65 64 20 69 6e 74 65 67 65 72 20 62 75 74 20  ted integer but 
15210 67 6f 74 20 22 62 22 7d 7d 0a 74 65 73 74 20 74  got "b"}}.test t
15220 65 78 74 44 69 73 70 2d 31 37 2e 33 20 7b 54 6b  extDisp-17.3 {Tk
15230 54 65 78 74 53 63 61 6e 43 6d 64 20 70 72 6f 63  TextScanCmd proc
15240 65 64 75 72 65 7d 20 7b 0a 20 20 20 20 6c 69 73  edure} {.    lis
15250 74 20 5b 63 61 74 63 68 20 7b 2e 74 20 73 63 61  t [catch {.t sca
15260 6e 20 73 74 75 70 69 64 20 62 20 32 30 7d 20 6d  n stupid b 20} m
15270 73 67 5d 20 24 6d 73 67 0a 7d 20 7b 31 20 7b 65  sg] $msg.} {1 {e
15280 78 70 65 63 74 65 64 20 69 6e 74 65 67 65 72 20  xpected integer 
15290 62 75 74 20 67 6f 74 20 22 62 22 7d 7d 0a 74 65  but got "b"}}.te
152a0 73 74 20 74 65 78 74 44 69 73 70 2d 31 37 2e 34  st textDisp-17.4
152b0 20 7b 54 6b 54 65 78 74 53 63 61 6e 43 6d 64 20   {TkTextScanCmd 
152c0 70 72 6f 63 65 64 75 72 65 7d 20 7b 0a 20 20 20  procedure} {.   
152d0 20 6c 69 73 74 20 5b 63 61 74 63 68 20 7b 2e 74   list [catch {.t
152e0 20 73 63 61 6e 20 73 74 75 70 69 64 20 2d 32 20   scan stupid -2 
152f0 62 6f 67 75 73 7d 20 6d 73 67 5d 20 24 6d 73 67  bogus} msg] $msg
15300 0a 7d 20 7b 31 20 7b 65 78 70 65 63 74 65 64 20  .} {1 {expected 
15310 69 6e 74 65 67 65 72 20 62 75 74 20 67 6f 74 20  integer but got 
15320 22 62 6f 67 75 73 22 7d 7d 0a 74 65 73 74 20 74  "bogus"}}.test t
15330 65 78 74 44 69 73 70 2d 31 37 2e 35 20 7b 54 6b  extDisp-17.5 {Tk
15340 54 65 78 74 53 63 61 6e 43 6d 64 20 70 72 6f 63  TextScanCmd proc
15350 65 64 75 72 65 7d 20 7b 0a 20 20 20 20 6c 69 73  edure} {.    lis
15360 74 20 5b 63 61 74 63 68 20 7b 2e 74 20 73 63 61  t [catch {.t sca
15370 6e 20 73 74 75 70 69 64 20 31 32 33 20 34 35 36  n stupid 123 456
15380 7d 20 6d 73 67 5d 20 24 6d 73 67 0a 7d 20 7b 31  } msg] $msg.} {1
15390 20 7b 62 61 64 20 73 63 61 6e 20 6f 70 74 69 6f   {bad scan optio
153a0 6e 20 22 73 74 75 70 69 64 22 3a 20 6d 75 73 74  n "stupid": must
153b0 20 62 65 20 6d 61 72 6b 20 6f 72 20 64 72 61 67   be mark or drag
153c0 74 6f 7d 7d 0a 74 65 73 74 20 74 65 78 74 44 69  to}}.test textDi
153d0 73 70 2d 31 37 2e 36 20 7b 54 6b 54 65 78 74 53  sp-17.6 {TkTextS
153e0 63 61 6e 43 6d 64 20 70 72 6f 63 65 64 75 72 65  canCmd procedure
153f0 7d 20 7b 74 65 78 74 66 6f 6e 74 73 7d 20 7b 0a  } {textfonts} {.
15400 20 20 20 20 2e 74 20 79 76 69 65 77 20 31 2e 30      .t yview 1.0
15410 0a 20 20 20 20 2e 74 20 78 76 69 65 77 20 6d 6f  .    .t xview mo
15420 76 65 74 6f 20 30 0a 20 20 20 20 2e 74 20 73 63  veto 0.    .t sc
15430 61 6e 20 6d 61 72 6b 20 34 30 20 36 30 0a 20 20  an mark 40 60.  
15440 20 20 2e 74 20 73 63 61 6e 20 64 72 61 67 74 6f    .t scan dragto
15450 20 33 35 20 35 35 0a 20 20 20 20 2e 74 20 69 6e   35 55.    .t in
15460 64 65 78 20 40 30 2c 30 0a 7d 20 7b 34 2e 37 7d  dex @0,0.} {4.7}
15470 0a 74 65 73 74 20 74 65 78 74 44 69 73 70 2d 31  .test textDisp-1
15480 37 2e 37 20 7b 54 6b 54 65 78 74 53 63 61 6e 43  7.7 {TkTextScanC
15490 6d 64 20 70 72 6f 63 65 64 75 72 65 7d 20 7b 74  md procedure} {t
154a0 65 78 74 66 6f 6e 74 73 7d 20 7b 0a 20 20 20 20  extfonts} {.    
154b0 2e 74 20 79 76 69 65 77 20 31 30 2e 30 0a 20 20  .t yview 10.0.  
154c0 20 20 2e 74 20 78 76 69 65 77 20 6d 6f 76 65 74    .t xview movet
154d0 6f 20 30 0a 20 20 20 20 2e 74 20 78 76 69 65 77  o 0.    .t xview
154e0 20 73 63 72 6f 6c 6c 20 32 30 20 75 6e 69 74 73   scroll 20 units
154f0 0a 20 20 20 20 2e 74 20 73 63 61 6e 20 6d 61 72  .    .t scan mar
15500 6b 20 2d 31 30 20 36 30 0a 20 20 20 20 2e 74 20  k -10 60.    .t 
15510 73 63 61 6e 20 64 72 61 67 74 6f 20 2d 35 20 36  scan dragto -5 6
15520 35 0a 20 20 20 20 2e 74 20 69 6e 64 65 78 20 40  5.    .t index @
15530 30 2c 30 0a 20 20 20 20 73 65 74 20 78 20 5b 2e  0,0.    set x [.
15540 74 20 69 6e 64 65 78 20 40 30 2c 30 5d 0a 20 20  t index @0,0].  
15550 20 20 2e 74 20 73 63 61 6e 20 64 72 61 67 74 6f    .t scan dragto
15560 20 30 20 5b 65 78 70 72 20 7b 37 30 20 2b 20 24   0 [expr {70 + $
15570 66 69 78 65 64 44 69 66 66 7d 5d 0a 20 20 20 20  fixedDiff}].    
15580 6c 69 73 74 20 24 78 20 5b 2e 74 20 69 6e 64 65  list $x [.t inde
15590 78 20 40 30 2c 30 5d 0a 7d 20 7b 36 2e 31 32 20  x @0,0].} {6.12 
155a0 32 2e 35 7d 0a 74 65 73 74 20 74 65 78 74 44 69  2.5}.test textDi
155b0 73 70 2d 31 37 2e 38 20 7b 54 6b 54 65 78 74 53  sp-17.8 {TkTextS
155c0 63 61 6e 43 6d 64 20 70 72 6f 63 65 64 75 72 65  canCmd procedure
155d0 7d 20 7b 74 65 78 74 66 6f 6e 74 73 7d 20 7b 0a  } {textfonts} {.
155e0 20 20 20 20 2e 74 20 79 76 69 65 77 20 31 2e 30      .t yview 1.0
155f0 0a 20 20 20 20 2e 74 20 78 76 69 65 77 20 6d 6f  .    .t xview mo
15600 76 65 74 6f 20 30 0a 20 20 20 20 2e 74 20 73 63  veto 0.    .t sc
15610 61 6e 20 6d 61 72 6b 20 30 20 36 30 0a 20 20 20  an mark 0 60.   
15620 20 2e 74 20 73 63 61 6e 20 64 72 61 67 74 6f 20   .t scan dragto 
15630 33 30 20 31 30 30 0a 20 20 20 20 2e 74 20 73 63  30 100.    .t sc
15640 61 6e 20 64 72 61 67 74 6f 20 32 35 20 39 35 0a  an dragto 25 95.
15650 20 20 20 20 2e 74 20 69 6e 64 65 78 20 40 30 2c      .t index @0,
15660 30 0a 7d 20 7b 34 2e 37 7d 0a 74 65 73 74 20 74  0.} {4.7}.test t
15670 65 78 74 44 69 73 70 2d 31 37 2e 39 20 7b 54 6b  extDisp-17.9 {Tk
15680 54 65 78 74 53 63 61 6e 43 6d 64 20 70 72 6f 63  TextScanCmd proc
15690 65 64 75 72 65 7d 20 7b 74 65 78 74 66 6f 6e 74  edure} {textfont
156a0 73 7d 20 7b 0a 20 20 20 20 2e 74 20 79 76 69 65  s} {.    .t yvie
156b0 77 20 65 6e 64 0a 20 20 20 20 2e 74 20 78 76 69  w end.    .t xvi
156c0 65 77 20 6d 6f 76 65 74 6f 20 30 0a 20 20 20 20  ew moveto 0.    
156d0 2e 74 20 78 76 69 65 77 20 73 63 72 6f 6c 6c 20  .t xview scroll 
156e0 31 30 30 20 75 6e 69 74 73 0a 20 20 20 20 2e 74  100 units.    .t
156f0 20 73 63 61 6e 20 6d 61 72 6b 20 39 30 20 36 30   scan mark 90 60
15700 0a 20 20 20 20 2e 74 20 73 63 61 6e 20 64 72 61  .    .t scan dra
15710 67 74 6f 20 31 30 20 30 0a 20 20 20 20 2e 74 20  gto 10 0.    .t 
15720 73 63 61 6e 20 64 72 61 67 74 6f 20 31 34 20 35  scan dragto 14 5
15730 0a 20 20 20 20 2e 74 20 69 6e 64 65 78 20 40 30  .    .t index @0
15740 2c 30 0a 7d 20 7b 31 34 2e 34 34 7d 0a 2e 74 20  ,0.} {14.44}..t 
15750 63 6f 6e 66 69 67 75 72 65 20 2d 77 72 61 70 20  configure -wrap 
15760 77 6f 72 64 0a 74 65 73 74 20 74 65 78 74 44 69  word.test textDi
15770 73 70 2d 31 37 2e 31 30 20 7b 54 6b 54 65 78 74  sp-17.10 {TkText
15780 53 63 61 6e 43 6d 64 20 70 72 6f 63 65 64 75 72  ScanCmd procedur
15790 65 2c 20 77 6f 72 64 20 77 72 61 70 70 69 6e 67  e, word wrapping
157a0 7d 20 7b 74 65 78 74 66 6f 6e 74 73 7d 20 7b 0a  } {textfonts} {.
157b0 20 20 20 20 2e 74 20 79 76 69 65 77 20 31 30 2e      .t yview 10.
157c0 30 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20 20  0.    update.   
157d0 20 2e 74 20 73 63 61 6e 20 6d 61 72 6b 20 2d 31   .t scan mark -1
157e0 30 20 36 30 0a 20 20 20 20 2e 74 20 73 63 61 6e  0 60.    .t scan
157f0 20 64 72 61 67 74 6f 20 2d 35 20 36 35 0a 20 20   dragto -5 65.  
15800 20 20 73 65 74 20 78 20 5b 2e 74 20 69 6e 64 65    set x [.t inde
15810 78 20 40 30 2c 30 5d 0a 20 20 20 20 2e 74 20 73  x @0,0].    .t s
15820 63 61 6e 20 64 72 61 67 74 6f 20 30 20 5b 65 78  can dragto 0 [ex
15830 70 72 20 7b 37 30 20 2b 20 24 66 69 78 65 64 44  pr {70 + $fixedD
15840 69 66 66 7d 5d 0a 20 20 20 20 6c 69 73 74 20 24  iff}].    list $
15850 78 20 5b 2e 74 20 69 6e 64 65 78 20 40 30 2c 30  x [.t index @0,0
15860 5d 0a 7d 20 7b 39 2e 30 20 38 2e 30 7d 0a 2e 74  ].} {9.0 8.0}..t
15870 20 63 6f 6e 66 69 67 75 72 65 20 2d 78 73 63 72   configure -xscr
15880 6f 6c 6c 63 6f 6d 6d 61 6e 64 20 73 63 72 6f 6c  ollcommand scrol
15890 6c 20 2d 79 73 63 72 6f 6c 6c 63 6f 6d 6d 61 6e  l -yscrollcomman
158a0 64 20 7b 7d 0a 74 65 73 74 20 74 65 78 74 44 69  d {}.test textDi
158b0 73 70 2d 31 38 2e 31 20 7b 47 65 74 58 56 69 65  sp-18.1 {GetXVie
158c0 77 20 70 72 6f 63 65 64 75 72 65 7d 20 7b 0a 20  w procedure} {. 
158d0 20 20 20 2e 74 20 63 6f 6e 66 69 67 75 72 65 20     .t configure 
158e0 2d 77 72 61 70 20 6e 6f 6e 65 0a 20 20 20 20 2e  -wrap none.    .
158f0 74 20 64 65 6c 65 74 65 20 31 2e 30 20 65 6e 64  t delete 1.0 end
15900 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20 65  .    .t insert e
15910 6e 64 20 78 78 78 78 78 78 78 78 78 5c 6e 0a 20  nd xxxxxxxxx\n. 
15920 20 20 20 2e 74 20 69 6e 73 65 72 74 20 65 6e 64     .t insert end
15930 20 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78   xxxxxxxxxxxxxxx
15940 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78  xxxxxxxxxxxxxxxx
15950 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78  xxxxxxxxxxxxxxxx
15960 78 78 78 78 78 78 78 78 5c 6e 0a 20 20 20 20 2e  xxxxxxxx\n.    .
15970 74 20 69 6e 73 65 72 74 20 65 6e 64 20 78 78 78  t insert end xxx
15980 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78  xxxxxxxxxxxxxxxx
15990 78 78 78 78 78 78 78 0a 20 20 20 20 75 70 64 61  xxxxxxx.    upda
159a0 74 65 0a 20 20 20 20 73 65 74 20 73 63 72 6f 6c  te.    set scrol
159b0 6c 49 6e 66 6f 0a 7d 20 5b 6c 69 73 74 20 30 2e  lInfo.} [list 0.
159c0 30 20 5b 65 78 70 72 20 7b 34 2e 30 2f 31 31 7d  0 [expr {4.0/11}
159d0 5d 5d 0a 74 65 73 74 20 74 65 78 74 44 69 73 70  ]].test textDisp
159e0 2d 31 38 2e 32 20 7b 47 65 74 58 56 69 65 77 20  -18.2 {GetXView 
159f0 70 72 6f 63 65 64 75 72 65 7d 20 7b 0a 20 20 20  procedure} {.   
15a00 20 2e 74 20 63 6f 6e 66 69 67 75 72 65 20 2d 77   .t configure -w
15a10 72 61 70 20 63 68 61 72 0a 20 20 20 20 2e 74 20  rap char.    .t 
15a20 64 65 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a 20  delete 1.0 end. 
15a30 20 20 20 2e 74 20 69 6e 73 65 72 74 20 65 6e 64     .t insert end
15a40 20 78 78 78 78 78 78 78 78 78 5c 6e 0a 20 20 20   xxxxxxxxx\n.   
15a50 20 2e 74 20 69 6e 73 65 72 74 20 65 6e 64 20 78   .t insert end x
15a60 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78  xxxxxxxxxxxxxxxx
15a70 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78  xxxxxxxxxxxxxxxx
15a80 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78  xxxxxxxxxxxxxxxx
15a90 78 78 78 78 78 78 5c 6e 0a 20 20 20 20 2e 74 20  xxxxxx\n.    .t 
15aa0 69 6e 73 65 72 74 20 65 6e 64 20 78 78 78 78 78  insert end xxxxx
15ab0 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78  xxxxxxxxxxxxxxxx
15ac0 78 78 78 78 78 0a 20 20 20 20 75 70 64 61 74 65  xxxxx.    update
15ad0 0a 20 20 20 20 73 65 74 20 73 63 72 6f 6c 6c 49  .    set scrollI
15ae0 6e 66 6f 0a 7d 20 7b 30 2e 30 20 31 2e 30 7d 0a  nfo.} {0.0 1.0}.
15af0 74 65 73 74 20 74 65 78 74 44 69 73 70 2d 31 38  test textDisp-18
15b00 2e 33 20 7b 47 65 74 58 56 69 65 77 20 70 72 6f  .3 {GetXView pro
15b10 63 65 64 75 72 65 7d 20 7b 0a 20 20 20 20 2e 74  cedure} {.    .t
15b20 20 63 6f 6e 66 69 67 75 72 65 20 2d 77 72 61 70   configure -wrap
15b30 20 6e 6f 6e 65 0a 20 20 20 20 2e 74 20 64 65 6c   none.    .t del
15b40 65 74 65 20 31 2e 30 20 65 6e 64 0a 20 20 20 20  ete 1.0 end.    
15b50 75 70 64 61 74 65 0a 20 20 20 20 73 65 74 20 73  update.    set s
15b60 63 72 6f 6c 6c 49 6e 66 6f 0a 7d 20 7b 30 2e 30  crollInfo.} {0.0
15b70 20 31 2e 30 7d 0a 74 65 73 74 20 74 65 78 74 44   1.0}.test textD
15b80 69 73 70 2d 31 38 2e 34 20 7b 47 65 74 58 56 69  isp-18.4 {GetXVi
15b90 65 77 20 70 72 6f 63 65 64 75 72 65 7d 20 7b 0a  ew procedure} {.
15ba0 20 20 20 20 2e 74 20 63 6f 6e 66 69 67 75 72 65      .t configure
15bb0 20 2d 77 72 61 70 20 6e 6f 6e 65 0a 20 20 20 20   -wrap none.    
15bc0 2e 74 20 64 65 6c 65 74 65 20 31 2e 30 20 65 6e  .t delete 1.0 en
15bd0 64 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20  d.    .t insert 
15be0 65 6e 64 20 78 78 78 78 78 78 78 78 78 5c 6e 0a  end xxxxxxxxx\n.
15bf0 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20 65 6e      .t insert en
15c00 64 20 78 78 78 78 78 78 5c 6e 0a 20 20 20 20 2e  d xxxxxx\n.    .
15c10 74 20 69 6e 73 65 72 74 20 65 6e 64 20 78 78 78  t insert end xxx
15c20 78 78 78 78 78 78 78 78 78 78 78 78 78 78 0a 20  xxxxxxxxxxxxxx. 
15c30 20 20 20 75 70 64 61 74 65 0a 20 20 20 20 73 65     update.    se
15c40 74 20 73 63 72 6f 6c 6c 49 6e 66 6f 0a 7d 20 7b  t scrollInfo.} {
15c50 30 2e 30 20 31 2e 30 7d 0a 74 65 73 74 20 74 65  0.0 1.0}.test te
15c60 78 74 44 69 73 70 2d 31 38 2e 35 20 7b 47 65 74  xtDisp-18.5 {Get
15c70 58 56 69 65 77 20 70 72 6f 63 65 64 75 72 65 7d  XView procedure}
15c80 20 7b 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69 67   {.    .t config
15c90 75 72 65 20 2d 77 72 61 70 20 6e 6f 6e 65 0a 20  ure -wrap none. 
15ca0 20 20 20 2e 74 20 64 65 6c 65 74 65 20 31 2e 30     .t delete 1.0
15cb0 20 65 6e 64 0a 20 20 20 20 2e 74 20 69 6e 73 65   end.    .t inse
15cc0 72 74 20 65 6e 64 20 78 78 78 78 78 78 78 78 78  rt end xxxxxxxxx
15cd0 5c 6e 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74  \n.    .t insert
15ce0 20 65 6e 64 20 78 78 78 78 78 78 78 78 78 78 78   end xxxxxxxxxxx
15cf0 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78  xxxxxxxxxxxxxxxx
15d00 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78  xxxxxxxxxxxxxxxx
15d10 78 78 78 78 78 78 78 78 78 78 78 78 5c 6e 0a 20  xxxxxxxxxxxx\n. 
15d20 20 20 20 2e 74 20 69 6e 73 65 72 74 20 65 6e 64     .t insert end
15d30 20 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78   xxxxxxxxxxxxxxx
15d40 78 78 78 78 78 78 78 78 78 78 78 0a 20 20 20 20  xxxxxxxxxxx.    
15d50 2e 74 20 78 76 69 65 77 20 73 63 72 6f 6c 6c 20  .t xview scroll 
15d60 33 31 20 75 6e 69 74 73 0a 20 20 20 20 75 70 64  31 units.    upd
15d70 61 74 65 0a 20 20 20 20 73 65 74 20 73 63 72 6f  ate.    set scro
15d80 6c 6c 49 6e 66 6f 0a 7d 20 5b 6c 69 73 74 20 5b  llInfo.} [list [
15d90 65 78 70 72 20 7b 33 31 2e 30 2f 35 35 7d 5d 20  expr {31.0/55}] 
15da0 5b 65 78 70 72 20 7b 35 31 2e 30 2f 35 35 7d 5d  [expr {51.0/55}]
15db0 5d 0a 74 65 73 74 20 74 65 78 74 44 69 73 70 2d  ].test textDisp-
15dc0 31 38 2e 36 20 7b 47 65 74 58 56 69 65 77 20 70  18.6 {GetXView p
15dd0 72 6f 63 65 64 75 72 65 7d 20 7b 0a 20 20 20 20  rocedure} {.    
15de0 2e 74 20 63 6f 6e 66 69 67 75 72 65 20 2d 77 72  .t configure -wr
15df0 61 70 20 6e 6f 6e 65 0a 20 20 20 20 2e 74 20 64  ap none.    .t d
15e00 65 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a 20 20  elete 1.0 end.  
15e10 20 20 2e 74 20 69 6e 73 65 72 74 20 65 6e 64 20    .t insert end 
15e20 78 78 78 78 78 78 78 78 78 5c 6e 0a 20 20 20 20  xxxxxxxxx\n.    
15e30 2e 74 20 69 6e 73 65 72 74 20 65 6e 64 20 22 78  .t insert end "x
15e40 78 78 78 78 20 78 78 78 78 78 78 78 78 78 78 78  xxxx xxxxxxxxxxx
15e50 20 78 78 78 78 20 78 78 78 78 78 78 78 78 78 78   xxxx xxxxxxxxxx
15e60 78 78 78 78 78 78 78 78 78 78 20 78 78 78 78 78  xxxxxxxxxx xxxxx
15e70 78 78 78 78 78 78 78 5c 6e 22 0a 20 20 20 20 2e  xxxxxxx\n".    .
15e80 74 20 69 6e 73 65 72 74 20 65 6e 64 20 22 78 78  t insert end "xx
15e90 78 78 20 78 78 78 78 78 78 78 78 78 20 78 78 78  xx xxxxxxxxx xxx
15ea0 78 78 78 78 78 78 78 78 78 78 22 0a 20 20 20 20  xxxxxxxxxx".    
15eb0 2e 74 20 78 76 69 65 77 20 6d 6f 76 65 74 6f 20  .t xview moveto 
15ec0 30 0a 20 20 20 20 2e 74 20 78 76 69 65 77 20 73  0.    .t xview s
15ed0 63 72 6f 6c 6c 20 33 31 20 75 6e 69 74 73 0a 20  croll 31 units. 
15ee0 20 20 20 75 70 64 61 74 65 0a 20 20 20 20 73 65     update.    se
15ef0 74 20 78 20 7b 7d 0a 20 20 20 20 6c 61 70 70 65  t x {}.    lappe
15f00 6e 64 20 78 20 24 73 63 72 6f 6c 6c 49 6e 66 6f  nd x $scrollInfo
15f10 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69 67 75 72  .    .t configur
15f20 65 20 2d 77 72 61 70 20 63 68 61 72 0a 20 20 20  e -wrap char.   
15f30 20 75 70 64 61 74 65 0a 20 20 20 20 6c 61 70 70   update.    lapp
15f40 65 6e 64 20 78 20 24 73 63 72 6f 6c 6c 49 6e 66  end x $scrollInf
15f50 6f 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69 67 75  o.    .t configu
15f60 72 65 20 2d 77 72 61 70 20 77 6f 72 64 0a 20 20  re -wrap word.  
15f70 20 20 75 70 64 61 74 65 0a 20 20 20 20 6c 61 70    update.    lap
15f80 70 65 6e 64 20 78 20 24 73 63 72 6f 6c 6c 49 6e  pend x $scrollIn
15f90 66 6f 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69 67  fo.    .t config
15fa0 75 72 65 20 2d 77 72 61 70 20 6e 6f 6e 65 0a 20  ure -wrap none. 
15fb0 20 20 20 75 70 64 61 74 65 0a 20 20 20 20 6c 61     update.    la
15fc0 70 70 65 6e 64 20 78 20 24 73 63 72 6f 6c 6c 49  ppend x $scrollI
15fd0 6e 66 6f 0a 7d 20 5b 6c 69 73 74 20 5b 6c 69 73  nfo.} [list [lis
15fe0 74 20 5b 65 78 70 72 20 7b 33 31 2e 30 2f 35 36  t [expr {31.0/56
15ff0 7d 5d 20 5b 65 78 70 72 20 7b 35 31 2e 30 2f 35  }] [expr {51.0/5
16000 36 7d 5d 5d 20 7b 30 2e 30 20 31 2e 30 7d 20 7b  6}]] {0.0 1.0} {
16010 30 2e 30 20 31 2e 30 7d 20 5b 6c 69 73 74 20 30  0.0 1.0} [list 0
16020 2e 30 20 5b 65 78 70 72 20 7b 35 2e 30 2f 31 34  .0 [expr {5.0/14
16030 7d 5d 5d 5d 0a 74 65 73 74 20 74 65 78 74 44 69  }]]].test textDi
16040 73 70 2d 31 38 2e 37 20 7b 47 65 74 58 56 69 65  sp-18.7 {GetXVie
16050 77 20 70 72 6f 63 65 64 75 72 65 7d 20 7b 0a 20  w procedure} {. 
16060 20 20 20 2e 74 20 63 6f 6e 66 69 67 75 72 65 20     .t configure 
16070 2d 77 72 61 70 20 6e 6f 6e 65 0a 20 20 20 20 2e  -wrap none.    .
16080 74 20 64 65 6c 65 74 65 20 31 2e 30 20 65 6e 64  t delete 1.0 end
16090 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20 20 20  .    update.    
160a0 73 65 74 20 73 63 72 6f 6c 6c 49 6e 66 6f 20 75  set scrollInfo u
160b0 6e 63 68 61 6e 67 65 64 0a 20 20 20 20 2e 74 20  nchanged.    .t 
160c0 69 6e 73 65 72 74 20 65 6e 64 20 78 78 78 78 78  insert end xxxxx
160d0 78 5c 6e 0a 20 20 20 20 2e 74 20 69 6e 73 65 72  x\n.    .t inser
160e0 74 20 65 6e 64 20 78 78 78 0a 20 20 20 20 75 70  t end xxx.    up
160f0 64 61 74 65 0a 20 20 20 20 73 65 74 20 73 63 72  date.    set scr
16100 6f 6c 6c 49 6e 66 6f 0a 7d 20 7b 75 6e 63 68 61  ollInfo.} {uncha
16110 6e 67 65 64 7d 0a 74 65 73 74 20 74 65 78 74 44  nged}.test textD
16120 69 73 70 2d 31 38 2e 38 20 7b 47 65 74 58 56 69  isp-18.8 {GetXVi
16130 65 77 20 70 72 6f 63 65 64 75 72 65 7d 20 7b 0a  ew procedure} {.
16140 20 20 20 20 70 72 6f 63 20 62 67 65 72 72 6f 72      proc bgerror
16150 20 6d 73 67 20 7b 0a 09 67 6c 6f 62 61 6c 20 78   msg {..global x
16160 20 65 72 72 6f 72 49 6e 66 6f 0a 09 73 65 74 20   errorInfo..set 
16170 78 20 5b 6c 69 73 74 20 24 6d 73 67 20 24 65 72  x [list $msg $er
16180 72 6f 72 49 6e 66 6f 5d 0a 20 20 20 20 7d 0a 20  rorInfo].    }. 
16190 20 20 20 70 72 6f 63 20 62 6f 67 75 73 20 61 72     proc bogus ar
161a0 67 73 20 7b 0a 09 65 72 72 6f 72 20 22 62 6f 67  gs {..error "bog
161b0 75 73 20 73 63 72 6f 6c 6c 20 70 72 6f 63 22 0a  us scroll proc".
161c0 20 20 20 20 7d 0a 20 20 20 20 2e 74 20 63 6f 6e      }.    .t con
161d0 66 69 67 75 72 65 20 2d 77 72 61 70 20 6e 6f 6e  figure -wrap non
161e0 65 0a 20 20 20 20 2e 74 20 64 65 6c 65 74 65 20  e.    .t delete 
161f0 31 2e 30 20 65 6e 64 0a 20 20 20 20 2e 74 20 69  1.0 end.    .t i
16200 6e 73 65 72 74 20 65 6e 64 20 78 78 78 78 78 78  nsert end xxxxxx
16210 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78  xxxxxxxxxxxxxxxx
16220 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78  xxxxxxxxxxxxxxxx
16230 78 78 78 78 5c 6e 0a 20 20 20 20 75 70 64 61 74  xxxx\n.    updat
16240 65 0a 20 20 20 20 2e 74 20 64 65 6c 65 74 65 20  e.    .t delete 
16250 31 2e 30 20 65 6e 64 0a 20 20 20 20 2e 74 20 63  1.0 end.    .t c
16260 6f 6e 66 69 67 75 72 65 20 2d 78 73 63 72 6f 6c  onfigure -xscrol
16270 6c 63 6f 6d 6d 61 6e 64 20 73 63 72 6f 6c 6c 45  lcommand scrollE
16280 72 72 6f 72 0a 20 20 20 20 75 70 64 61 74 65 0a  rror.    update.
16290 20 20 20 20 73 65 74 20 78 0a 7d 20 7b 7b 73 63      set x.} {{sc
162a0 72 6f 6c 6c 69 6e 67 20 65 72 72 6f 72 7d 20 7b  rolling error} {
162b0 73 63 72 6f 6c 6c 69 6e 67 20 65 72 72 6f 72 0a  scrolling error.
162c0 20 20 20 20 77 68 69 6c 65 20 65 78 65 63 75 74      while execut
162d0 69 6e 67 0a 22 65 72 72 6f 72 20 22 73 63 72 6f  ing."error "scro
162e0 6c 6c 69 6e 67 20 65 72 72 6f 72 22 22 0a 20 20  lling error"".  
162f0 20 20 28 70 72 6f 63 65 64 75 72 65 20 22 73 63    (procedure "sc
16300 72 6f 6c 6c 45 72 72 6f 72 22 20 6c 69 6e 65 20  rollError" line 
16310 32 29 0a 20 20 20 20 69 6e 76 6f 6b 65 64 20 66  2).    invoked f
16320 72 6f 6d 20 77 69 74 68 69 6e 0a 22 73 63 72 6f  rom within."scro
16330 6c 6c 45 72 72 6f 72 20 30 2e 30 20 31 2e 30 22  llError 0.0 1.0"
16340 0a 20 20 20 20 28 68 6f 72 69 7a 6f 6e 74 61 6c  .    (horizontal
16350 20 73 63 72 6f 6c 6c 69 6e 67 20 63 6f 6d 6d 61   scrolling comma
16360 6e 64 20 65 78 65 63 75 74 65 64 20 62 79 20 74  nd executed by t
16370 65 78 74 29 7d 7d 0a 63 61 74 63 68 20 7b 72 65  ext)}}.catch {re
16380 6e 61 6d 65 20 62 67 65 72 72 6f 72 20 7b 7d 7d  name bgerror {}}
16390 0a 63 61 74 63 68 20 7b 72 65 6e 61 6d 65 20 62  .catch {rename b
163a0 6f 67 75 73 20 7b 7d 7d 0a 0a 2e 74 20 63 6f 6e  ogus {}}...t con
163b0 66 69 67 75 72 65 20 2d 78 73 63 72 6f 6c 6c 63  figure -xscrollc
163c0 6f 6d 6d 61 6e 64 20 7b 7d 20 2d 79 73 63 72 6f  ommand {} -yscro
163d0 6c 6c 63 6f 6d 6d 61 6e 64 20 73 63 72 6f 6c 6c  llcommand scroll
163e0 0a 74 65 73 74 20 74 65 78 74 44 69 73 70 2d 31  .test textDisp-1
163f0 39 2e 31 20 7b 47 65 74 59 56 69 65 77 20 70 72  9.1 {GetYView pr
16400 6f 63 65 64 75 72 65 7d 20 7b 0a 20 20 20 20 2e  ocedure} {.    .
16410 74 20 63 6f 6e 66 69 67 75 72 65 20 2d 77 72 61  t configure -wra
16420 70 20 63 68 61 72 0a 20 20 20 20 2e 74 20 64 65  p char.    .t de
16430 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a 20 20 20  lete 1.0 end.   
16440 20 75 70 64 61 74 65 0a 20 20 20 20 73 65 74 20   update.    set 
16450 73 63 72 6f 6c 6c 49 6e 66 6f 0a 7d 20 7b 30 2e  scrollInfo.} {0.
16460 30 20 31 2e 30 7d 0a 74 65 73 74 20 74 65 78 74  0 1.0}.test text
16470 44 69 73 70 2d 31 39 2e 32 20 7b 47 65 74 59 56  Disp-19.2 {GetYV
16480 69 65 77 20 70 72 6f 63 65 64 75 72 65 7d 20 7b  iew procedure} {
16490 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69 67 75 72  .    .t configur
164a0 65 20 2d 77 72 61 70 20 63 68 61 72 0a 20 20 20  e -wrap char.   
164b0 20 2e 74 20 64 65 6c 65 74 65 20 31 2e 30 20 65   .t delete 1.0 e
164c0 6e 64 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20  nd.    update.  
164d0 20 20 73 65 74 20 73 63 72 6f 6c 6c 49 6e 66 6f    set scrollInfo
164e0 20 22 75 6e 63 68 61 6e 67 65 64 22 0a 20 20 20   "unchanged".   
164f0 20 2e 74 20 69 6e 73 65 72 74 20 31 2e 30 20 22   .t insert 1.0 "
16500 4c 69 6e 65 31 5c 6e 4c 69 6e 65 32 22 0a 20 20  Line1\nLine2".  
16510 20 20 75 70 64 61 74 65 0a 20 20 20 20 73 65 74    update.    set
16520 20 73 63 72 6f 6c 6c 49 6e 66 6f 0a 7d 20 7b 75   scrollInfo.} {u
16530 6e 63 68 61 6e 67 65 64 7d 0a 74 65 73 74 20 74  nchanged}.test t
16540 65 78 74 44 69 73 70 2d 31 39 2e 33 20 7b 47 65  extDisp-19.3 {Ge
16550 74 59 56 69 65 77 20 70 72 6f 63 65 64 75 72 65  tYView procedure
16560 7d 20 7b 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69  } {.    .t confi
16570 67 75 72 65 20 2d 77 72 61 70 20 63 68 61 72 0a  gure -wrap char.
16580 20 20 20 20 2e 74 20 64 65 6c 65 74 65 20 31 2e      .t delete 1.
16590 30 20 65 6e 64 0a 20 20 20 20 75 70 64 61 74 65  0 end.    update
165a0 3b 20 61 66 74 65 72 20 31 30 20 3b 20 75 70 64  ; after 10 ; upd
165b0 61 74 65 0a 20 20 20 20 73 65 74 20 73 63 72 6f  ate.    set scro
165c0 6c 6c 49 6e 66 6f 20 22 75 6e 63 68 61 6e 67 65  llInfo "unchange
165d0 64 22 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74  d".    .t insert
165e0 20 31 2e 30 20 22 4c 69 6e 65 20 31 5c 6e 4c 69   1.0 "Line 1\nLi
165f0 6e 65 20 32 20 69 73 20 73 6f 20 6c 6f 6e 67 20  ne 2 is so long 
16600 74 68 61 74 20 69 74 20 77 72 61 70 73 20 61 72  that it wraps ar
16610 6f 75 6e 64 5c 6e 4c 69 6e 65 20 33 22 0a 20 20  ound\nLine 3".  
16620 20 20 75 70 64 61 74 65 0a 20 20 20 20 73 65 74    update.    set
16630 20 73 63 72 6f 6c 6c 49 6e 66 6f 0a 7d 20 7b 75   scrollInfo.} {u
16640 6e 63 68 61 6e 67 65 64 7d 0a 74 65 73 74 20 74  nchanged}.test t
16650 65 78 74 44 69 73 70 2d 31 39 2e 34 20 7b 47 65  extDisp-19.4 {Ge
16660 74 59 56 69 65 77 20 70 72 6f 63 65 64 75 72 65  tYView procedure
16670 7d 20 7b 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69  } {.    .t confi
16680 67 75 72 65 20 2d 77 72 61 70 20 63 68 61 72 0a  gure -wrap char.
16690 20 20 20 20 2e 74 20 64 65 6c 65 74 65 20 31 2e      .t delete 1.
166a0 30 20 65 6e 64 0a 20 20 20 20 2e 74 20 69 6e 73  0 end.    .t ins
166b0 65 72 74 20 31 2e 30 20 22 4c 69 6e 65 20 31 22  ert 1.0 "Line 1"
166c0 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20 20 20  .    update.    
166d0 73 65 74 20 73 63 72 6f 6c 6c 49 6e 66 6f 20 22  set scrollInfo "
166e0 75 6e 63 68 61 6e 67 65 64 22 0a 20 20 20 20 66  unchanged".    f
166f0 6f 72 65 61 63 68 20 69 20 7b 32 20 33 20 34 20  oreach i {2 3 4 
16700 35 20 36 20 37 20 38 20 39 20 31 30 20 31 31 20  5 6 7 8 9 10 11 
16710 31 32 20 31 33 7d 20 7b 0a 09 2e 74 20 69 6e 73  12 13} {...t ins
16720 65 72 74 20 65 6e 64 20 22 5c 6e 4c 69 6e 65 20  ert end "\nLine 
16730 24 69 22 0a 20 20 20 20 7d 0a 20 20 20 20 75 70  $i".    }.    up
16740 64 61 74 65 0a 20 20 20 20 73 65 74 20 73 63 72  date.    set scr
16750 6f 6c 6c 49 6e 66 6f 0a 7d 20 5b 6c 69 73 74 20  ollInfo.} [list 
16760 30 2e 30 20 5b 65 78 70 72 20 7b 37 30 2e 30 2f  0.0 [expr {70.0/
16770 39 31 7d 5d 5d 0a 74 65 73 74 20 74 65 78 74 44  91}]].test textD
16780 69 73 70 2d 31 39 2e 35 20 7b 47 65 74 59 56 69  isp-19.5 {GetYVi
16790 65 77 20 70 72 6f 63 65 64 75 72 65 7d 20 7b 0a  ew procedure} {.
167a0 20 20 20 20 2e 74 20 63 6f 6e 66 69 67 75 72 65      .t configure
167b0 20 2d 77 72 61 70 20 63 68 61 72 0a 20 20 20 20   -wrap char.    
167c0 2e 74 20 64 65 6c 65 74 65 20 31 2e 30 20 65 6e  .t delete 1.0 en
167d0 64 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20  d.    .t insert 
167e0 31 2e 30 20 22 4c 69 6e 65 20 31 22 0a 20 20 20  1.0 "Line 1".   
167f0 20 66 6f 72 65 61 63 68 20 69 20 7b 32 20 33 20   foreach i {2 3 
16800 34 20 35 20 36 20 37 20 38 20 39 20 31 30 20 31  4 5 6 7 8 9 10 1
16810 31 20 31 32 20 31 33 7d 20 7b 0a 09 2e 74 20 69  1 12 13} {...t i
16820 6e 73 65 72 74 20 65 6e 64 20 22 5c 6e 4c 69 6e  nsert end "\nLin
16830 65 20 24 69 22 0a 20 20 20 20 7d 0a 20 20 20 20  e $i".    }.    
16840 2e 74 20 69 6e 73 65 72 74 20 32 2e 65 6e 64 20  .t insert 2.end 
16850 22 20 69 73 20 72 65 61 6c 6c 79 20 71 75 69 74  " is really quit
16860 65 20 6c 6f 6e 67 3b 20 69 6e 20 66 61 63 74 20  e long; in fact 
16870 69 74 27 73 20 73 6f 20 6c 6f 6e 67 20 74 68 61  it's so long tha
16880 74 20 69 74 20 77 72 61 70 73 20 74 68 72 65 65  t it wraps three
16890 20 74 69 6d 65 73 22 0a 20 20 20 20 75 70 64 61   times".    upda
168a0 74 65 20 3b 20 61 66 74 65 72 20 31 30 30 0a 20  te ; after 100. 
168b0 20 20 20 73 65 74 20 78 20 24 73 63 72 6f 6c 6c     set x $scroll
168c0 49 6e 66 6f 0a 7d 20 7b 30 2e 30 20 30 2e 36 32  Info.} {0.0 0.62
168d0 35 7d 0a 74 65 73 74 20 74 65 78 74 44 69 73 70  5}.test textDisp
168e0 2d 31 39 2e 36 20 7b 47 65 74 59 56 69 65 77 20  -19.6 {GetYView 
168f0 70 72 6f 63 65 64 75 72 65 7d 20 7b 0a 20 20 20  procedure} {.   
16900 20 2e 74 20 63 6f 6e 66 69 67 75 72 65 20 2d 77   .t configure -w
16910 72 61 70 20 63 68 61 72 0a 20 20 20 20 2e 74 20  rap char.    .t 
16920 64 65 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a 20  delete 1.0 end. 
16930 20 20 20 2e 74 20 69 6e 73 65 72 74 20 31 2e 30     .t insert 1.0
16940 20 22 4c 69 6e 65 20 31 22 0a 20 20 20 20 66 6f   "Line 1".    fo
16950 72 65 61 63 68 20 69 20 7b 32 20 33 20 34 20 35  reach i {2 3 4 5
16960 20 36 20 37 20 38 20 39 20 31 30 20 31 31 20 31   6 7 8 9 10 11 1
16970 32 20 31 33 7d 20 7b 0a 09 2e 74 20 69 6e 73 65  2 13} {...t inse
16980 72 74 20 65 6e 64 20 22 5c 6e 4c 69 6e 65 20 24  rt end "\nLine $
16990 69 22 0a 20 20 20 20 7d 0a 20 20 20 20 2e 74 20  i".    }.    .t 
169a0 69 6e 73 65 72 74 20 32 2e 65 6e 64 20 22 20 69  insert 2.end " i
169b0 73 20 72 65 61 6c 6c 79 20 71 75 69 74 65 20 6c  s really quite l
169c0 6f 6e 67 3b 20 69 6e 20 66 61 63 74 20 69 74 27  ong; in fact it'
169d0 73 20 73 6f 20 6c 6f 6e 67 20 74 68 61 74 20 69  s so long that i
169e0 74 20 77 72 61 70 73 20 74 68 72 65 65 20 74 69  t wraps three ti
169f0 6d 65 73 22 0a 20 20 20 20 2e 74 20 79 76 69 65  mes".    .t yvie
16a00 77 20 34 2e 30 0a 20 20 20 20 75 70 64 61 74 65  w 4.0.    update
16a10 0a 20 20 20 20 73 65 74 20 78 20 24 73 63 72 6f  .    set x $scro
16a20 6c 6c 49 6e 66 6f 0a 7d 20 7b 30 2e 33 37 35 20  llInfo.} {0.375 
16a30 31 2e 30 7d 0a 74 65 73 74 20 74 65 78 74 44 69  1.0}.test textDi
16a40 73 70 2d 31 39 2e 37 20 7b 47 65 74 59 56 69 65  sp-19.7 {GetYVie
16a50 77 20 70 72 6f 63 65 64 75 72 65 7d 20 7b 0a 20  w procedure} {. 
16a60 20 20 20 2e 74 20 63 6f 6e 66 69 67 75 72 65 20     .t configure 
16a70 2d 77 72 61 70 20 63 68 61 72 0a 20 20 20 20 2e  -wrap char.    .
16a80 74 20 64 65 6c 65 74 65 20 31 2e 30 20 65 6e 64  t delete 1.0 end
16a90 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20 31  .    .t insert 1
16aa0 2e 30 20 22 4c 69 6e 65 20 31 22 0a 20 20 20 20  .0 "Line 1".    
16ab0 66 6f 72 65 61 63 68 20 69 20 7b 32 20 33 20 34  foreach i {2 3 4
16ac0 20 35 20 36 20 37 20 38 20 39 20 31 30 20 31 31   5 6 7 8 9 10 11
16ad0 20 31 32 20 31 33 7d 20 7b 0a 09 2e 74 20 69 6e   12 13} {...t in
16ae0 73 65 72 74 20 65 6e 64 20 22 5c 6e 4c 69 6e 65  sert end "\nLine
16af0 20 24 69 22 0a 20 20 20 20 7d 0a 20 20 20 20 2e   $i".    }.    .
16b00 74 20 69 6e 73 65 72 74 20 32 2e 65 6e 64 20 22  t insert 2.end "
16b10 20 69 73 20 72 65 61 6c 6c 79 20 71 75 69 74 65   is really quite
16b20 20 6c 6f 6e 67 3b 20 69 6e 20 66 61 63 74 20 69   long; in fact i
16b30 74 27 73 20 73 6f 20 6c 6f 6e 67 20 74 68 61 74  t's so long that
16b40 20 69 74 20 77 72 61 70 73 20 74 68 72 65 65 20   it wraps three 
16b50 74 69 6d 65 73 22 0a 20 20 20 20 2e 74 20 79 76  times".    .t yv
16b60 69 65 77 20 32 2e 32 36 0a 20 20 20 20 75 70 64  iew 2.26.    upd
16b70 61 74 65 3b 20 61 66 74 65 72 20 31 3b 20 75 70  ate; after 1; up
16b80 64 61 74 65 0a 20 20 20 20 73 65 74 20 78 20 24  date.    set x $
16b90 73 63 72 6f 6c 6c 49 6e 66 6f 0a 7d 20 7b 30 2e  scrollInfo.} {0.
16ba0 31 32 35 20 30 2e 37 35 7d 0a 74 65 73 74 20 74  125 0.75}.test t
16bb0 65 78 74 44 69 73 70 2d 31 39 2e 38 20 7b 47 65  extDisp-19.8 {Ge
16bc0 74 59 56 69 65 77 20 70 72 6f 63 65 64 75 72 65  tYView procedure
16bd0 7d 20 7b 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69  } {.    .t confi
16be0 67 75 72 65 20 2d 77 72 61 70 20 63 68 61 72 0a  gure -wrap char.
16bf0 20 20 20 20 2e 74 20 64 65 6c 65 74 65 20 31 2e      .t delete 1.
16c00 30 20 65 6e 64 0a 20 20 20 20 2e 74 20 69 6e 73  0 end.    .t ins
16c10 65 72 74 20 31 2e 30 20 22 4c 69 6e 65 20 31 22  ert 1.0 "Line 1"
16c20 0a 20 20 20 20 66 6f 72 65 61 63 68 20 69 20 7b  .    foreach i {
16c30 32 20 33 20 34 20 35 20 36 20 37 20 38 20 39 20  2 3 4 5 6 7 8 9 
16c40 31 30 20 31 31 20 31 32 20 31 33 7d 20 7b 0a 09  10 11 12 13} {..
16c50 2e 74 20 69 6e 73 65 72 74 20 65 6e 64 20 22 5c  .t insert end "\
16c60 6e 4c 69 6e 65 20 24 69 22 0a 20 20 20 20 7d 0a  nLine $i".    }.
16c70 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20 31 30      .t insert 10
16c80 2e 65 6e 64 20 22 20 69 73 20 72 65 61 6c 6c 79  .end " is really
16c90 20 71 75 69 74 65 20 6c 6f 6e 67 3b 20 69 6e 20   quite long; in 
16ca0 66 61 63 74 20 69 74 27 73 20 73 6f 20 6c 6f 6e  fact it's so lon
16cb0 67 20 74 68 61 74 20 69 74 20 77 72 61 70 73 20  g that it wraps 
16cc0 74 68 72 65 65 20 74 69 6d 65 73 22 0a 20 20 20  three times".   
16cd0 20 2e 74 20 79 76 69 65 77 20 32 2e 30 0a 20 20   .t yview 2.0.  
16ce0 20 20 75 70 64 61 74 65 0a 20 20 20 20 2e 74 20    update.    .t 
16cf0 73 79 6e 63 0a 20 20 20 20 73 65 74 20 78 20 24  sync.    set x $
16d00 73 63 72 6f 6c 6c 49 6e 66 6f 0a 7d 20 7b 30 2e  scrollInfo.} {0.
16d10 30 36 32 35 20 30 2e 36 38 37 35 7d 0a 74 65 73  0625 0.6875}.tes
16d20 74 20 74 65 78 74 44 69 73 70 2d 31 39 2e 39 20  t textDisp-19.9 
16d30 7b 47 65 74 59 56 69 65 77 20 70 72 6f 63 65 64  {GetYView proced
16d40 75 72 65 7d 20 7b 0a 20 20 20 20 2e 74 20 63 6f  ure} {.    .t co
16d50 6e 66 69 67 75 72 65 20 2d 77 72 61 70 20 63 68  nfigure -wrap ch
16d60 61 72 0a 20 20 20 20 2e 74 20 64 65 6c 65 74 65  ar.    .t delete
16d70 20 31 2e 30 20 65 6e 64 0a 20 20 20 20 2e 74 20   1.0 end.    .t 
16d80 69 6e 73 65 72 74 20 31 2e 30 20 22 4c 69 6e 65  insert 1.0 "Line
16d90 20 31 22 0a 20 20 20 20 66 6f 72 65 61 63 68 20   1".    foreach 
16da0 69 20 7b 32 20 33 20 34 20 35 20 36 20 37 20 38  i {2 3 4 5 6 7 8
16db0 20 39 20 31 30 20 31 31 20 31 32 20 31 33 20 31   9 10 11 12 13 1
16dc0 34 20 31 35 7d 20 7b 0a 09 2e 74 20 69 6e 73 65  4 15} {...t inse
16dd0 72 74 20 65 6e 64 20 22 5c 6e 4c 69 6e 65 20 24  rt end "\nLine $
16de0 69 22 0a 20 20 20 20 7d 0a 20 20 20 20 2e 74 20  i".    }.    .t 
16df0 79 76 69 65 77 20 33 2e 30 0a 20 20 20 20 75 70  yview 3.0.    up
16e00 64 61 74 65 0a 20 20 20 20 73 65 74 20 73 63 72  date.    set scr
16e10 6f 6c 6c 49 6e 66 6f 0a 7d 20 5b 6c 69 73 74 20  ollInfo.} [list 
16e20 5b 65 78 70 72 20 7b 34 2e 30 2f 33 30 7d 5d 20  [expr {4.0/30}] 
16e30 30 2e 38 5d 0a 74 65 73 74 20 74 65 78 74 44 69  0.8].test textDi
16e40 73 70 2d 31 39 2e 31 30 20 7b 47 65 74 59 56 69  sp-19.10 {GetYVi
16e50 65 77 20 70 72 6f 63 65 64 75 72 65 7d 20 7b 0a  ew procedure} {.
16e60 20 20 20 20 2e 74 20 63 6f 6e 66 69 67 75 72 65      .t configure
16e70 20 2d 77 72 61 70 20 63 68 61 72 0a 20 20 20 20   -wrap char.    
16e80 2e 74 20 64 65 6c 65 74 65 20 31 2e 30 20 65 6e  .t delete 1.0 en
16e90 64 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20  d.    .t insert 
16ea0 31 2e 30 20 22 4c 69 6e 65 20 31 22 0a 20 20 20  1.0 "Line 1".   
16eb0 20 66 6f 72 65 61 63 68 20 69 20 7b 32 20 33 20   foreach i {2 3 
16ec0 34 20 35 20 36 20 37 20 38 20 39 20 31 30 20 31  4 5 6 7 8 9 10 1
16ed0 31 20 31 32 20 31 33 20 31 34 20 31 35 7d 20 7b  1 12 13 14 15} {
16ee0 0a 09 2e 74 20 69 6e 73 65 72 74 20 65 6e 64 20  ...t insert end 
16ef0 22 5c 6e 4c 69 6e 65 20 24 69 22 0a 20 20 20 20  "\nLine $i".    
16f00 7d 0a 20 20 20 20 2e 74 20 79 76 69 65 77 20 31  }.    .t yview 1
16f10 31 2e 30 0a 20 20 20 20 75 70 64 61 74 65 0a 20  1.0.    update. 
16f20 20 20 20 73 65 74 20 73 63 72 6f 6c 6c 49 6e 66     set scrollInf
16f30 6f 0a 7d 20 5b 6c 69 73 74 20 5b 65 78 70 72 20  o.} [list [expr 
16f40 7b 31 2e 30 2f 33 7d 5d 20 31 2e 30 5d 0a 74 65  {1.0/3}] 1.0].te
16f50 73 74 20 74 65 78 74 44 69 73 70 2d 31 39 2e 31  st textDisp-19.1
16f60 30 2e 31 20 7b 57 69 64 67 65 74 20 6d 61 6e 69  0.1 {Widget mani
16f70 70 75 6c 61 74 69 6f 6e 20 63 61 75 73 65 73 20  pulation causes 
16f80 68 65 69 67 68 74 20 6d 69 73 63 6f 75 6e 74 7d  height miscount}
16f90 20 7b 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69 67   {.    .t config
16fa0 75 72 65 20 2d 77 72 61 70 20 63 68 61 72 0a 20  ure -wrap char. 
16fb0 20 20 20 2e 74 20 64 65 6c 65 74 65 20 31 2e 30     .t delete 1.0
16fc0 20 65 6e 64 0a 20 20 20 20 2e 74 20 69 6e 73 65   end.    .t inse
16fd0 72 74 20 31 2e 30 20 22 4c 69 6e 65 20 31 22 0a  rt 1.0 "Line 1".
16fe0 20 20 20 20 66 6f 72 65 61 63 68 20 69 20 7b 32      foreach i {2
16ff0 20 33 20 34 20 35 20 36 20 37 20 38 20 39 20 31   3 4 5 6 7 8 9 1
17000 30 20 31 31 20 31 32 20 31 33 20 31 34 20 31 35  0 11 12 13 14 15
17010 7d 20 7b 0a 09 2e 74 20 69 6e 73 65 72 74 20 65  } {...t insert e
17020 6e 64 20 22 5c 6e 4c 69 6e 65 20 24 69 22 0a 20  nd "\nLine $i". 
17030 20 20 20 7d 0a 20 20 20 20 2e 74 20 79 76 69 65     }.    .t yvie
17040 77 20 31 31 2e 30 0a 20 20 20 20 75 70 64 61 74  w 11.0.    updat
17050 65 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69 67 75  e.    .t configu
17060 72 65 20 2d 77 72 61 70 20 77 6f 72 64 0a 20 20  re -wrap word.  
17070 20 20 2e 74 20 64 65 6c 65 74 65 20 31 2e 30 20    .t delete 1.0 
17080 65 6e 64 0a 20 20 20 20 2e 74 20 69 6e 73 65 72  end.    .t inser
17090 74 20 31 2e 30 20 22 4c 69 6e 65 20 31 22 0a 20  t 1.0 "Line 1". 
170a0 20 20 20 66 6f 72 65 61 63 68 20 69 20 7b 32 20     foreach i {2 
170b0 33 20 34 20 35 20 36 20 37 20 38 20 39 20 31 30  3 4 5 6 7 8 9 10
170c0 20 31 31 20 31 32 20 31 33 20 31 34 20 31 35 7d   11 12 13 14 15}
170d0 20 7b 0a 09 2e 74 20 69 6e 73 65 72 74 20 65 6e   {...t insert en
170e0 64 20 22 5c 6e 4c 69 6e 65 20 24 69 22 0a 20 20  d "\nLine $i".  
170f0 20 20 7d 0a 20 20 20 20 2e 74 20 69 6e 73 65 72    }.    .t inser
17100 74 20 65 6e 64 20 22 5c 6e 54 68 69 73 20 6c 61  t end "\nThis la
17110 73 74 20 6c 69 6e 65 20 69 73 20 77 72 61 70 70  st line is wrapp
17120 69 6e 67 20 61 72 6f 75 6e 64 20 66 6f 75 72 20  ing around four 
17130 22 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20  ".    .t insert 
17140 65 6e 64 20 22 74 69 6d 65 73 20 77 69 74 68 20  end "times with 
17150 61 20 62 69 74 20 6c 65 66 74 20 6f 6e 20 74 68  a bit left on th
17160 65 20 6c 61 73 74 20 6c 69 6e 65 2e 22 0a 20 20  e last line.".  
17170 20 20 2e 74 20 79 76 69 65 77 20 69 6e 73 65 72    .t yview inser
17180 74 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20 20  t.    update.   
17190 20 2e 74 20 73 79 6e 63 0a 20 20 20 20 73 65 74   .t sync.    set
171a0 20 73 63 72 6f 6c 6c 49 6e 66 6f 0a 7d 20 7b 30   scrollInfo.} {0
171b0 2e 35 20 31 2e 30 7d 0a 74 65 73 74 20 74 65 78  .5 1.0}.test tex
171c0 74 44 69 73 70 2d 31 39 2e 31 31 20 7b 47 65 74  tDisp-19.11 {Get
171d0 59 56 69 65 77 20 70 72 6f 63 65 64 75 72 65 7d  YView procedure}
171e0 20 7b 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69 67   {.    .t config
171f0 75 72 65 20 2d 77 72 61 70 20 77 6f 72 64 0a 20  ure -wrap word. 
17200 20 20 20 2e 74 20 64 65 6c 65 74 65 20 31 2e 30     .t delete 1.0
17210 20 65 6e 64 0a 20 20 20 20 2e 74 20 69 6e 73 65   end.    .t inse
17220 72 74 20 31 2e 30 20 22 4c 69 6e 65 20 31 22 0a  rt 1.0 "Line 1".
17230 20 20 20 20 66 6f 72 65 61 63 68 20 69 20 7b 32      foreach i {2
17240 20 33 20 34 20 35 20 36 20 37 20 38 20 39 20 31   3 4 5 6 7 8 9 1
17250 30 20 31 31 20 31 32 20 31 33 20 31 34 20 31 35  0 11 12 13 14 15
17260 7d 20 7b 0a 09 2e 74 20 69 6e 73 65 72 74 20 65  } {...t insert e
17270 6e 64 20 22 5c 6e 4c 69 6e 65 20 24 69 22 0a 20  nd "\nLine $i". 
17280 20 20 20 7d 0a 20 20 20 20 2e 74 20 69 6e 73 65     }.    .t inse
17290 72 74 20 65 6e 64 20 22 5c 6e 54 68 69 73 20 6c  rt end "\nThis l
172a0 61 73 74 20 6c 69 6e 65 20 69 73 20 77 72 61 70  ast line is wrap
172b0 70 69 6e 67 20 61 72 6f 75 6e 64 20 66 6f 75 72  ping around four
172c0 20 22 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74   ".    .t insert
172d0 20 65 6e 64 20 22 74 69 6d 65 73 20 77 69 74 68   end "times with
172e0 20 61 20 62 69 74 20 6c 65 66 74 20 6f 6e 20 74   a bit left on t
172f0 68 65 20 6c 61 73 74 20 6c 69 6e 65 2e 22 0a 20  he last line.". 
17300 20 20 20 2e 74 20 79 76 69 65 77 20 69 6e 73 65     .t yview inse
17310 72 74 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20  rt.    update.  
17320 20 20 2e 74 20 73 79 6e 63 0a 20 20 20 20 73 65    .t sync.    se
17330 74 20 73 63 72 6f 6c 6c 49 6e 66 6f 0a 7d 20 7b  t scrollInfo.} {
17340 30 2e 35 20 31 2e 30 7d 0a 74 65 73 74 20 74 65  0.5 1.0}.test te
17350 78 74 44 69 73 70 2d 31 39 2e 31 31 2e 32 20 7b  xtDisp-19.11.2 {
17360 54 65 78 74 57 69 64 67 65 74 43 6d 64 20 70 72  TextWidgetCmd pr
17370 6f 63 65 64 75 72 65 2c 20 22 63 6f 75 6e 74 20  ocedure, "count 
17380 2d 64 69 73 70 6c 61 79 6c 69 6e 65 73 22 7d 20  -displaylines"} 
17390 7b 0a 20 20 20 20 2e 74 20 63 6f 75 6e 74 20 2d  {.    .t count -
173a0 64 69 73 70 6c 61 79 6c 69 6e 65 73 20 31 2e 30  displaylines 1.0
173b0 20 65 6e 64 0a 7d 20 7b 32 30 7d 0a 74 65 73 74   end.} {20}.test
173c0 20 74 65 78 74 44 69 73 70 2d 31 39 2e 31 31 2e   textDisp-19.11.
173d0 33 20 7b 54 65 78 74 57 69 64 67 65 74 43 6d 64  3 {TextWidgetCmd
173e0 20 70 72 6f 63 65 64 75 72 65 2c 20 22 63 6f 75   procedure, "cou
173f0 6e 74 20 2d 64 69 73 70 6c 61 79 6c 69 6e 65 73  nt -displaylines
17400 22 7d 20 7b 0a 20 20 20 20 2e 74 20 63 6f 75 6e  "} {.    .t coun
17410 74 20 2d 64 69 73 70 6c 61 79 6c 69 6e 65 73 20  t -displaylines 
17420 65 6e 64 20 31 2e 30 0a 7d 20 7b 2d 32 30 7d 0a  end 1.0.} {-20}.
17430 74 65 73 74 20 74 65 78 74 44 69 73 70 2d 31 39  test textDisp-19
17440 2e 31 31 2e 34 20 7b 54 65 78 74 57 69 64 67 65  .11.4 {TextWidge
17450 74 43 6d 64 20 70 72 6f 63 65 64 75 72 65 2c 20  tCmd procedure, 
17460 22 63 6f 75 6e 74 20 2d 64 69 73 70 6c 61 79 6c  "count -displayl
17470 69 6e 65 73 22 7d 20 7b 0a 20 20 20 20 2e 74 20  ines"} {.    .t 
17480 63 6f 75 6e 74 20 2d 64 69 73 70 6c 61 79 6c 69  count -displayli
17490 6e 65 73 20 31 2e 31 20 31 2e 33 0a 7d 20 7b 30  nes 1.1 1.3.} {0
174a0 7d 0a 74 65 73 74 20 74 65 78 74 44 69 73 70 2d  }.test textDisp-
174b0 31 39 2e 31 31 2e 35 20 7b 54 65 78 74 57 69 64  19.11.5 {TextWid
174c0 67 65 74 43 6d 64 20 70 72 6f 63 65 64 75 72 65  getCmd procedure
174d0 2c 20 22 63 6f 75 6e 74 20 2d 64 69 73 70 6c 61  , "count -displa
174e0 79 6c 69 6e 65 73 22 7d 20 7b 0a 20 20 20 20 2e  ylines"} {.    .
174f0 74 20 63 6f 75 6e 74 20 2d 64 69 73 70 6c 61 79  t count -display
17500 6c 69 6e 65 73 20 31 36 2e 30 20 31 36 2e 31 0a  lines 16.0 16.1.
17510 7d 20 7b 30 7d 0a 74 65 73 74 20 74 65 78 74 44  } {0}.test textD
17520 69 73 70 2d 31 39 2e 31 31 2e 35 2e 31 20 7b 54  isp-19.11.5.1 {T
17530 65 78 74 57 69 64 67 65 74 43 6d 64 20 70 72 6f  extWidgetCmd pro
17540 63 65 64 75 72 65 2c 20 22 63 6f 75 6e 74 20 2d  cedure, "count -
17550 64 69 73 70 6c 61 79 6c 69 6e 65 73 22 7d 20 7b  displaylines"} {
17560 0a 20 20 20 20 2e 74 20 63 6f 75 6e 74 20 2d 64  .    .t count -d
17570 69 73 70 6c 61 79 6c 69 6e 65 73 20 31 36 2e 30  isplaylines 16.0
17580 20 31 36 2e 35 0a 7d 20 7b 30 7d 0a 74 65 73 74   16.5.} {0}.test
17590 20 74 65 78 74 44 69 73 70 2d 31 39 2e 31 31 2e   textDisp-19.11.
175a0 36 20 7b 54 65 78 74 57 69 64 67 65 74 43 6d 64  6 {TextWidgetCmd
175b0 20 70 72 6f 63 65 64 75 72 65 2c 20 22 63 6f 75   procedure, "cou
175c0 6e 74 20 2d 64 69 73 70 6c 61 79 6c 69 6e 65 73  nt -displaylines
175d0 22 7d 20 7b 0a 20 20 20 20 2e 74 20 63 6f 75 6e  "} {.    .t coun
175e0 74 20 2d 64 69 73 70 6c 61 79 6c 69 6e 65 73 20  t -displaylines 
175f0 31 36 2e 30 20 31 36 2e 32 30 0a 7d 20 7b 31 7d  16.0 16.20.} {1}
17600 0a 74 65 73 74 20 74 65 78 74 44 69 73 70 2d 31  .test textDisp-1
17610 39 2e 31 31 2e 37 20 7b 54 65 78 74 57 69 64 67  9.11.7 {TextWidg
17620 65 74 43 6d 64 20 70 72 6f 63 65 64 75 72 65 2c  etCmd procedure,
17630 20 22 63 6f 75 6e 74 20 2d 64 69 73 70 6c 61 79   "count -display
17640 6c 69 6e 65 73 22 7d 20 7b 0a 20 20 20 20 2e 74  lines"} {.    .t
17650 20 63 6f 75 6e 74 20 2d 64 69 73 70 6c 61 79 6c   count -displayl
17660 69 6e 65 73 20 31 36 2e 30 20 31 36 2e 34 30 0a  ines 16.0 16.40.
17670 7d 20 7b 32 7d 0a 74 65 73 74 20 74 65 78 74 44  } {2}.test textD
17680 69 73 70 2d 31 39 2e 31 31 2e 38 20 7b 54 65 78  isp-19.11.8 {Tex
17690 74 57 69 64 67 65 74 43 6d 64 20 70 72 6f 63 65  tWidgetCmd proce
176a0 64 75 72 65 2c 20 22 63 6f 75 6e 74 20 2d 64 69  dure, "count -di
176b0 73 70 6c 61 79 6c 69 6e 65 73 22 7d 20 7b 0a 20  splaylines"} {. 
176c0 20 20 20 2e 74 20 63 6f 75 6e 74 20 2d 64 69 73     .t count -dis
176d0 70 6c 61 79 6c 69 6e 65 73 20 22 31 36 2e 30 20  playlines "16.0 
176e0 64 69 73 70 6c 61 79 6c 69 6e 65 65 6e 64 20 2b  displaylineend +
176f0 31 63 22 20 22 31 36 2e 30 20 6c 69 6e 65 65 6e  1c" "16.0 lineen
17700 64 22 0a 7d 20 7b 33 7d 0a 74 65 73 74 20 74 65  d".} {3}.test te
17710 78 74 44 69 73 70 2d 31 39 2e 31 31 2e 39 20 7b  xtDisp-19.11.9 {
17720 54 65 78 74 57 69 64 67 65 74 43 6d 64 20 70 72  TextWidgetCmd pr
17730 6f 63 65 64 75 72 65 2c 20 22 63 6f 75 6e 74 20  ocedure, "count 
17740 2d 64 69 73 70 6c 61 79 6c 69 6e 65 73 22 7d 20  -displaylines"} 
17750 7b 0a 20 20 20 20 2e 74 20 63 6f 75 6e 74 20 2d  {.    .t count -
17760 64 69 73 70 6c 61 79 6c 69 6e 65 73 20 31 36 2e  displaylines 16.
17770 30 20 22 31 36 2e 30 20 6c 69 6e 65 65 6e 64 22  0 "16.0 lineend"
17780 0a 7d 20 7b 34 7d 0a 74 65 73 74 20 74 65 78 74  .} {4}.test text
17790 44 69 73 70 2d 31 39 2e 31 31 2e 31 30 20 7b 54  Disp-19.11.10 {T
177a0 65 78 74 57 69 64 67 65 74 43 6d 64 20 70 72 6f  extWidgetCmd pro
177b0 63 65 64 75 72 65 2c 20 22 63 6f 75 6e 74 20 2d  cedure, "count -
177c0 64 69 73 70 6c 61 79 6c 69 6e 65 73 22 7d 20 7b  displaylines"} {
177d0 0a 20 20 20 20 2e 74 20 63 6f 75 6e 74 20 2d 64  .    .t count -d
177e0 69 73 70 6c 61 79 6c 69 6e 65 73 20 31 36 2e 30  isplaylines 16.0
177f0 20 22 31 36 2e 30 20 2b 34 64 69 73 70 6c 61 79   "16.0 +4display
17800 6c 69 6e 65 73 22 0a 7d 20 7b 34 7d 0a 74 65 73  lines".} {4}.tes
17810 74 20 74 65 78 74 44 69 73 70 2d 31 39 2e 31 31  t textDisp-19.11
17820 2e 31 31 20 7b 54 65 78 74 57 69 64 67 65 74 43  .11 {TextWidgetC
17830 6d 64 20 70 72 6f 63 65 64 75 72 65 2c 20 22 63  md procedure, "c
17840 6f 75 6e 74 20 2d 64 69 73 70 6c 61 79 6c 69 6e  ount -displaylin
17850 65 73 22 7d 20 7b 0a 20 20 20 20 2e 74 20 63 6f  es"} {.    .t co
17860 75 6e 74 20 2d 64 69 73 70 6c 61 79 6c 69 6e 65  unt -displayline
17870 73 20 31 36 2e 30 20 22 31 36 2e 30 20 2b 32 64  s 16.0 "16.0 +2d
17880 69 73 70 6c 61 79 6c 69 6e 65 73 22 0a 7d 20 7b  isplaylines".} {
17890 32 7d 0a 74 65 73 74 20 74 65 78 74 44 69 73 70  2}.test textDisp
178a0 2d 31 39 2e 31 31 2e 31 32 20 7b 54 65 78 74 57  -19.11.12 {TextW
178b0 69 64 67 65 74 43 6d 64 20 70 72 6f 63 65 64 75  idgetCmd procedu
178c0 72 65 2c 20 22 63 6f 75 6e 74 20 2d 64 69 73 70  re, "count -disp
178d0 6c 61 79 6c 69 6e 65 73 22 7d 20 7b 0a 20 20 20  laylines"} {.   
178e0 20 2e 74 20 63 6f 75 6e 74 20 2d 64 69 73 70 6c   .t count -displ
178f0 61 79 6c 69 6e 65 73 20 22 31 36 2e 30 20 2b 31  aylines "16.0 +1
17900 64 69 73 70 6c 61 79 6c 69 6e 65 22 20 22 31 36  displayline" "16
17910 2e 30 20 2b 32 64 69 73 70 6c 61 79 6c 69 6e 65  .0 +2displayline
17920 73 20 2d 31 63 22 0a 7d 20 7b 30 7d 0a 2e 74 20  s -1c".} {0}..t 
17930 74 61 67 20 63 6f 6e 66 69 67 75 72 65 20 65 6c  tag configure el
17940 69 64 65 20 2d 65 6c 69 64 65 20 31 0a 74 65 73  ide -elide 1.tes
17950 74 20 74 65 78 74 44 69 73 70 2d 31 39 2e 31 31  t textDisp-19.11
17960 2e 31 33 20 7b 54 65 78 74 57 69 64 67 65 74 43  .13 {TextWidgetC
17970 6d 64 20 70 72 6f 63 65 64 75 72 65 2c 20 22 63  md procedure, "c
17980 6f 75 6e 74 20 2d 64 69 73 70 6c 61 79 6c 69 6e  ount -displaylin
17990 65 73 22 7d 20 7b 0a 20 20 20 20 2e 74 20 74 61  es"} {.    .t ta
179a0 67 20 72 65 6d 6f 76 65 20 65 6c 69 64 65 20 31  g remove elide 1
179b0 2e 30 20 65 6e 64 0a 20 20 20 20 2e 74 20 74 61  .0 end.    .t ta
179c0 67 20 61 64 64 20 65 6c 69 64 65 20 22 31 36 2e  g add elide "16.
179d0 30 20 2b 31 64 69 73 70 6c 61 79 6c 69 6e 65 73  0 +1displaylines
179e0 22 20 22 31 36 2e 30 20 2b 31 64 69 73 70 6c 61  " "16.0 +1displa
179f0 79 6c 69 6e 65 73 20 2b 36 63 22 0a 20 20 20 20  ylines +6c".    
17a00 2e 74 20 63 6f 75 6e 74 20 2d 64 69 73 70 6c 61  .t count -displa
17a10 79 6c 69 6e 65 73 20 31 36 2e 30 20 22 31 36 2e  ylines 16.0 "16.
17a20 30 20 2b 34 64 69 73 70 6c 61 79 6c 69 6e 65 73  0 +4displaylines
17a30 22 0a 7d 20 7b 34 7d 0a 74 65 73 74 20 74 65 78  ".} {4}.test tex
17a40 74 44 69 73 70 2d 31 39 2e 31 31 2e 31 34 20 7b  tDisp-19.11.14 {
17a50 54 65 78 74 57 69 64 67 65 74 43 6d 64 20 70 72  TextWidgetCmd pr
17a60 6f 63 65 64 75 72 65 2c 20 22 63 6f 75 6e 74 20  ocedure, "count 
17a70 2d 64 69 73 70 6c 61 79 6c 69 6e 65 73 22 7d 20  -displaylines"} 
17a80 7b 0a 20 20 20 20 2e 74 20 74 61 67 20 72 65 6d  {.    .t tag rem
17a90 6f 76 65 20 65 6c 69 64 65 20 31 2e 30 20 65 6e  ove elide 1.0 en
17aa0 64 0a 20 20 20 20 2e 74 20 74 61 67 20 61 64 64  d.    .t tag add
17ab0 20 65 6c 69 64 65 20 22 31 36 2e 30 20 2b 31 64   elide "16.0 +1d
17ac0 69 73 70 6c 61 79 6c 69 6e 65 73 22 20 22 31 36  isplaylines" "16
17ad0 2e 30 20 2b 31 64 69 73 70 6c 61 79 6c 69 6e 65  .0 +1displayline
17ae0 73 20 64 69 73 70 6c 61 79 6c 69 6e 65 65 6e 64  s displaylineend
17af0 22 0a 20 20 20 20 2e 74 20 63 6f 75 6e 74 20 2d  ".    .t count -
17b00 64 69 73 70 6c 61 79 6c 69 6e 65 73 20 31 36 2e  displaylines 16.
17b10 30 20 22 31 36 2e 30 20 2b 34 64 69 73 70 6c 61  0 "16.0 +4displa
17b20 79 6c 69 6e 65 73 22 0a 7d 20 7b 34 7d 0a 74 65  ylines".} {4}.te
17b30 73 74 20 74 65 78 74 44 69 73 70 2d 31 39 2e 31  st textDisp-19.1
17b40 31 2e 31 35 20 7b 54 65 78 74 57 69 64 67 65 74  1.15 {TextWidget
17b50 43 6d 64 20 70 72 6f 63 65 64 75 72 65 2c 20 22  Cmd procedure, "
17b60 63 6f 75 6e 74 20 2d 64 69 73 70 6c 61 79 6c 69  count -displayli
17b70 6e 65 73 22 7d 20 7b 0a 20 20 20 20 2e 74 20 74  nes"} {.    .t t
17b80 61 67 20 72 65 6d 6f 76 65 20 65 6c 69 64 65 20  ag remove elide 
17b90 31 2e 30 20 65 6e 64 0a 20 20 20 20 2e 74 20 74  1.0 end.    .t t
17ba0 61 67 20 61 64 64 20 65 6c 69 64 65 20 22 31 36  ag add elide "16
17bb0 2e 30 20 2b 31 64 69 73 70 6c 61 79 6c 69 6e 65  .0 +1displayline
17bc0 73 22 20 22 31 36 2e 30 20 2b 32 64 69 73 70 6c  s" "16.0 +2displ
17bd0 61 79 6c 69 6e 65 73 22 0a 20 20 20 20 2e 74 20  aylines".    .t 
17be0 63 6f 75 6e 74 20 2d 64 69 73 70 6c 61 79 6c 69  count -displayli
17bf0 6e 65 73 20 31 36 2e 30 20 22 31 36 2e 30 20 2b  nes 16.0 "16.0 +
17c00 34 64 69 73 70 6c 61 79 6c 69 6e 65 73 20 2d 31  4displaylines -1
17c10 63 22 0a 7d 20 7b 33 7d 0a 74 65 73 74 20 74 65  c".} {3}.test te
17c20 78 74 44 69 73 70 2d 31 39 2e 31 31 2e 31 35 61  xtDisp-19.11.15a
17c30 20 7b 54 65 78 74 57 69 64 67 65 74 43 6d 64 20   {TextWidgetCmd 
17c40 70 72 6f 63 65 64 75 72 65 2c 20 22 63 6f 75 6e  procedure, "coun
17c50 74 20 2d 64 69 73 70 6c 61 79 6c 69 6e 65 73 22  t -displaylines"
17c60 7d 20 7b 0a 20 20 20 20 2e 74 20 74 61 67 20 72  } {.    .t tag r
17c70 65 6d 6f 76 65 20 65 6c 69 64 65 20 31 2e 30 20  emove elide 1.0 
17c80 65 6e 64 0a 20 20 20 20 2e 74 20 74 61 67 20 61  end.    .t tag a
17c90 64 64 20 65 6c 69 64 65 20 22 31 36 2e 30 20 2b  dd elide "16.0 +
17ca0 31 64 69 73 70 6c 61 79 6c 69 6e 65 73 22 20 22  1displaylines" "
17cb0 31 36 2e 30 20 2b 32 64 69 73 70 6c 61 79 6c 69  16.0 +2displayli
17cc0 6e 65 73 22 0a 20 20 20 20 2e 74 20 63 6f 75 6e  nes".    .t coun
17cd0 74 20 2d 64 69 73 70 6c 61 79 6c 69 6e 65 73 20  t -displaylines 
17ce0 31 36 2e 30 20 22 31 36 2e 30 20 2b 34 64 69 73  16.0 "16.0 +4dis
17cf0 70 6c 61 79 6c 69 6e 65 73 22 0a 7d 20 7b 34 7d  playlines".} {4}
17d00 0a 74 65 73 74 20 74 65 78 74 44 69 73 70 2d 31  .test textDisp-1
17d10 39 2e 31 31 2e 31 36 20 7b 54 65 78 74 57 69 64  9.11.16 {TextWid
17d20 67 65 74 43 6d 64 20 70 72 6f 63 65 64 75 72 65  getCmd procedure
17d30 2c 20 22 63 6f 75 6e 74 20 2d 64 69 73 70 6c 61  , "count -displa
17d40 79 6c 69 6e 65 73 22 7d 20 7b 0a 20 20 20 20 2e  ylines"} {.    .
17d50 74 20 74 61 67 20 72 65 6d 6f 76 65 20 65 6c 69  t tag remove eli
17d60 64 65 20 31 2e 30 20 65 6e 64 0a 20 20 20 20 2e  de 1.0 end.    .
17d70 74 20 74 61 67 20 61 64 64 20 65 6c 69 64 65 20  t tag add elide 
17d80 22 31 32 2e 30 22 20 22 31 34 2e 30 22 0a 20 20  "12.0" "14.0".  
17d90 20 20 2e 74 20 63 6f 75 6e 74 20 2d 64 69 73 70    .t count -disp
17da0 6c 61 79 6c 69 6e 65 73 20 31 32 2e 30 20 31 36  laylines 12.0 16
17db0 2e 30 0a 7d 20 7b 32 7d 0a 74 65 73 74 20 74 65  .0.} {2}.test te
17dc0 78 74 44 69 73 70 2d 31 39 2e 31 31 2e 31 37 20  xtDisp-19.11.17 
17dd0 7b 54 65 78 74 57 69 64 67 65 74 43 6d 64 20 70  {TextWidgetCmd p
17de0 72 6f 63 65 64 75 72 65 2c 20 22 69 6e 64 65 78  rocedure, "index
17df0 20 2b 64 69 73 70 6c 61 79 6c 69 6e 65 73 22 7d   +displaylines"}
17e00 20 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20 74 65   -constraints te
17e10 78 74 66 6f 6e 74 73 20 2d 62 6f 64 79 20 7b 0a  xtfonts -body {.
17e20 20 20 20 20 2e 74 20 74 61 67 20 72 65 6d 6f 76      .t tag remov
17e30 65 20 65 6c 69 64 65 20 31 2e 30 20 65 6e 64 0a  e elide 1.0 end.
17e40 20 20 20 20 2e 74 20 74 61 67 20 61 64 64 20 65      .t tag add e
17e50 6c 69 64 65 20 22 31 32 2e 30 22 20 22 31 34 2e  lide "12.0" "14.
17e60 30 22 0a 20 20 20 20 6c 69 73 74 20 5b 2e 74 20  0".    list [.t 
17e70 69 6e 64 65 78 20 22 31 31 2e 35 20 2b 32 64 20  index "11.5 +2d 
17e80 6c 69 6e 65 73 22 5d 20 5c 0a 20 20 20 20 20 20  lines"] \.      
17e90 5b 2e 74 20 69 6e 64 65 78 20 22 31 32 2e 30 20  [.t index "12.0 
17ea0 2b 32 64 20 6c 69 6e 65 73 22 5d 20 5b 2e 74 20  +2d lines"] [.t 
17eb0 69 6e 64 65 78 20 22 31 31 2e 30 20 2b 32 64 20  index "11.0 +2d 
17ec0 6c 69 6e 65 73 22 5d 20 5c 0a 20 20 20 20 20 20  lines"] \.      
17ed0 5b 2e 74 20 69 6e 64 65 78 20 22 31 33 2e 30 20  [.t index "13.0 
17ee0 2b 32 64 20 6c 69 6e 65 73 22 5d 20 5b 2e 74 20  +2d lines"] [.t 
17ef0 69 6e 64 65 78 20 22 31 33 2e 31 20 2b 33 64 20  index "13.1 +3d 
17f00 6c 69 6e 65 73 22 5d 20 5c 0a 20 20 20 20 20 20  lines"] \.      
17f10 5b 2e 74 20 69 6e 64 65 78 20 22 31 33 2e 30 20  [.t index "13.0 
17f20 2b 34 64 20 6c 69 6e 65 73 22 5d 0a 7d 20 2d 72  +4d lines"].} -r
17f30 65 73 75 6c 74 20 7b 31 35 2e 35 20 31 36 2e 30  esult {15.5 16.0
17f40 20 31 35 2e 30 20 31 36 2e 30 20 31 36 2e 31 38   15.0 16.0 16.18
17f50 20 31 36 2e 33 39 7d 0a 74 65 73 74 20 74 65 78   16.39}.test tex
17f60 74 44 69 73 70 2d 31 39 2e 31 31 2e 31 38 20 7b  tDisp-19.11.18 {
17f70 54 65 78 74 57 69 64 67 65 74 43 6d 64 20 70 72  TextWidgetCmd pr
17f80 6f 63 65 64 75 72 65 2c 20 22 69 6e 64 65 78 20  ocedure, "index 
17f90 2b 64 69 73 70 6c 61 79 6c 69 6e 65 73 22 7d 20  +displaylines"} 
17fa0 7b 0a 20 20 20 20 2e 74 20 74 61 67 20 72 65 6d  {.    .t tag rem
17fb0 6f 76 65 20 65 6c 69 64 65 20 31 2e 30 20 65 6e  ove elide 1.0 en
17fc0 64 0a 20 20 20 20 2e 74 20 74 61 67 20 61 64 64  d.    .t tag add
17fd0 20 65 6c 69 64 65 20 22 31 32 2e 30 22 20 22 31   elide "12.0" "1
17fe0 34 2e 30 22 0a 20 20 20 20 6c 69 73 74 20 5b 2e  4.0".    list [.
17ff0 74 20 69 6e 64 65 78 20 22 31 35 2e 35 20 2d 32  t index "15.5 -2
18000 64 20 6c 69 6e 65 73 22 5d 20 5c 0a 20 20 20 20  d lines"] \.    
18010 20 20 5b 2e 74 20 69 6e 64 65 78 20 22 31 36 2e    [.t index "16.
18020 30 20 2d 32 64 20 6c 69 6e 65 73 22 5d 20 5b 2e  0 -2d lines"] [.
18030 74 20 69 6e 64 65 78 20 22 31 35 2e 30 20 2d 32  t index "15.0 -2
18040 64 20 6c 69 6e 65 73 22 5d 20 5c 0a 20 20 20 20  d lines"] \.    
18050 20 20 5b 2e 74 20 69 6e 64 65 78 20 22 31 36 2e    [.t index "16.
18060 30 20 2d 33 64 20 6c 69 6e 65 73 22 5d 20 5b 2e  0 -3d lines"] [.
18070 74 20 69 6e 64 65 78 20 22 31 36 2e 32 30 20 2d  t index "16.20 -
18080 34 64 20 6c 69 6e 65 73 22 5d 20 5c 0a 20 20 20  4d lines"] \.   
18090 20 20 20 5b 2e 74 20 69 6e 64 65 78 20 22 31 36     [.t index "16
180a0 2e 34 32 20 2d 35 64 20 6c 69 6e 65 73 22 5d 0a  .42 -5d lines"].
180b0 7d 20 7b 31 31 2e 35 20 31 34 2e 30 20 31 31 2e  } {11.5 14.0 11.
180c0 30 20 31 31 2e 30 20 31 31 2e 32 20 31 31 2e 33  0 11.0 11.2 11.3
180d0 7d 0a 74 65 73 74 20 74 65 78 74 44 69 73 70 2d  }.test textDisp-
180e0 31 39 2e 31 31 2e 31 39 20 7b 54 65 78 74 57 69  19.11.19 {TextWi
180f0 64 67 65 74 43 6d 64 20 70 72 6f 63 65 64 75 72  dgetCmd procedur
18100 65 2c 20 22 63 6f 75 6e 74 20 2d 64 69 73 70 6c  e, "count -displ
18110 61 79 6c 69 6e 65 73 22 7d 20 7b 0a 20 20 20 20  aylines"} {.    
18120 2e 74 20 74 61 67 20 72 65 6d 6f 76 65 20 65 6c  .t tag remove el
18130 69 64 65 20 31 2e 30 20 65 6e 64 0a 20 20 20 20  ide 1.0 end.    
18140 2e 74 20 74 61 67 20 61 64 64 20 65 6c 69 64 65  .t tag add elide
18150 20 22 31 32 2e 30 22 20 22 31 36 2e 30 20 2b 31   "12.0" "16.0 +1
18160 64 69 73 70 6c 61 79 6c 69 6e 65 73 22 0a 20 20  displaylines".  
18170 20 20 2e 74 20 63 6f 75 6e 74 20 2d 64 69 73 70    .t count -disp
18180 6c 61 79 6c 69 6e 65 73 20 31 32 2e 30 20 31 37  laylines 12.0 17
18190 2e 30 0a 7d 20 7b 34 7d 0a 74 65 73 74 20 74 65  .0.} {4}.test te
181a0 78 74 44 69 73 70 2d 31 39 2e 31 31 2e 32 30 20  xtDisp-19.11.20 
181b0 7b 54 65 78 74 57 69 64 67 65 74 43 6d 64 20 70  {TextWidgetCmd p
181c0 72 6f 63 65 64 75 72 65 2c 20 22 69 6e 64 65 78  rocedure, "index
181d0 20 2b 64 69 73 70 6c 61 79 6c 69 6e 65 73 22 7d   +displaylines"}
181e0 20 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20 74 65   -constraints te
181f0 78 74 66 6f 6e 74 73 20 2d 62 6f 64 79 20 7b 0a  xtfonts -body {.
18200 20 20 20 20 2e 74 20 74 61 67 20 72 65 6d 6f 76      .t tag remov
18210 65 20 65 6c 69 64 65 20 31 2e 30 20 65 6e 64 0a  e elide 1.0 end.
18220 20 20 20 20 2e 74 20 74 61 67 20 61 64 64 20 65      .t tag add e
18230 6c 69 64 65 20 22 31 32 2e 30 22 20 22 31 36 2e  lide "12.0" "16.
18240 30 20 2b 31 64 69 73 70 6c 61 79 6c 69 6e 65 73  0 +1displaylines
18250 22 0a 20 20 20 20 6c 69 73 74 20 5b 2e 74 20 69  ".    list [.t i
18260 6e 64 65 78 20 22 31 31 2e 35 20 2b 32 64 20 6c  ndex "11.5 +2d l
18270 69 6e 65 73 22 5d 20 5c 0a 20 20 20 20 20 20 5b  ines"] \.      [
18280 2e 74 20 69 6e 64 65 78 20 22 31 32 2e 30 20 2b  .t index "12.0 +
18290 32 64 20 6c 69 6e 65 73 22 5d 20 5b 2e 74 20 69  2d lines"] [.t i
182a0 6e 64 65 78 20 22 31 31 2e 30 20 2b 32 64 20 6c  ndex "11.0 +2d l
182b0 69 6e 65 73 22 5d 20 5c 0a 20 20 20 20 20 20 5b  ines"] \.      [
182c0 2e 74 20 69 6e 64 65 78 20 22 31 33 2e 30 20 2b  .t index "13.0 +
182d0 32 64 20 6c 69 6e 65 73 22 5d 20 5b 2e 74 20 69  2d lines"] [.t i
182e0 6e 64 65 78 20 22 31 33 2e 30 20 2b 33 64 20 6c  ndex "13.0 +3d l
182f0 69 6e 65 73 22 5d 20 5c 0a 20 20 20 20 20 20 5b  ines"] \.      [
18300 2e 74 20 69 6e 64 65 78 20 22 31 33 2e 30 20 2b  .t index "13.0 +
18310 34 64 20 6c 69 6e 65 73 22 5d 0a 7d 20 2d 72 65  4d lines"].} -re
18320 73 75 6c 74 20 7b 31 36 2e 34 34 20 31 36 2e 35  sult {16.44 16.5
18330 36 20 31 36 2e 33 39 20 31 36 2e 35 36 20 31 36  6 16.39 16.56 16
18340 2e 37 33 20 31 37 2e 30 7d 0a 74 65 73 74 20 74  .73 17.0}.test t
18350 65 78 74 44 69 73 70 2d 31 39 2e 31 31 2e 32 31  extDisp-19.11.21
18360 20 7b 54 65 78 74 57 69 64 67 65 74 43 6d 64 20   {TextWidgetCmd 
18370 70 72 6f 63 65 64 75 72 65 2c 20 22 69 6e 64 65  procedure, "inde
18380 78 20 2b 64 69 73 70 6c 61 79 6c 69 6e 65 73 22  x +displaylines"
18390 7d 20 7b 0a 20 20 20 20 2e 74 20 74 61 67 20 72  } {.    .t tag r
183a0 65 6d 6f 76 65 20 65 6c 69 64 65 20 31 2e 30 20  emove elide 1.0 
183b0 65 6e 64 0a 20 20 20 20 2e 74 20 74 61 67 20 61  end.    .t tag a
183c0 64 64 20 65 6c 69 64 65 20 22 31 32 2e 30 22 20  dd elide "12.0" 
183d0 22 31 36 2e 30 20 2b 31 64 69 73 70 6c 61 79 6c  "16.0 +1displayl
183e0 69 6e 65 73 22 0a 20 20 20 20 6c 69 73 74 20 5b  ines".    list [
183f0 2e 74 20 69 6e 64 65 78 20 22 31 36 2e 34 34 20  .t index "16.44 
18400 2d 32 64 20 6c 69 6e 65 73 22 5d 20 5c 0a 20 20  -2d lines"] \.  
18410 20 20 20 20 5b 2e 74 20 69 6e 64 65 78 20 22 31      [.t index "1
18420 36 2e 35 36 20 2d 33 64 20 6c 69 6e 65 73 22 5d  6.56 -3d lines"]
18430 20 5b 2e 74 20 69 6e 64 65 78 20 22 31 36 2e 33   [.t index "16.3
18440 39 20 2d 32 64 20 6c 69 6e 65 73 22 5d 20 5c 0a  9 -2d lines"] \.
18450 20 20 20 20 20 20 5b 2e 74 20 69 6e 64 65 78 20        [.t index 
18460 22 31 36 2e 35 39 20 2d 34 64 20 6c 69 6e 65 73  "16.59 -4d lines
18470 22 5d 20 5b 2e 74 20 69 6e 64 65 78 20 22 31 36  "] [.t index "16
18480 2e 37 35 20 2d 34 64 20 6c 69 6e 65 73 22 5d 20  .75 -4d lines"] 
18490 5c 0a 20 20 20 20 20 20 5b 2e 74 20 69 6e 64 65  \.      [.t inde
184a0 78 20 22 31 37 2e 37 20 2d 35 64 20 6c 69 6e 65  x "17.7 -5d line
184b0 73 22 5d 0a 7d 20 7b 31 31 2e 35 20 31 31 2e 30  s"].} {11.5 11.0
184c0 20 31 31 2e 30 20 31 30 2e 33 20 31 31 2e 32 20   11.0 10.3 11.2 
184d0 31 31 2e 30 7d 0a 74 65 73 74 20 74 65 78 74 44  11.0}.test textD
184e0 69 73 70 2d 31 39 2e 31 31 2e 32 32 20 7b 54 65  isp-19.11.22 {Te
184f0 78 74 57 69 64 67 65 74 43 6d 64 20 70 72 6f 63  xtWidgetCmd proc
18500 65 64 75 72 65 2c 20 22 69 6e 64 65 78 20 2b 64  edure, "index +d
18510 69 73 70 6c 61 79 6c 69 6e 65 73 22 7d 20 7b 0a  isplaylines"} {.
18520 20 20 20 20 2e 74 20 74 61 67 20 72 65 6d 6f 76      .t tag remov
18530 65 20 65 6c 69 64 65 20 31 2e 30 20 65 6e 64 0a  e elide 1.0 end.
18540 20 20 20 20 6c 69 73 74 20 5b 2e 74 20 69 6e 64      list [.t ind
18550 65 78 20 22 65 6e 64 20 2b 35 64 20 6c 69 6e 65  ex "end +5d line
18560 73 22 5d 20 5c 0a 20 20 20 20 20 20 5b 2e 74 20  s"] \.      [.t 
18570 69 6e 64 65 78 20 22 65 6e 64 20 2d 33 64 20 6c  index "end -3d l
18580 69 6e 65 73 22 5d 20 5b 2e 74 20 69 6e 64 65 78  ines"] [.t index
18590 20 22 31 2e 30 20 2d 32 64 20 6c 69 6e 65 73 22   "1.0 -2d lines"
185a0 5d 20 5c 0a 20 20 20 20 20 20 5b 2e 74 20 69 6e  ] \.      [.t in
185b0 64 65 78 20 22 31 2e 30 20 2b 34 64 20 6c 69 6e  dex "1.0 +4d lin
185c0 65 73 22 5d 20 5b 2e 74 20 69 6e 64 65 78 20 22  es"] [.t index "
185d0 31 2e 30 20 2b 35 30 64 20 6c 69 6e 65 73 22 5d  1.0 +50d lines"]
185e0 20 5c 0a 20 20 20 20 20 20 5b 2e 74 20 69 6e 64   \.      [.t ind
185f0 65 78 20 22 65 6e 64 20 2d 35 30 64 20 6c 69 6e  ex "end -50d lin
18600 65 73 22 5d 0a 7d 20 7b 31 37 2e 30 20 31 36 2e  es"].} {17.0 16.
18610 33 39 20 31 2e 30 20 35 2e 30 20 31 37 2e 30 20  39 1.0 5.0 17.0 
18620 31 2e 30 7d 0a 74 65 73 74 20 74 65 78 74 44 69  1.0}.test textDi
18630 73 70 2d 31 39 2e 31 31 2e 32 33 20 7b 54 65 78  sp-19.11.23 {Tex
18640 74 57 69 64 67 65 74 43 6d 64 20 70 72 6f 63 65  tWidgetCmd proce
18650 64 75 72 65 2c 20 22 69 6e 64 65 78 20 2b 64 69  dure, "index +di
18660 73 70 6c 61 79 6c 69 6e 65 73 22 7d 20 7b 0a 20  splaylines"} {. 
18670 20 20 20 2e 74 20 74 61 67 20 72 65 6d 6f 76 65     .t tag remove
18680 20 65 6c 69 64 65 20 31 2e 30 20 65 6e 64 0a 20   elide 1.0 end. 
18690 20 20 20 2e 74 20 74 61 67 20 61 64 64 20 65 6c     .t tag add el
186a0 69 64 65 20 22 31 32 2e 33 22 20 22 31 36 2e 30  ide "12.3" "16.0
186b0 20 2b 31 64 69 73 70 6c 61 79 6c 69 6e 65 73 22   +1displaylines"
186c0 0a 20 20 20 20 6c 69 73 74 20 5b 2e 74 20 69 6e  .    list [.t in
186d0 64 65 78 20 22 31 31 2e 33 20 2b 31 64 20 6c 69  dex "11.3 +1d li
186e0 6e 65 73 22 5d 20 5b 2e 74 20 69 6e 64 65 78 20  nes"] [.t index 
186f0 22 31 31 2e 37 20 2b 32 64 20 6c 69 6e 65 73 22  "11.7 +2d lines"
18700 5d 20 5c 0a 20 20 20 20 20 20 5b 2e 74 20 69 6e  ] \.      [.t in
18710 64 65 78 20 22 31 32 2e 33 20 2b 31 64 20 6c 69  dex "12.3 +1d li
18720 6e 65 73 22 5d 20 5c 0a 20 20 20 20 20 20 5b 2e  nes"] \.      [.
18730 74 20 69 6e 64 65 78 20 22 31 32 2e 33 20 2b 32  t index "12.3 +2
18740 64 20 6c 69 6e 65 73 22 5d 20 5b 2e 74 20 69 6e  d lines"] [.t in
18750 64 65 78 20 22 31 31 2e 35 20 2b 32 64 20 6c 69  dex "11.5 +2d li
18760 6e 65 73 22 5d 20 5c 0a 20 20 20 20 20 20 5b 2e  nes"] \.      [.
18770 74 20 69 6e 64 65 78 20 22 31 33 2e 30 20 2b 32  t index "13.0 +2
18780 64 20 6c 69 6e 65 73 22 5d 20 5b 2e 74 20 69 6e  d lines"] [.t in
18790 64 65 78 20 22 31 33 2e 30 20 2b 33 64 20 6c 69  dex "13.0 +3d li
187a0 6e 65 73 22 5d 20 5c 0a 20 20 20 20 20 20 5b 2e  nes"] \.      [.
187b0 74 20 69 6e 64 65 78 20 22 31 33 2e 30 20 2b 34  t index "13.0 +4
187c0 64 20 6c 69 6e 65 73 22 5d 0a 7d 20 7b 31 36 2e  d lines"].} {16.
187d0 31 38 20 31 36 2e 34 31 20 31 36 2e 33 37 20 31  18 16.41 16.37 1
187e0 36 2e 35 35 20 31 36 2e 33 39 20 31 36 2e 35 35  6.55 16.39 16.55
187f0 20 31 36 2e 37 36 20 31 37 2e 30 7d 0a 2e 74 20   16.76 17.0}..t 
18800 74 61 67 20 72 65 6d 6f 76 65 20 65 6c 69 64 65  tag remove elide
18810 20 31 2e 30 20 65 6e 64 0a 74 65 73 74 20 74 65   1.0 end.test te
18820 78 74 44 69 73 70 2d 31 39 2e 31 31 2e 32 34 20  xtDisp-19.11.24 
18830 7b 54 65 78 74 57 69 64 67 65 74 43 6d 64 20 70  {TextWidgetCmd p
18840 72 6f 63 65 64 75 72 65 2c 20 22 69 6e 64 65 78  rocedure, "index
18850 20 2b 2f 2d 64 69 73 70 6c 61 79 6c 69 6e 65 73   +/-displaylines
18860 22 7d 20 7b 0a 20 20 20 20 6c 69 73 74 20 5b 2e  "} {.    list [.
18870 74 20 69 6e 64 65 78 20 22 31 31 2e 35 20 2b 20  t index "11.5 + 
18880 2d 31 20 64 69 73 70 6c 61 79 20 6c 69 6e 65 73  -1 display lines
18890 22 5d 20 5c 0a 20 20 20 20 20 20 5b 2e 74 20 69  "] \.      [.t i
188a0 6e 64 65 78 20 22 31 31 2e 35 20 2b 20 2b 31 20  ndex "11.5 + +1 
188b0 64 69 73 70 20 6c 69 6e 65 73 22 5d 20 5c 0a 20  disp lines"] \. 
188c0 20 20 20 20 20 5b 2e 74 20 69 6e 64 65 78 20 22       [.t index "
188d0 31 31 2e 35 20 2d 20 2d 31 20 64 69 73 70 20 6c  11.5 - -1 disp l
188e0 69 6e 65 73 22 5d 20 5c 0a 20 20 20 20 20 20 5b  ines"] \.      [
188f0 2e 74 20 69 6e 64 65 78 20 22 31 31 2e 35 20 2d  .t index "11.5 -
18900 20 2b 31 20 64 69 73 70 20 6c 69 6e 65 73 22 5d   +1 disp lines"]
18910 20 5c 0a 20 20 20 20 20 20 5b 2e 74 20 69 6e 64   \.      [.t ind
18920 65 78 20 22 31 31 2e 35 20 2d 31 20 64 69 73 70  ex "11.5 -1 disp
18930 20 6c 69 6e 65 73 22 5d 20 5c 0a 20 20 20 20 20   lines"] \.     
18940 20 5b 2e 74 20 69 6e 64 65 78 20 22 31 31 2e 35   [.t index "11.5
18950 20 2b 31 20 64 69 73 70 20 6c 69 6e 65 73 22 5d   +1 disp lines"]
18960 20 5c 0a 20 20 20 20 20 20 5b 2e 74 20 69 6e 64   \.      [.t ind
18970 65 78 20 22 31 31 2e 35 20 2b 30 20 64 69 73 70  ex "11.5 +0 disp
18980 20 6c 69 6e 65 73 22 5d 0a 7d 20 7b 31 30 2e 35   lines"].} {10.5
18990 20 31 32 2e 35 20 31 32 2e 35 20 31 30 2e 35 20   12.5 12.5 10.5 
189a0 31 30 2e 35 20 31 32 2e 35 20 31 31 2e 35 7d 0a  10.5 12.5 11.5}.
189b0 2e 74 20 74 61 67 20 72 65 6d 6f 76 65 20 65 6c  .t tag remove el
189c0 69 64 65 20 31 2e 30 20 65 6e 64 0a 74 65 73 74  ide 1.0 end.test
189d0 20 74 65 78 74 44 69 73 70 2d 31 39 2e 31 32 20   textDisp-19.12 
189e0 7b 47 65 74 59 56 69 65 77 20 70 72 6f 63 65 64  {GetYView proced
189f0 75 72 65 2c 20 70 61 72 74 69 61 6c 6c 79 20 76  ure, partially v
18a00 69 73 69 62 6c 65 20 6c 61 73 74 20 6c 69 6e 65  isible last line
18a10 7d 20 7b 0a 20 20 20 20 63 61 74 63 68 20 7b 64  } {.    catch {d
18a20 65 73 74 72 6f 79 20 2e 74 6f 70 7d 0a 20 20 20  estroy .top}.   
18a30 20 74 6f 70 6c 65 76 65 6c 20 2e 74 6f 70 0a 20   toplevel .top. 
18a40 20 20 20 77 6d 20 67 65 6f 6d 65 74 72 79 20 2e     wm geometry .
18a50 74 6f 70 20 2b 30 2b 30 0a 20 20 20 20 74 65 78  top +0+0.    tex
18a60 74 20 2e 74 6f 70 2e 74 20 2d 77 69 64 74 68 20  t .top.t -width 
18a70 34 30 20 2d 68 65 69 67 68 74 20 35 20 2d 66 6f  40 -height 5 -fo
18a80 6e 74 20 24 66 69 78 65 64 46 6f 6e 74 0a 20 20  nt $fixedFont.  
18a90 20 20 70 61 63 6b 20 2e 74 6f 70 2e 74 20 2d 65    pack .top.t -e
18aa0 78 70 61 6e 64 20 79 65 73 20 2d 66 69 6c 6c 20  xpand yes -fill 
18ab0 62 6f 74 68 0a 20 20 20 20 2e 74 6f 70 2e 74 20  both.    .top.t 
18ac0 69 6e 73 65 72 74 20 65 6e 64 20 22 4c 69 6e 65  insert end "Line
18ad0 20 31 5c 6e 4c 69 6e 65 20 32 5c 6e 4c 69 6e 65   1\nLine 2\nLine
18ae0 20 33 5c 6e 4c 69 6e 65 20 34 5c 6e 4c 69 6e 65   3\nLine 4\nLine
18af0 20 35 22 0a 20 20 20 20 23 20 4e 65 65 64 20 74   5".    # Need t
18b00 6f 20 77 61 69 74 20 66 6f 72 20 61 73 79 63 68  o wait for asych
18b10 72 6f 6e 6f 75 73 20 63 61 6c 63 75 6c 61 74 69  ronous calculati
18b20 6f 6e 73 20 74 6f 20 63 6f 6d 70 6c 65 74 65 2e  ons to complete.
18b30 0a 20 20 20 20 75 70 64 61 74 65 20 3b 20 61 66  .    update ; af
18b40 74 65 72 20 31 30 0a 20 20 20 20 73 63 61 6e 20  ter 10.    scan 
18b50 5b 77 6d 20 67 65 6f 6d 20 2e 74 6f 70 5d 20 25  [wm geom .top] %
18b60 64 78 25 64 20 74 77 69 64 74 68 20 74 68 65 69  dx%d twidth thei
18b70 67 68 74 0a 20 20 20 20 77 6d 20 67 65 6f 6d 20  ght.    wm geom 
18b80 2e 74 6f 70 20 24 7b 74 77 69 64 74 68 7d 78 5b  .top ${twidth}x[
18b90 65 78 70 72 20 24 74 68 65 69 67 68 74 20 2d 20  expr $theight - 
18ba0 33 5d 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20  3].    update.  
18bb0 20 20 2e 74 6f 70 2e 74 20 79 76 69 65 77 0a 7d    .top.t yview.}
18bc0 20 5b 6c 69 73 74 20 30 2e 30 20 5b 65 78 70 72   [list 0.0 [expr
18bd0 20 7b 28 35 2e 30 20 2a 20 24 66 69 78 65 64 48   {(5.0 * $fixedH
18be0 65 69 67 68 74 20 2d 20 33 2e 30 29 2f 20 28 35  eight - 3.0)/ (5
18bf0 2e 30 20 2a 20 24 66 69 78 65 64 48 65 69 67 68  .0 * $fixedHeigh
18c00 74 29 7d 5d 5d 0a 0a 74 65 73 74 20 74 65 78 74  t)}]]..test text
18c10 44 69 73 70 2d 31 39 2e 31 33 20 7b 47 65 74 59  Disp-19.13 {GetY
18c20 56 69 65 77 20 70 72 6f 63 65 64 75 72 65 2c 20  View procedure, 
18c30 70 61 72 74 69 61 6c 6c 79 20 76 69 73 69 62 6c  partially visibl
18c40 65 20 6c 61 73 74 20 6c 69 6e 65 7d 20 7b 74 65  e last line} {te
18c50 78 74 66 6f 6e 74 73 7d 20 7b 0a 20 20 20 20 63  xtfonts} {.    c
18c60 61 74 63 68 20 7b 64 65 73 74 72 6f 79 20 2e 74  atch {destroy .t
18c70 6f 70 7d 0a 20 20 20 20 74 6f 70 6c 65 76 65 6c  op}.    toplevel
18c80 20 2e 74 6f 70 0a 20 20 20 20 77 6d 20 67 65 6f   .top.    wm geo
18c90 6d 65 74 72 79 20 2e 74 6f 70 20 2b 30 2b 30 0a  metry .top +0+0.
18ca0 20 20 20 20 74 65 78 74 20 2e 74 6f 70 2e 74 20      text .top.t 
18cb0 2d 77 69 64 74 68 20 34 30 20 2d 68 65 69 67 68  -width 40 -heigh
18cc0 74 20 35 20 2d 66 6f 6e 74 20 24 66 69 78 65 64  t 5 -font $fixed
18cd0 46 6f 6e 74 0a 20 20 20 20 70 61 63 6b 20 2e 74  Font.    pack .t
18ce0 6f 70 2e 74 20 2d 65 78 70 61 6e 64 20 79 65 73  op.t -expand yes
18cf0 20 2d 66 69 6c 6c 20 62 6f 74 68 0a 20 20 20 20   -fill both.    
18d00 2e 74 6f 70 2e 74 20 69 6e 73 65 72 74 20 65 6e  .top.t insert en
18d10 64 20 22 4c 69 6e 65 20 31 5c 6e 4c 69 6e 65 20  d "Line 1\nLine 
18d20 32 5c 6e 4c 69 6e 65 20 33 5c 6e 4c 69 6e 65 20  2\nLine 3\nLine 
18d30 34 20 68 61 73 20 65 6e 6f 75 67 68 20 74 65 78  4 has enough tex
18d40 74 20 74 6f 20 77 72 61 70 20 61 72 6f 75 6e 64  t to wrap around
18d50 20 61 74 20 6c 65 61 73 74 20 6f 6e 63 65 22 0a   at least once".
18d60 20 20 20 20 23 20 4e 65 65 64 20 74 6f 20 77 61      # Need to wa
18d70 69 74 20 66 6f 72 20 61 73 79 63 68 72 6f 6e 6f  it for asychrono
18d80 75 73 20 63 61 6c 63 75 6c 61 74 69 6f 6e 73 20  us calculations 
18d90 74 6f 20 63 6f 6d 70 6c 65 74 65 2e 0a 20 20 20  to complete..   
18da0 20 75 70 64 61 74 65 20 3b 20 61 66 74 65 72 20   update ; after 
18db0 31 30 0a 20 20 20 20 73 63 61 6e 20 5b 77 6d 20  10.    scan [wm 
18dc0 67 65 6f 6d 20 2e 74 6f 70 5d 20 25 64 78 25 64  geom .top] %dx%d
18dd0 20 74 77 69 64 74 68 20 74 68 65 69 67 68 74 0a   twidth theight.
18de0 20 20 20 20 77 6d 20 67 65 6f 6d 20 2e 74 6f 70      wm geom .top
18df0 20 24 7b 74 77 69 64 74 68 7d 78 5b 65 78 70 72   ${twidth}x[expr
18e00 20 24 74 68 65 69 67 68 74 20 2d 20 33 5d 0a 20   $theight - 3]. 
18e10 20 20 20 75 70 64 61 74 65 0a 20 20 20 20 2e 74     update.    .t
18e20 6f 70 2e 74 20 79 76 69 65 77 0a 7d 20 5b 6c 69  op.t yview.} [li
18e30 73 74 20 30 2e 30 20 5b 65 78 70 72 20 7b 28 35  st 0.0 [expr {(5
18e40 2e 30 20 2a 20 24 66 69 78 65 64 48 65 69 67 68  .0 * $fixedHeigh
18e50 74 20 2d 20 33 2e 30 29 20 2f 20 28 35 2e 30 20  t - 3.0) / (5.0 
18e60 2a 20 24 66 69 78 65 64 48 65 69 67 68 74 29 7d  * $fixedHeight)}
18e70 5d 5d 0a 63 61 74 63 68 20 7b 64 65 73 74 72 6f  ]].catch {destro
18e80 79 20 2e 74 6f 70 7d 0a 74 65 73 74 20 74 65 78  y .top}.test tex
18e90 74 44 69 73 70 2d 31 39 2e 31 34 20 7b 47 65 74  tDisp-19.14 {Get
18ea0 59 56 69 65 77 20 70 72 6f 63 65 64 75 72 65 7d  YView procedure}
18eb0 20 7b 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69 67   {.    .t config
18ec0 75 72 65 20 2d 77 72 61 70 20 77 6f 72 64 0a 20  ure -wrap word. 
18ed0 20 20 20 2e 74 20 64 65 6c 65 74 65 20 31 2e 30     .t delete 1.0
18ee0 20 65 6e 64 0a 20 20 20 20 2e 74 20 69 6e 73 65   end.    .t inse
18ef0 72 74 20 31 2e 30 20 22 4c 69 6e 65 20 31 22 0a  rt 1.0 "Line 1".
18f00 20 20 20 20 66 6f 72 65 61 63 68 20 69 20 7b 32      foreach i {2
18f10 20 33 20 34 20 35 20 36 20 37 20 38 20 39 20 31   3 4 5 6 7 8 9 1
18f20 30 20 31 31 20 31 32 20 31 33 20 31 34 20 31 35  0 11 12 13 14 15
18f30 7d 20 7b 0a 09 2e 74 20 69 6e 73 65 72 74 20 65  } {...t insert e
18f40 6e 64 20 22 5c 6e 4c 69 6e 65 20 24 69 22 0a 20  nd "\nLine $i". 
18f50 20 20 20 7d 0a 20 20 20 20 2e 74 20 69 6e 73 65     }.    .t inse
18f60 72 74 20 65 6e 64 20 22 5c 6e 54 68 69 73 20 6c  rt end "\nThis l
18f70 61 73 74 20 6c 69 6e 65 20 69 73 20 77 72 61 70  ast line is wrap
18f80 70 69 6e 67 20 61 72 6f 75 6e 64 20 66 6f 75 72  ping around four
18f90 20 22 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74   ".    .t insert
18fa0 20 65 6e 64 20 22 74 69 6d 65 73 20 77 69 74 68   end "times with
18fb0 20 61 20 62 69 74 20 6c 65 66 74 20 6f 6e 20 74   a bit left on t
18fc0 68 65 20 6c 61 73 74 20 6c 69 6e 65 2e 22 0a 20  he last line.". 
18fd0 20 20 20 23 20 4e 65 65 64 20 74 6f 20 75 70 64     # Need to upd
18fe0 61 74 65 20 73 6f 20 65 76 65 72 79 74 68 69 6e  ate so everythin
18ff0 67 20 69 73 20 63 61 6c 63 75 6c 61 74 65 64 2e  g is calculated.
19000 0a 20 20 20 20 75 70 64 61 74 65 20 3b 20 2e 74  .    update ; .t
19010 20 73 79 6e 63 3b 20 75 70 64 61 74 65 0a 20 20   sync; update.  
19020 20 20 73 65 74 20 73 63 72 6f 6c 6c 49 6e 66 6f    set scrollInfo
19030 20 22 75 6e 63 68 61 6e 67 65 64 22 0a 20 20 20   "unchanged".   
19040 20 2e 74 20 6d 61 72 6b 20 73 65 74 20 69 6e 73   .t mark set ins
19050 65 72 74 20 33 2e 30 0a 20 20 20 20 2e 74 20 74  ert 3.0.    .t t
19060 61 67 20 63 6f 6e 66 69 67 75 72 65 20 78 20 2d  ag configure x -
19070 62 61 63 6b 67 72 6f 75 6e 64 20 72 65 64 0a 20  background red. 
19080 20 20 20 2e 74 20 74 61 67 20 61 64 64 20 78 20     .t tag add x 
19090 31 2e 30 20 35 2e 30 0a 20 20 20 20 75 70 64 61  1.0 5.0.    upda
190a0 74 65 0a 20 20 20 20 2e 74 20 74 61 67 20 64 65  te.    .t tag de
190b0 6c 65 74 65 20 78 0a 20 20 20 20 73 65 74 20 73  lete x.    set s
190c0 63 72 6f 6c 6c 49 6e 66 6f 0a 7d 20 7b 75 6e 63  crollInfo.} {unc
190d0 68 61 6e 67 65 64 7d 0a 74 65 73 74 20 74 65 78  hanged}.test tex
190e0 74 44 69 73 70 2d 31 39 2e 31 35 20 7b 47 65 74  tDisp-19.15 {Get
190f0 59 56 69 65 77 20 70 72 6f 63 65 64 75 72 65 7d  YView procedure}
19100 20 7b 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69 67   {.    .t config
19110 75 72 65 20 2d 77 72 61 70 20 77 6f 72 64 0a 20  ure -wrap word. 
19120 20 20 20 2e 74 20 64 65 6c 65 74 65 20 31 2e 30     .t delete 1.0
19130 20 65 6e 64 0a 20 20 20 20 2e 74 20 69 6e 73 65   end.    .t inse
19140 72 74 20 31 2e 30 20 22 4c 69 6e 65 20 31 22 0a  rt 1.0 "Line 1".
19150 20 20 20 20 66 6f 72 65 61 63 68 20 69 20 7b 32      foreach i {2
19160 20 33 20 34 20 35 20 36 20 37 20 38 20 39 20 31   3 4 5 6 7 8 9 1
19170 30 20 31 31 20 31 32 20 31 33 20 31 34 20 31 35  0 11 12 13 14 15
19180 7d 20 7b 0a 09 2e 74 20 69 6e 73 65 72 74 20 65  } {...t insert e
19190 6e 64 20 22 5c 6e 4c 69 6e 65 20 24 69 22 0a 20  nd "\nLine $i". 
191a0 20 20 20 7d 0a 20 20 20 20 2e 74 20 69 6e 73 65     }.    .t inse
191b0 72 74 20 65 6e 64 20 22 5c 6e 54 68 69 73 20 6c  rt end "\nThis l
191c0 61 73 74 20 6c 69 6e 65 20 69 73 20 77 72 61 70  ast line is wrap
191d0 70 69 6e 67 20 61 72 6f 75 6e 64 20 66 6f 75 72  ping around four
191e0 20 22 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74   ".    .t insert
191f0 20 65 6e 64 20 22 74 69 6d 65 73 20 77 69 74 68   end "times with
19200 20 61 20 62 69 74 20 6c 65 66 74 20 6f 6e 20 74   a bit left on t
19210 68 65 20 6c 61 73 74 20 6c 69 6e 65 2e 22 0a 20  he last line.". 
19220 20 20 20 75 70 64 61 74 65 0a 20 20 20 20 2e 74     update.    .t
19230 20 63 6f 6e 66 69 67 75 72 65 20 2d 79 73 63 72   configure -yscr
19240 6f 6c 6c 63 6f 6d 6d 61 6e 64 20 73 63 72 6f 6c  ollcommand scrol
19250 6c 45 72 72 6f 72 0a 20 20 20 20 70 72 6f 63 20  lError.    proc 
19260 62 67 65 72 72 6f 72 20 61 72 67 73 20 7b 0a 09  bgerror args {..
19270 67 6c 6f 62 61 6c 20 78 20 65 72 72 6f 72 49 6e  global x errorIn
19280 66 6f 20 65 72 72 6f 72 43 6f 64 65 0a 09 73 65  fo errorCode..se
19290 74 20 78 20 5b 6c 69 73 74 20 24 61 72 67 73 20  t x [list $args 
192a0 24 65 72 72 6f 72 49 6e 66 6f 20 24 65 72 72 6f  $errorInfo $erro
192b0 72 43 6f 64 65 5d 0a 20 20 20 20 7d 0a 20 20 20  rCode].    }.   
192c0 20 2e 74 20 64 65 6c 65 74 65 20 31 2e 30 20 65   .t delete 1.0 e
192d0 6e 64 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20  nd.    update.  
192e0 20 20 72 65 6e 61 6d 65 20 62 67 65 72 72 6f 72    rename bgerror
192f0 20 7b 7d 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69   {}.    .t confi
19300 67 75 72 65 20 2d 79 73 63 72 6f 6c 6c 63 6f 6d  gure -yscrollcom
19310 6d 61 6e 64 20 73 63 72 6f 6c 6c 0a 20 20 20 20  mand scroll.    
19320 73 65 74 20 78 0a 7d 20 7b 7b 7b 73 63 72 6f 6c  set x.} {{{scrol
19330 6c 69 6e 67 20 65 72 72 6f 72 7d 7d 20 7b 73 63  ling error}} {sc
19340 72 6f 6c 6c 69 6e 67 20 65 72 72 6f 72 0a 20 20  rolling error.  
19350 20 20 77 68 69 6c 65 20 65 78 65 63 75 74 69 6e    while executin
19360 67 0a 22 65 72 72 6f 72 20 22 73 63 72 6f 6c 6c  g."error "scroll
19370 69 6e 67 20 65 72 72 6f 72 22 22 0a 20 20 20 20  ing error"".    
19380 28 70 72 6f 63 65 64 75 72 65 20 22 73 63 72 6f  (procedure "scro
19390 6c 6c 45 72 72 6f 72 22 20 6c 69 6e 65 20 32 29  llError" line 2)
193a0 0a 20 20 20 20 69 6e 76 6f 6b 65 64 20 66 72 6f  .    invoked fro
193b0 6d 20 77 69 74 68 69 6e 0a 22 73 63 72 6f 6c 6c  m within."scroll
193c0 45 72 72 6f 72 20 30 2e 30 20 31 2e 30 22 0a 20  Error 0.0 1.0". 
193d0 20 20 20 28 76 65 72 74 69 63 61 6c 20 73 63 72     (vertical scr
193e0 6f 6c 6c 69 6e 67 20 63 6f 6d 6d 61 6e 64 20 65  olling command e
193f0 78 65 63 75 74 65 64 20 62 79 20 74 65 78 74 29  xecuted by text)
19400 7d 20 4e 4f 4e 45 7d 0a 2e 74 20 63 6f 6e 66 69  } NONE}..t confi
19410 67 75 72 65 20 2d 79 73 63 72 6f 6c 6c 63 6f 6d  gure -yscrollcom
19420 6d 61 6e 64 20 7b 7d 0a 0a 74 65 73 74 20 74 65  mand {}..test te
19430 78 74 44 69 73 70 2d 31 39 2e 31 36 20 7b 63 6f  xtDisp-19.16 {co
19440 75 6e 74 20 2d 79 70 69 78 65 6c 73 7d 20 7b 0a  unt -ypixels} {.
19450 20 20 20 20 2e 74 20 63 6f 6e 66 69 67 75 72 65      .t configure
19460 20 2d 77 72 61 70 20 77 6f 72 64 0a 20 20 20 20   -wrap word.    
19470 2e 74 20 64 65 6c 65 74 65 20 31 2e 30 20 65 6e  .t delete 1.0 en
19480 64 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20  d.    .t insert 
19490 31 2e 30 20 22 4c 69 6e 65 20 31 22 0a 20 20 20  1.0 "Line 1".   
194a0 20 66 6f 72 65 61 63 68 20 69 20 7b 32 20 33 20   foreach i {2 3 
194b0 34 20 35 20 36 20 37 20 38 20 39 20 31 30 20 31  4 5 6 7 8 9 10 1
194c0 31 20 31 32 20 31 33 20 31 34 20 31 35 7d 20 7b  1 12 13 14 15} {
194d0 0a 09 2e 74 20 69 6e 73 65 72 74 20 65 6e 64 20  ...t insert end 
194e0 22 5c 6e 4c 69 6e 65 20 24 69 22 0a 20 20 20 20  "\nLine $i".    
194f0 7d 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20  }.    .t insert 
19500 65 6e 64 20 22 5c 6e 54 68 69 73 20 6c 61 73 74  end "\nThis last
19510 20 6c 69 6e 65 20 69 73 20 77 72 61 70 70 69 6e   line is wrappin
19520 67 20 61 72 6f 75 6e 64 20 66 6f 75 72 20 22 0a  g around four ".
19530 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20 65 6e      .t insert en
19540 64 20 22 74 69 6d 65 73 20 77 69 74 68 20 61 20  d "times with a 
19550 62 69 74 20 6c 65 66 74 20 6f 6e 20 74 68 65 20  bit left on the 
19560 6c 61 73 74 20 6c 69 6e 65 2e 22 0a 20 20 20 20  last line.".    
19570 23 20 4e 65 65 64 20 74 6f 20 75 70 64 61 74 65  # Need to update
19580 20 73 6f 20 65 76 65 72 79 74 68 69 6e 67 20 69   so everything i
19590 73 20 63 61 6c 63 75 6c 61 74 65 64 2e 0a 20 20  s calculated..  
195a0 20 20 75 70 64 61 74 65 20 3b 20 2e 74 20 73 79    update ; .t sy
195b0 6e 63 3b 20 75 70 64 61 74 65 0a 20 20 20 20 73  nc; update.    s
195c0 65 74 20 72 65 73 20 7b 7d 0a 20 20 20 20 6c 61  et res {}.    la
195d0 70 70 65 6e 64 20 72 65 73 20 5c 0a 20 20 20 20  ppend res \.    
195e0 20 20 5b 2e 74 20 63 6f 75 6e 74 20 2d 79 70 69    [.t count -ypi
195f0 78 65 6c 73 20 31 2e 30 20 65 6e 64 5d 20 5c 0a  xels 1.0 end] \.
19600 20 20 20 20 20 20 5b 2e 74 20 63 6f 75 6e 74 20        [.t count 
19610 2d 75 70 64 61 74 65 20 2d 79 70 69 78 65 6c 73  -update -ypixels
19620 20 31 2e 30 20 65 6e 64 5d 20 5c 0a 20 20 20 20   1.0 end] \.    
19630 20 20 5b 2e 74 20 63 6f 75 6e 74 20 2d 79 70 69    [.t count -ypi
19640 78 65 6c 73 20 31 35 2e 30 20 31 36 2e 30 5d 20  xels 15.0 16.0] 
19650 5c 0a 20 20 20 20 20 20 5b 2e 74 20 63 6f 75 6e  \.      [.t coun
19660 74 20 2d 79 70 69 78 65 6c 73 20 31 35 2e 30 20  t -ypixels 15.0 
19670 22 31 36 2e 30 20 64 69 73 70 6c 61 79 6c 69 6e  "16.0 displaylin
19680 65 65 6e 64 20 2b 31 63 22 5d 20 5c 0a 20 20 20  eend +1c"] \.   
19690 20 20 20 5b 2e 74 20 63 6f 75 6e 74 20 2d 79 70     [.t count -yp
196a0 69 78 65 6c 73 20 31 36 2e 30 20 22 31 36 2e 30  ixels 16.0 "16.0
196b0 20 64 69 73 70 6c 61 79 6c 69 6e 65 65 6e 64 20   displaylineend 
196c0 2b 31 63 22 5d 20 5c 0a 20 20 20 20 20 20 5b 2e  +1c"] \.      [.
196d0 74 20 63 6f 75 6e 74 20 2d 79 70 69 78 65 6c 73  t count -ypixels
196e0 20 22 31 36 2e 30 20 2b 31 20 64 69 73 70 6c 61   "16.0 +1 displa
196f0 79 6c 69 6e 65 73 22 20 22 31 36 2e 30 20 2b 34  ylines" "16.0 +4
19700 20 64 69 73 70 6c 61 79 6c 69 6e 65 73 20 2b 33   displaylines +3
19710 63 22 5d 0a 7d 20 5b 6c 69 73 74 20 5b 65 78 70  c"].} [list [exp
19720 72 20 7b 32 36 30 20 2b 20 32 30 20 2a 20 24 66  r {260 + 20 * $f
19730 69 78 65 64 44 69 66 66 7d 5d 20 5b 65 78 70 72  ixedDiff}] [expr
19740 20 7b 32 36 30 20 2b 20 32 30 20 2a 20 24 66 69   {260 + 20 * $fi
19750 78 65 64 44 69 66 66 7d 5d 20 24 66 69 78 65 64  xedDiff}] $fixed
19760 48 65 69 67 68 74 20 5b 65 78 70 72 20 7b 32 2a  Height [expr {2*
19770 24 66 69 78 65 64 48 65 69 67 68 74 7d 5d 20 24  $fixedHeight}] $
19780 66 69 78 65 64 48 65 69 67 68 74 20 5b 65 78 70  fixedHeight [exp
19790 72 20 7b 33 2a 24 66 69 78 65 64 48 65 69 67 68  r {3*$fixedHeigh
197a0 74 7d 5d 5d 0a 74 65 73 74 20 74 65 78 74 44 69  t}]].test textDi
197b0 73 70 2d 31 39 2e 31 37 20 7b 63 6f 75 6e 74 20  sp-19.17 {count 
197c0 2d 79 70 69 78 65 6c 73 20 77 69 74 68 20 69 6e  -ypixels with in
197d0 64 69 63 65 73 20 69 6e 20 65 6c 69 64 65 64 20  dices in elided 
197e0 6c 69 6e 65 73 7d 20 7b 0a 20 20 20 20 2e 74 20  lines} {.    .t 
197f0 63 6f 6e 66 69 67 75 72 65 20 2d 77 72 61 70 20  configure -wrap 
19800 6e 6f 6e 65 0a 20 20 20 20 2e 74 20 64 65 6c 65  none.    .t dele
19810 74 65 20 31 2e 30 20 65 6e 64 0a 20 20 20 20 66  te 1.0 end.    f
19820 6f 72 20 7b 73 65 74 20 69 20 31 7d 20 7b 24 69  or {set i 1} {$i
19830 20 3c 20 31 30 30 7d 20 7b 69 6e 63 72 20 69 7d   < 100} {incr i}
19840 20 7b 0a 20 20 20 20 20 20 20 20 2e 74 20 69 6e   {.        .t in
19850 73 65 72 74 20 65 6e 64 20 5b 73 74 72 69 6e 67  sert end [string
19860 20 72 65 70 65 61 74 20 22 4c 69 6e 65 20 24 69   repeat "Line $i
19870 22 20 32 30 5d 0a 20 20 20 20 20 20 20 20 2e 74  " 20].        .t
19880 20 69 6e 73 65 72 74 20 65 6e 64 20 22 5c 6e 22   insert end "\n"
19890 0a 20 20 20 20 7d 0a 20 20 20 20 2e 74 20 74 61  .    }.    .t ta
198a0 67 20 61 64 64 20 68 69 64 64 65 6e 20 35 2e 31  g add hidden 5.1
198b0 35 20 32 30 2e 31 35 0a 20 20 20 20 2e 74 20 74  5 20.15.    .t t
198c0 61 67 20 63 6f 6e 66 69 67 75 72 65 20 68 69 64  ag configure hid
198d0 64 65 6e 20 2d 65 6c 69 64 65 20 74 72 75 65 0a  den -elide true.
198e0 20 20 20 20 73 65 74 20 72 65 73 20 7b 7d 0a 20      set res {}. 
198f0 20 20 20 75 70 64 61 74 65 0a 20 20 20 20 6c 61     update.    la
19900 70 70 65 6e 64 20 72 65 73 20 5c 0a 20 20 20 20  ppend res \.    
19910 20 20 5b 2e 74 20 63 6f 75 6e 74 20 2d 79 70 69    [.t count -ypi
19920 78 65 6c 73 20 31 2e 30 20 36 2e 30 5d 20 5c 0a  xels 1.0 6.0] \.
19930 20 20 20 20 20 20 5b 2e 74 20 63 6f 75 6e 74 20        [.t count 
19940 2d 79 70 69 78 65 6c 73 20 32 2e 30 20 37 2e 35  -ypixels 2.0 7.5
19950 5d 20 5c 0a 20 20 20 20 20 20 5b 2e 74 20 63 6f  ] \.      [.t co
19960 75 6e 74 20 2d 79 70 69 78 65 6c 73 20 35 2e 30  unt -ypixels 5.0
19970 20 38 2e 35 5d 20 5c 0a 20 20 20 20 20 20 5b 2e   8.5] \.      [.
19980 74 20 63 6f 75 6e 74 20 2d 79 70 69 78 65 6c 73  t count -ypixels
19990 20 36 2e 31 20 36 2e 32 5d 20 5c 0a 20 20 20 20   6.1 6.2] \.    
199a0 20 20 5b 2e 74 20 63 6f 75 6e 74 20 2d 79 70 69    [.t count -ypi
199b0 78 65 6c 73 20 36 2e 31 20 31 38 2e 38 5d 20 5c  xels 6.1 18.8] \
199c0 0a 20 20 20 20 20 20 5b 2e 74 20 63 6f 75 6e 74  .      [.t count
199d0 20 2d 79 70 69 78 65 6c 73 20 31 38 2e 30 20 32   -ypixels 18.0 2
199e0 30 2e 35 30 5d 20 5c 0a 20 20 20 20 20 20 5b 2e  0.50] \.      [.
199f0 74 20 63 6f 75 6e 74 20 2d 79 70 69 78 65 6c 73  t count -ypixels
19a00 20 35 2e 32 20 32 30 2e 36 30 5d 20 5c 0a 20 20   5.2 20.60] \.  
19a10 20 20 20 20 5b 2e 74 20 63 6f 75 6e 74 20 2d 79      [.t count -y
19a20 70 69 78 65 6c 73 20 32 30 2e 36 30 20 32 30 2e  pixels 20.60 20.
19a30 37 30 5d 20 5c 0a 20 20 20 20 20 20 5b 2e 74 20  70] \.      [.t 
19a40 63 6f 75 6e 74 20 2d 79 70 69 78 65 6c 73 20 35  count -ypixels 5
19a50 2e 30 20 32 35 2e 30 5d 20 5c 0a 20 20 20 20 20  .0 25.0] \.     
19a60 20 5b 2e 74 20 63 6f 75 6e 74 20 2d 79 70 69 78   [.t count -ypix
19a70 65 6c 73 20 32 35 2e 30 20 35 2e 30 5d 20 5c 0a  els 25.0 5.0] \.
19a80 20 20 20 20 20 20 5b 2e 74 20 63 6f 75 6e 74 20        [.t count 
19a90 2d 79 70 69 78 65 6c 73 20 32 35 2e 34 20 32 37  -ypixels 25.4 27
19aa0 2e 35 30 5d 20 5c 0a 20 20 20 20 20 20 5b 2e 74  .50] \.      [.t
19ab0 20 63 6f 75 6e 74 20 2d 79 70 69 78 65 6c 73 20   count -ypixels 
19ac0 33 35 2e 30 20 33 38 2e 30 5d 0a 20 20 20 20 2e  35.0 38.0].    .
19ad0 74 20 79 76 69 65 77 20 33 35 2e 30 0a 20 20 20  t yview 35.0.   
19ae0 20 6c 61 70 70 65 6e 64 20 72 65 73 20 5b 2e 74   lappend res [.t
19af0 20 63 6f 75 6e 74 20 2d 79 70 69 78 65 6c 73 20   count -ypixels 
19b00 35 2e 30 20 32 35 2e 30 5d 0a 7d 20 5b 6c 69 73  5.0 25.0].} [lis
19b10 74 20 5b 65 78 70 72 20 7b 34 20 2a 20 24 66 69  t [expr {4 * $fi
19b20 78 65 64 48 65 69 67 68 74 7d 5d 20 5b 65 78 70  xedHeight}] [exp
19b30 72 20 7b 33 20 2a 20 24 66 69 78 65 64 48 65 69  r {3 * $fixedHei
19b40 67 68 74 7d 5d 20 30 20 30 20 30 20 30 20 30 20  ght}] 0 0 0 0 0 
19b50 30 20 5b 65 78 70 72 20 7b 35 20 2a 20 24 66 69  0 [expr {5 * $fi
19b60 78 65 64 48 65 69 67 68 74 7d 5d 20 5b 65 78 70  xedHeight}] [exp
19b70 72 20 7b 2d 20 35 20 2a 20 24 66 69 78 65 64 48  r {- 5 * $fixedH
19b80 65 69 67 68 74 7d 5d 20 5b 65 78 70 72 20 7b 32  eight}] [expr {2
19b90 20 2a 20 24 66 69 78 65 64 48 65 69 67 68 74 7d   * $fixedHeight}
19ba0 5d 20 5b 65 78 70 72 20 7b 33 20 2a 20 24 66 69  ] [expr {3 * $fi
19bb0 78 65 64 48 65 69 67 68 74 7d 5d 20 5b 65 78 70  xedHeight}] [exp
19bc0 72 20 7b 35 20 2a 20 24 66 69 78 65 64 48 65 69  r {5 * $fixedHei
19bd0 67 68 74 7d 5d 5d 0a 74 65 73 74 20 74 65 78 74  ght}]].test text
19be0 44 69 73 70 2d 31 39 2e 31 38 20 7b 63 6f 75 6e  Disp-19.18 {coun
19bf0 74 20 2d 79 70 69 78 65 6c 73 20 77 69 74 68 20  t -ypixels with 
19c00 69 6e 64 69 63 65 73 20 69 6e 20 65 6c 69 64 65  indices in elide
19c10 64 20 6c 69 6e 65 73 7d 20 7b 0a 20 20 20 20 2e  d lines} {.    .
19c20 74 20 63 6f 6e 66 69 67 75 72 65 20 2d 77 72 61  t configure -wra
19c30 70 20 6e 6f 6e 65 0a 20 20 20 20 2e 74 20 64 65  p none.    .t de
19c40 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a 20 20 20  lete 1.0 end.   
19c50 20 66 6f 72 20 7b 73 65 74 20 69 20 31 7d 20 7b   for {set i 1} {
19c60 24 69 20 3c 20 31 30 30 7d 20 7b 69 6e 63 72 20  $i < 100} {incr 
19c70 69 7d 20 7b 0a 20 20 20 20 20 20 20 20 2e 74 20  i} {.        .t 
19c80 69 6e 73 65 72 74 20 65 6e 64 20 5b 73 74 72 69  insert end [stri
19c90 6e 67 20 72 65 70 65 61 74 20 22 4c 69 6e 65 20  ng repeat "Line 
19ca0 24 69 22 20 32 30 5d 0a 20 20 20 20 20 20 20 20  $i" 20].        
19cb0 2e 74 20 69 6e 73 65 72 74 20 65 6e 64 20 22 5c  .t insert end "\
19cc0 6e 22 0a 20 20 20 20 7d 0a 20 20 20 20 2e 74 20  n".    }.    .t 
19cd0 74 61 67 20 61 64 64 20 68 69 64 64 65 6e 20 35  tag add hidden 5
19ce0 2e 31 35 20 32 30 2e 31 35 0a 20 20 20 20 2e 74  .15 20.15.    .t
19cf0 20 74 61 67 20 63 6f 6e 66 69 67 75 72 65 20 68   tag configure h
19d00 69 64 64 65 6e 20 2d 65 6c 69 64 65 20 74 72 75  idden -elide tru
19d10 65 0a 20 20 20 20 2e 74 20 79 76 69 65 77 20 33  e.    .t yview 3
19d20 35 2e 30 0a 20 20 20 20 73 65 74 20 72 65 73 20  5.0.    set res 
19d30 7b 7d 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20  {}.    update.  
19d40 20 20 6c 61 70 70 65 6e 64 20 72 65 73 20 5b 2e    lappend res [.
19d50 74 20 63 6f 75 6e 74 20 2d 79 70 69 78 65 6c 73  t count -ypixels
19d60 20 35 2e 30 20 32 35 2e 30 5d 0a 20 20 20 20 2e   5.0 25.0].    .
19d70 74 20 79 76 69 65 77 20 73 63 72 6f 6c 6c 20 5b  t yview scroll [
19d80 65 78 70 72 20 7b 2d 20 31 35 20 2a 20 24 66 69  expr {- 15 * $fi
19d90 78 65 64 48 65 69 67 68 74 7d 5d 20 70 69 78 65  xedHeight}] pixe
19da0 6c 73 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20  ls.    update.  
19db0 20 20 6c 61 70 70 65 6e 64 20 72 65 73 20 5b 2e    lappend res [.
19dc0 74 20 63 6f 75 6e 74 20 2d 79 70 69 78 65 6c 73  t count -ypixels
19dd0 20 35 2e 30 20 32 35 2e 30 5d 0a 7d 20 5b 6c 69   5.0 25.0].} [li
19de0 73 74 20 5b 65 78 70 72 20 7b 35 20 2a 20 24 66  st [expr {5 * $f
19df0 69 78 65 64 48 65 69 67 68 74 7d 5d 20 5b 65 78  ixedHeight}] [ex
19e00 70 72 20 7b 35 20 2a 20 24 66 69 78 65 64 48 65  pr {5 * $fixedHe
19e10 69 67 68 74 7d 5d 5d 0a 74 65 73 74 20 74 65 78  ight}]].test tex
19e20 74 44 69 73 70 2d 31 39 2e 31 39 20 7b 63 6f 75  tDisp-19.19 {cou
19e30 6e 74 20 2d 79 70 69 78 65 6c 73 20 77 69 74 68  nt -ypixels with
19e40 20 69 6e 64 69 63 65 73 20 69 6e 20 65 6c 69 64   indices in elid
19e50 65 64 20 6c 69 6e 65 73 7d 20 7b 0a 20 20 20 20  ed lines} {.    
19e60 2e 74 20 63 6f 6e 66 69 67 75 72 65 20 2d 77 72  .t configure -wr
19e70 61 70 20 63 68 61 72 0a 20 20 20 20 2e 74 20 64  ap char.    .t d
19e80 65 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a 20 20  elete 1.0 end.  
19e90 20 20 66 6f 72 20 7b 73 65 74 20 69 20 31 7d 20    for {set i 1} 
19ea0 7b 24 69 20 3c 20 32 35 7d 20 7b 69 6e 63 72 20  {$i < 25} {incr 
19eb0 69 7d 20 7b 0a 20 20 20 20 20 20 20 20 2e 74 20  i} {.        .t 
19ec0 69 6e 73 65 72 74 20 65 6e 64 20 5b 73 74 72 69  insert end [stri
19ed0 6e 67 20 72 65 70 65 61 74 20 22 4c 69 6e 65 20  ng repeat "Line 
19ee0 24 69 20 2d 22 20 36 5d 0a 20 20 20 20 20 20 20  $i -" 6].       
19ef0 20 2e 74 20 69 6e 73 65 72 74 20 65 6e 64 20 22   .t insert end "
19f00 5c 6e 22 0a 20 20 20 20 7d 0a 20 20 20 20 2e 74  \n".    }.    .t
19f10 20 74 61 67 20 61 64 64 20 68 69 64 64 65 6e 20   tag add hidden 
19f20 35 2e 32 37 20 31 31 2e 30 0a 20 20 20 20 2e 74  5.27 11.0.    .t
19f30 20 74 61 67 20 63 6f 6e 66 69 67 75 72 65 20 68   tag configure h
19f40 69 64 64 65 6e 20 2d 65 6c 69 64 65 20 74 72 75  idden -elide tru
19f50 65 0a 20 20 20 20 2e 74 20 79 76 69 65 77 20 35  e.    .t yview 5
19f60 2e 30 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20  .0.    update.  
19f70 20 20 73 65 74 20 72 65 73 20 5b 6c 69 73 74 20    set res [list 
19f80 5b 2e 74 20 63 6f 75 6e 74 20 2d 79 70 69 78 65  [.t count -ypixe
19f90 6c 73 20 35 2e 30 20 31 31 2e 30 5d 20 5b 2e 74  ls 5.0 11.0] [.t
19fa0 20 63 6f 75 6e 74 20 2d 79 70 69 78 65 6c 73 20   count -ypixels 
19fb0 35 2e 30 20 31 31 2e 32 30 5d 5d 0a 7d 20 5b 6c  5.0 11.20]].} [l
19fc0 69 73 74 20 5b 65 78 70 72 20 7b 31 20 2a 20 24  ist [expr {1 * $
19fd0 66 69 78 65 64 48 65 69 67 68 74 7d 5d 20 5b 65  fixedHeight}] [e
19fe0 78 70 72 20 7b 32 20 2a 20 24 66 69 78 65 64 48  xpr {2 * $fixedH
19ff0 65 69 67 68 74 7d 5d 5d 0a 0a 2e 74 20 64 65 6c  eight}]]...t del
1a000 65 74 65 20 31 2e 30 20 65 6e 64 0a 2e 74 20 69  ete 1.0 end..t i
1a010 6e 73 65 72 74 20 65 6e 64 20 22 4c 69 6e 65 20  nsert end "Line 
1a020 31 22 0a 66 6f 72 20 7b 73 65 74 20 69 20 32 7d  1".for {set i 2}
1a030 20 7b 24 69 20 3c 3d 20 32 30 30 7d 20 7b 69 6e   {$i <= 200} {in
1a040 63 72 20 69 7d 20 7b 0a 20 20 20 20 2e 74 20 69  cr i} {.    .t i
1a050 6e 73 65 72 74 20 65 6e 64 20 22 5c 6e 4c 69 6e  nsert end "\nLin
1a060 65 20 24 69 22 0a 7d 0a 2e 74 20 63 6f 6e 66 69  e $i".}..t confi
1a070 67 75 72 65 20 2d 77 72 61 70 20 77 6f 72 64 0a  gure -wrap word.
1a080 2e 74 20 64 65 6c 65 74 65 20 35 30 2e 30 20 35  .t delete 50.0 5
1a090 31 2e 30 0a 2e 74 20 69 6e 73 65 72 74 20 35 30  1.0..t insert 50
1a0a0 2e 30 20 22 54 68 69 73 20 69 73 20 61 20 6c 6f  .0 "This is a lo
1a0b0 6e 67 20 6c 69 6e 65 2c 20 6f 6e 65 20 74 68 61  ng line, one tha
1a0c0 74 20 77 69 6c 6c 20 77 72 61 70 20 61 72 6f 75  t will wrap arou
1a0d0 6e 64 20 74 77 69 63 65 2e 5c 6e 22 0a 0a 74 65  nd twice.\n"..te
1a0e0 73 74 20 74 65 78 74 44 69 73 70 2d 32 30 2e 31  st textDisp-20.1
1a0f0 20 7b 46 69 6e 64 44 4c 69 6e 65 7d 20 7b 0a 20   {FindDLine} {. 
1a100 20 20 20 2e 74 20 79 76 69 65 77 20 34 38 2e 30     .t yview 48.0
1a110 0a 20 20 20 20 6c 69 73 74 20 5b 2e 74 20 64 6c  .    list [.t dl
1a120 69 6e 65 69 6e 66 6f 20 34 36 2e 30 5d 20 5b 2e  ineinfo 46.0] [.
1a130 74 20 64 6c 69 6e 65 69 6e 66 6f 20 34 37 2e 30  t dlineinfo 47.0
1a140 5d 20 5b 2e 74 20 64 6c 69 6e 65 69 6e 66 6f 20  ] [.t dlineinfo 
1a150 34 39 2e 30 5d 20 5c 0a 09 20 20 20 20 5b 2e 74  49.0] \..    [.t
1a160 20 64 6c 69 6e 65 69 6e 66 6f 20 35 38 2e 30 5d   dlineinfo 58.0]
1a170 0a 7d 20 5b 6c 69 73 74 20 7b 7d 20 7b 7d 20 5c  .} [list {} {} \
1a180 0a 20 20 20 20 5b 6c 69 73 74 20 24 70 61 64 78  .    [list $padx
1a190 20 5b 65 78 70 72 20 7b 24 70 61 64 79 2b 24 66   [expr {$pady+$f
1a1a0 69 78 65 64 48 65 69 67 68 74 7d 5d 20 5b 65 78  ixedHeight}] [ex
1a1b0 70 72 20 7b 37 2a 24 66 69 78 65 64 57 69 64 74  pr {7*$fixedWidt
1a1c0 68 7d 5d 20 24 66 69 78 65 64 48 65 69 67 68 74  h}] $fixedHeight
1a1d0 20 24 66 69 78 65 64 41 73 63 65 6e 74 5d 20 5c   $fixedAscent] \
1a1e0 0a 20 20 20 20 7b 7d 5d 0a 0a 23 20 74 68 65 20  .    {}]..# the 
1a1f0 79 20 73 63 72 6f 6c 6c 20 70 6f 73 69 74 69 6f  y scroll positio
1a200 6e 20 69 73 20 64 69 66 66 65 72 65 6e 74 20 62  n is different b
1a210 65 74 77 65 65 6e 0a 23 20 77 69 6e 64 6f 77 73  etween.# windows
1a220 20 61 6e 64 20 6c 69 6e 75 78 2f 6d 61 63 20 6f   and linux/mac o
1a230 73 20 78 0a 23 20 62 75 67 3f 0a 74 65 73 74 20  s x.# bug?.test 
1a240 74 65 78 74 44 69 73 70 2d 32 30 2e 32 20 7b 46  textDisp-20.2 {F
1a250 69 6e 64 44 4c 69 6e 65 7d 20 79 73 63 72 6f 6c  indDLine} yscrol
1a260 6c 70 6f 73 69 74 69 6f 6e 20 7b 0a 20 20 20 20  lposition {.    
1a270 2e 74 20 79 76 69 65 77 20 31 30 30 2e 30 0a 20  .t yview 100.0. 
1a280 20 20 20 2e 74 20 79 76 69 65 77 20 2d 70 69 63     .t yview -pic
1a290 6b 70 6c 61 63 65 20 35 33 2e 30 0a 20 20 20 20  kplace 53.0.    
1a2a0 6c 69 73 74 20 5b 2e 74 20 64 6c 69 6e 65 69 6e  list [.t dlinein
1a2b0 66 6f 20 35 30 2e 30 5d 20 5b 2e 74 20 64 6c 69  fo 50.0] [.t dli
1a2c0 6e 65 69 6e 66 6f 20 35 30 2e 31 34 5d 20 5b 2e  neinfo 50.14] [.
1a2d0 74 20 64 6c 69 6e 65 69 6e 66 6f 20 35 30 2e 32  t dlineinfo 50.2
1a2e0 31 5d 0a 7d 20 5b 6c 69 73 74 20 5c 0a 20 20 20  1].} [list \.   
1a2f0 20 5b 6c 69 73 74 20 24 70 61 64 78 20 2d 32 20   [list $padx -2 
1a300 5b 65 78 70 72 20 7b 32 30 2a 24 66 69 78 65 64  [expr {20*$fixed
1a310 57 69 64 74 68 7d 5d 20 24 66 69 78 65 64 48 65  Width}] $fixedHe
1a320 69 67 68 74 20 24 66 69 78 65 64 41 73 63 65 6e  ight $fixedAscen
1a330 74 5d 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20 24  t] \.    [list $
1a340 70 61 64 78 20 2d 32 20 5b 65 78 70 72 20 7b 32  padx -2 [expr {2
1a350 30 2a 24 66 69 78 65 64 57 69 64 74 68 7d 5d 20  0*$fixedWidth}] 
1a360 24 66 69 78 65 64 48 65 69 67 68 74 20 24 66 69  $fixedHeight $fi
1a370 78 65 64 41 73 63 65 6e 74 5d 20 5c 0a 20 20 20  xedAscent] \.   
1a380 20 5b 6c 69 73 74 20 24 70 61 64 78 20 5b 65 78   [list $padx [ex
1a390 70 72 20 7b 2d 32 20 2b 20 24 66 69 78 65 64 48  pr {-2 + $fixedH
1a3a0 65 69 67 68 74 7d 5d 20 5b 65 78 70 72 20 7b 31  eight}] [expr {1
1a3b0 39 2a 24 66 69 78 65 64 57 69 64 74 68 7d 5d 20  9*$fixedWidth}] 
1a3c0 24 66 69 78 65 64 48 65 69 67 68 74 20 24 66 69  $fixedHeight $fi
1a3d0 78 65 64 41 73 63 65 6e 74 5d 5d 0a 0a 74 65 73  xedAscent]]..tes
1a3e0 74 20 74 65 78 74 44 69 73 70 2d 32 30 2e 33 20  t textDisp-20.3 
1a3f0 7b 46 69 6e 64 44 4c 69 6e 65 7d 20 7b 0a 20 20  {FindDLine} {.  
1a400 20 20 2e 74 20 79 76 69 65 77 20 31 30 30 2e 30    .t yview 100.0
1a410 0a 20 20 20 20 2e 74 20 79 76 69 65 77 20 34 39  .    .t yview 49
1a420 2e 30 0a 20 20 20 20 6c 69 73 74 20 5b 2e 74 20  .0.    list [.t 
1a430 64 6c 69 6e 65 69 6e 66 6f 20 35 30 2e 30 5d 20  dlineinfo 50.0] 
1a440 5b 2e 74 20 64 6c 69 6e 65 69 6e 66 6f 20 35 30  [.t dlineinfo 50
1a450 2e 32 34 5d 20 5b 2e 74 20 64 6c 69 6e 65 69 6e  .24] [.t dlinein
1a460 66 6f 20 35 37 2e 30 5d 0a 7d 20 5b 6c 69 73 74  fo 57.0].} [list
1a470 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20 24 70 61   \.    [list $pa
1a480 64 78 20 5b 65 78 70 72 20 7b 24 70 61 64 79 2b  dx [expr {$pady+
1a490 24 66 69 78 65 64 48 65 69 67 68 74 7d 5d 20 5b  $fixedHeight}] [
1a4a0 65 78 70 72 20 7b 32 30 2a 24 66 69 78 65 64 57  expr {20*$fixedW
1a4b0 69 64 74 68 7d 5d 20 24 66 69 78 65 64 48 65 69  idth}] $fixedHei
1a4c0 67 68 74 20 24 66 69 78 65 64 41 73 63 65 6e 74  ght $fixedAscent
1a4d0 5d 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20 24 70  ] \.    [list $p
1a4e0 61 64 78 20 5b 65 78 70 72 20 7b 24 70 61 64 79  adx [expr {$pady
1a4f0 2b 32 2a 24 66 69 78 65 64 48 65 69 67 68 74 7d  +2*$fixedHeight}
1a500 5d 20 5b 65 78 70 72 20 7b 31 39 2a 24 66 69 78  ] [expr {19*$fix
1a510 65 64 57 69 64 74 68 7d 5d 20 24 66 69 78 65 64  edWidth}] $fixed
1a520 48 65 69 67 68 74 20 24 66 69 78 65 64 41 73 63  Height $fixedAsc
1a530 65 6e 74 5d 20 5c 0a 20 20 20 20 7b 7d 5d 0a 0a  ent] \.    {}]..
1a540 74 65 73 74 20 74 65 78 74 44 69 73 70 2d 32 30  test textDisp-20
1a550 2e 34 20 7b 46 69 6e 64 44 4c 69 6e 65 7d 20 7b  .4 {FindDLine} {
1a560 0a 20 20 20 20 2e 74 20 79 76 69 65 77 20 31 30  .    .t yview 10
1a570 30 2e 30 0a 20 20 20 20 2e 74 20 79 76 69 65 77  0.0.    .t yview
1a580 20 34 32 2e 30 0a 20 20 20 20 6c 69 73 74 20 5b   42.0.    list [
1a590 2e 74 20 64 6c 69 6e 65 69 6e 66 6f 20 35 30 2e  .t dlineinfo 50.
1a5a0 30 5d 20 5b 2e 74 20 64 6c 69 6e 65 69 6e 66 6f  0] [.t dlineinfo
1a5b0 20 35 30 2e 32 34 5d 20 5b 2e 74 20 64 6c 69 6e   50.24] [.t dlin
1a5c0 65 69 6e 66 6f 20 35 30 2e 34 30 5d 0a 7d 20 5b  einfo 50.40].} [
1a5d0 6c 69 73 74 20 5c 0a 20 20 20 20 5b 6c 69 73 74  list \.    [list
1a5e0 20 24 70 61 64 78 20 5b 65 78 70 72 20 7b 24 70   $padx [expr {$p
1a5f0 61 64 79 2b 38 2a 24 66 69 78 65 64 48 65 69 67  ady+8*$fixedHeig
1a600 68 74 7d 5d 20 5b 65 78 70 72 20 7b 32 30 2a 24  ht}] [expr {20*$
1a610 66 69 78 65 64 57 69 64 74 68 7d 5d 20 24 66 69  fixedWidth}] $fi
1a620 78 65 64 48 65 69 67 68 74 20 24 66 69 78 65 64  xedHeight $fixed
1a630 41 73 63 65 6e 74 5d 20 5c 0a 20 20 20 20 5b 6c  Ascent] \.    [l
1a640 69 73 74 20 24 70 61 64 78 20 5b 65 78 70 72 20  ist $padx [expr 
1a650 7b 24 70 61 64 79 2b 39 2a 24 66 69 78 65 64 48  {$pady+9*$fixedH
1a660 65 69 67 68 74 7d 5d 20 5b 65 78 70 72 20 7b 31  eight}] [expr {1
1a670 39 2a 24 66 69 78 65 64 57 69 64 74 68 7d 5d 20  9*$fixedWidth}] 
1a680 24 66 69 78 65 64 48 65 69 67 68 74 20 24 66 69  $fixedHeight $fi
1a690 78 65 64 41 73 63 65 6e 74 5d 20 5c 0a 20 20 20  xedAscent] \.   
1a6a0 20 7b 7d 5d 0a 2e 74 20 63 6f 6e 66 69 67 20 2d   {}]..t config -
1a6b0 77 72 61 70 20 6e 6f 6e 65 0a 0a 74 65 73 74 20  wrap none..test 
1a6c0 74 65 78 74 44 69 73 70 2d 32 30 2e 35 20 7b 46  textDisp-20.5 {F
1a6d0 69 6e 64 44 4c 69 6e 65 7d 20 7b 0a 20 20 20 20  indDLine} {.    
1a6e0 2e 74 20 79 76 69 65 77 20 31 30 30 2e 30 0a 20  .t yview 100.0. 
1a6f0 20 20 20 2e 74 20 79 76 69 65 77 20 34 38 2e 30     .t yview 48.0
1a700 0a 20 20 20 20 6c 69 73 74 20 5b 2e 74 20 64 6c  .    list [.t dl
1a710 69 6e 65 69 6e 66 6f 20 35 30 2e 30 5d 20 5b 2e  ineinfo 50.0] [.
1a720 74 20 64 6c 69 6e 65 69 6e 66 6f 20 35 30 2e 32  t dlineinfo 50.2
1a730 30 5d 20 5b 2e 74 20 64 6c 69 6e 65 69 6e 66 6f  0] [.t dlineinfo
1a740 20 35 30 2e 34 30 5d 0a 7d 20 5b 6c 69 73 74 20   50.40].} [list 
1a750 5c 0a 20 20 20 20 5b 6c 69 73 74 20 24 70 61 64  \.    [list $pad
1a760 78 20 5b 65 78 70 72 20 7b 24 70 61 64 79 2b 32  x [expr {$pady+2
1a770 2a 24 66 69 78 65 64 48 65 69 67 68 74 7d 5d 20  *$fixedHeight}] 
1a780 5b 65 78 70 72 20 7b 35 33 2a 24 66 69 78 65 64  [expr {53*$fixed
1a790 57 69 64 74 68 7d 5d 20 24 66 69 78 65 64 48 65  Width}] $fixedHe
1a7a0 69 67 68 74 20 24 66 69 78 65 64 41 73 63 65 6e  ight $fixedAscen
1a7b0 74 5d 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20 24  t] \.    [list $
1a7c0 70 61 64 78 20 5b 65 78 70 72 20 7b 24 70 61 64  padx [expr {$pad
1a7d0 79 2b 32 2a 24 66 69 78 65 64 48 65 69 67 68 74  y+2*$fixedHeight
1a7e0 7d 5d 20 5b 65 78 70 72 20 7b 35 33 2a 24 66 69  }] [expr {53*$fi
1a7f0 78 65 64 57 69 64 74 68 7d 5d 20 24 66 69 78 65  xedWidth}] $fixe
1a800 64 48 65 69 67 68 74 20 24 66 69 78 65 64 41 73  dHeight $fixedAs
1a810 63 65 6e 74 5d 20 5c 0a 20 20 20 20 5b 6c 69 73  cent] \.    [lis
1a820 74 20 24 70 61 64 78 20 5b 65 78 70 72 20 7b 24  t $padx [expr {$
1a830 70 61 64 79 2b 32 2a 24 66 69 78 65 64 48 65 69  pady+2*$fixedHei
1a840 67 68 74 7d 5d 20 5b 65 78 70 72 20 7b 35 33 2a  ght}] [expr {53*
1a850 24 66 69 78 65 64 57 69 64 74 68 7d 5d 20 24 66  $fixedWidth}] $f
1a860 69 78 65 64 48 65 69 67 68 74 20 24 66 69 78 65  ixedHeight $fixe
1a870 64 41 73 63 65 6e 74 5d 5d 0a 0a 2e 74 20 63 6f  dAscent]]...t co
1a880 6e 66 69 67 20 2d 77 72 61 70 20 77 6f 72 64 0a  nfig -wrap word.
1a890 74 65 73 74 20 74 65 78 74 44 69 73 70 2d 32 31  test textDisp-21
1a8a0 2e 31 20 7b 54 6b 54 65 78 74 50 69 78 65 6c 49  .1 {TkTextPixelI
1a8b0 6e 64 65 78 7d 20 7b 74 65 78 74 66 6f 6e 74 73  ndex} {textfonts
1a8c0 7d 20 7b 0a 20 20 20 20 2e 74 20 79 76 69 65 77  } {.    .t yview
1a8d0 20 34 38 2e 30 0a 20 20 20 20 6c 69 73 74 20 5b   48.0.    list [
1a8e0 2e 74 20 69 6e 64 65 78 20 40 2d 31 30 2c 2d 31  .t index @-10,-1
1a8f0 30 5d 20 5b 2e 74 20 69 6e 64 65 78 20 40 36 2c  0] [.t index @6,
1a900 36 5d 20 5b 2e 74 20 69 6e 64 65 78 20 40 32 32  6] [.t index @22
1a910 2c 36 5d 20 5c 0a 09 20 20 20 20 5b 2e 74 20 69  ,6] \..    [.t i
1a920 6e 64 65 78 20 40 31 30 32 2c 36 5d 20 5b 2e 74  ndex @102,6] [.t
1a930 20 69 6e 64 65 78 20 40 33 38 2c 5b 65 78 70 72   index @38,[expr
1a940 20 7b 24 66 69 78 65 64 48 65 69 67 68 74 20 2a   {$fixedHeight *
1a950 20 34 20 2b 20 33 7d 5d 5d 20 5b 2e 74 20 69 6e   4 + 3}]] [.t in
1a960 64 65 78 20 40 34 34 2c 36 37 5d 0a 7d 20 7b 34  dex @44,67].} {4
1a970 38 2e 30 20 34 38 2e 30 20 34 38 2e 32 20 34 38  8.0 48.0 48.2 48
1a980 2e 37 20 35 30 2e 34 35 20 35 30 2e 34 35 7d 0a  .7 50.45 50.45}.
1a990 2e 74 20 69 6e 73 65 72 74 20 65 6e 64 20 5c 6e  .t insert end \n
1a9a0 0a 74 65 73 74 20 74 65 78 74 44 69 73 70 2d 32  .test textDisp-2
1a9b0 31 2e 32 20 7b 54 6b 54 65 78 74 50 69 78 65 6c  1.2 {TkTextPixel
1a9c0 49 6e 64 65 78 7d 20 7b 74 65 78 74 66 6f 6e 74  Index} {textfont
1a9d0 73 7d 20 7b 0a 20 20 20 20 2e 74 20 79 76 69 65  s} {.    .t yvie
1a9e0 77 20 31 39 35 2e 30 0a 20 20 20 20 6c 69 73 74  w 195.0.    list
1a9f0 20 5b 2e 74 20 69 6e 64 65 78 20 40 31 31 2c 5b   [.t index @11,[
1aa00 65 78 70 72 20 7b 24 66 69 78 65 64 48 65 69 67  expr {$fixedHeig
1aa10 68 74 20 2a 20 35 20 2b 20 35 7d 5d 5d 20 5b 2e  ht * 5 + 5}]] [.
1aa20 74 20 69 6e 64 65 78 20 40 31 31 2c 5b 65 78 70  t index @11,[exp
1aa30 72 20 7b 24 66 69 78 65 64 48 65 69 67 68 74 20  r {$fixedHeight 
1aa40 2a 20 36 20 2b 20 35 7d 5d 5d 20 5b 2e 74 20 69  * 6 + 5}]] [.t i
1aa50 6e 64 65 78 20 40 31 31 2c 5b 65 78 70 72 20 7b  ndex @11,[expr {
1aa60 24 66 69 78 65 64 48 65 69 67 68 74 20 2a 20 37  $fixedHeight * 7
1aa70 20 2b 20 35 7d 5d 5d 20 5c 0a 09 20 20 20 20 5b   + 5}]] \..    [
1aa80 2e 74 20 69 6e 64 65 78 20 40 31 31 2c 31 30 30  .t index @11,100
1aa90 32 5d 0a 7d 20 7b 31 39 37 2e 31 20 31 39 38 2e  2].} {197.1 198.
1aaa0 31 20 31 39 39 2e 31 20 32 30 31 2e 30 7d 0a 74  1 199.1 201.0}.t
1aab0 65 73 74 20 74 65 78 74 44 69 73 70 2d 32 31 2e  est textDisp-21.
1aac0 33 20 7b 54 6b 54 65 78 74 50 69 78 65 6c 49 6e  3 {TkTextPixelIn
1aad0 64 65 78 2c 20 68 6f 72 69 7a 6f 6e 74 61 6c 20  dex, horizontal 
1aae0 73 63 72 6f 6c 6c 69 6e 67 7d 20 7b 74 65 78 74  scrolling} {text
1aaf0 66 6f 6e 74 73 7d 20 7b 0a 20 20 20 20 2e 74 20  fonts} {.    .t 
1ab00 63 6f 6e 66 69 67 75 72 65 20 2d 77 72 61 70 20  configure -wrap 
1ab10 6e 6f 6e 65 0a 20 20 20 20 2e 74 20 64 65 6c 65  none.    .t dele
1ab20 74 65 20 31 2e 30 20 65 6e 64 0a 20 20 20 20 2e  te 1.0 end.    .
1ab30 74 20 69 6e 73 65 72 74 20 65 6e 64 20 22 31 32  t insert end "12
1ab40 33 34 35 5c 6e 22 0a 20 20 20 20 2e 74 20 69 6e  345\n".    .t in
1ab50 73 65 72 74 20 65 6e 64 20 22 61 62 63 64 65 66  sert end "abcdef
1ab60 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76  ghijklmnopqrstuv
1ab70 77 78 79 7a 41 42 43 44 45 46 47 48 49 4a 4b 4c  wxyzABCDEFGHIJKL
1ab80 4d 4e 4f 50 51 52 53 54 55 56 57 58 59 5a 22 0a  MNOPQRSTUVWXYZ".
1ab90 20 20 20 20 2e 74 20 78 76 69 65 77 20 73 63 72      .t xview scr
1aba0 6f 6c 6c 20 32 20 75 6e 69 74 73 0a 20 20 20 20  oll 2 units.    
1abb0 6c 69 73 74 20 5b 2e 74 20 69 6e 64 65 78 20 40  list [.t index @
1abc0 2d 35 2c 37 5d 20 5b 2e 74 20 69 6e 64 65 78 20  -5,7] [.t index 
1abd0 40 35 2c 37 5d 20 5b 2e 74 20 69 6e 64 65 78 20  @5,7] [.t index 
1abe0 40 33 33 2c 32 30 5d 0a 7d 20 7b 31 2e 32 20 31  @33,20].} {1.2 1
1abf0 2e 32 20 32 2e 36 7d 0a 74 65 73 74 20 74 65 78  .2 2.6}.test tex
1ac00 74 44 69 73 70 2d 32 31 2e 34 20 7b 63 6f 75 6e  tDisp-21.4 {coun
1ac10 74 20 2d 64 69 73 70 6c 61 79 6c 69 6e 65 73 20  t -displaylines 
1ac20 72 65 67 72 65 73 73 69 6f 6e 7d 20 7b 0a 20 20  regression} {.  
1ac30 20 20 73 65 74 20 6d 65 73 73 61 67 65 20 7b 0a    set message {.
1ac40 20 20 20 51 4f 54 57 3a 20 20 22 43 2f 43 2b 2b     QOTW:  "C/C++
1ac50 2c 20 77 68 69 63 68 20 69 73 20 75 73 65 64 20  , which is used 
1ac60 62 79 20 31 36 25 20 6f 66 20 75 73 65 72 73 2c  by 16% of users,
1ac70 20 69 73 20 74 68 65 20 6d 6f 73 74 20 70 6f 70   is the most pop
1ac80 75 6c 61 72 20 70 72 6f 67 72 61 6d 6d 69 6e 67  ular programming
1ac90 20 6c 61 6e 67 75 61 67 65 2c 20 62 75 74 20 54   language, but T
1aca0 63 6c 2c 20 75 73 65 64 20 62 79 20 30 25 2c 20  cl, used by 0%, 
1acb0 73 65 65 6d 73 20 74 6f 20 62 65 20 74 68 65 20  seems to be the 
1acc0 6c 61 6e 67 75 61 67 65 20 6f 66 20 63 68 6f 69  language of choi
1acd0 63 65 20 66 6f 72 20 74 68 65 20 68 69 67 68 65  ce for the highe
1ace0 73 74 20 73 63 6f 72 69 6e 67 20 75 73 65 72 73  st scoring users
1acf0 2e 22 0a 28 6e 65 77 20 6c 69 6e 65 29 0a 55 73  .".(new line).Us
1ad00 65 20 74 68 65 20 55 70 20 28 63 75 72 73 6f 72  e the Up (cursor
1ad10 29 20 6b 65 79 20 74 6f 20 73 63 72 6f 6c 6c 20  ) key to scroll 
1ad20 75 70 20 6f 6e 65 20 6c 69 6e 65 20 61 74 20 61  up one line at a
1ad30 20 74 69 6d 65 2e 20 20 41 74 20 74 68 65 20 73   time.  At the s
1ad40 65 63 6f 6e 64 20 70 72 65 73 73 2c 20 74 68 65  econd press, the
1ad50 20 63 75 72 73 6f 72 20 65 69 74 68 65 72 20 67   cursor either g
1ad60 65 74 73 20 6c 6f 63 6b 65 64 20 6f 72 20 6a 75  ets locked or ju
1ad70 6d 70 73 20 73 65 76 65 72 61 6c 20 6c 69 6e 65  mps several line
1ad80 73 2e 0a 0a 43 6f 6e 6e 65 63 74 20 77 69 74 68  s...Connect with
1ad90 20 54 6b 63 6f 6e 2e 20 20 54 68 65 20 63 6f 6d   Tkcon.  The com
1ada0 6d 61 6e 64 0a 2e 75 20 63 6f 75 6e 74 20 2d 64  mand..u count -d
1adb0 69 73 70 6c 61 79 6c 69 6e 65 73 20 5c 0a 33 2e  isplaylines \.3.
1adc0 31 30 20 32 2e 31 37 33 0a 73 68 6f 75 6c 64 20  10 2.173.should 
1add0 67 69 76 65 20 61 6e 73 77 65 72 20 2d 31 3b 20  give answer -1; 
1ade0 69 74 20 67 69 76 65 73 20 6d 65 20 35 2e 0a 0a  it gives me 5...
1adf0 55 73 69 6e 67 20 38 2e 35 61 34 20 28 41 63 74  Using 8.5a4 (Act
1ae00 69 76 65 53 74 61 74 65 20 62 65 74 61 20 34 29  iveState beta 4)
1ae10 20 75 6e 64 65 72 20 4c 69 6e 75 78 2e 20 20 4e   under Linux.  N
1ae20 6f 20 70 72 6f 62 6c 65 6d 20 77 69 74 68 20 41  o problem with A
1ae30 63 74 69 76 65 53 74 61 74 65 20 62 65 74 61 20  ctiveState beta 
1ae40 33 2e 0a 7d 0a 0a 74 6f 70 6c 65 76 65 6c 20 2e  3..}..toplevel .
1ae50 74 74 0a 70 61 63 6b 20 5b 74 65 78 74 20 2e 74  tt.pack [text .t
1ae60 74 2e 75 5d 20 2d 73 69 64 65 20 72 69 67 68 74  t.u] -side right
1ae70 0a 2e 74 74 2e 75 20 63 6f 6e 66 69 67 75 72 65  ..tt.u configure
1ae80 20 2d 77 69 64 74 68 20 33 30 20 2d 68 65 69 67   -width 30 -heig
1ae90 68 74 20 32 37 20 2d 77 72 61 70 20 77 6f 72 64  ht 27 -wrap word
1aea0 20 2d 62 67 20 23 46 46 46 46 46 46 0a 2e 74 74   -bg #FFFFFF..tt
1aeb0 2e 75 20 69 6e 73 65 72 74 20 65 6e 64 20 24 6d  .u insert end $m
1aec0 65 73 73 61 67 65 0a 2e 74 74 2e 75 20 6d 61 72  essage..tt.u mar
1aed0 6b 20 73 65 74 20 69 6e 73 65 72 74 20 33 2e 31  k set insert 3.1
1aee0 30 0a 74 6b 77 61 69 74 20 76 69 73 69 62 69 6c  0.tkwait visibil
1aef0 69 74 79 20 2e 74 74 2e 75 0a 73 65 74 20 72 65  ity .tt.u.set re
1af00 73 20 5b 2e 74 74 2e 75 20 63 6f 75 6e 74 20 2d  s [.tt.u count -
1af10 64 69 73 70 6c 61 79 6c 69 6e 65 73 20 33 2e 31  displaylines 3.1
1af20 30 20 32 2e 31 37 33 5d 0a 64 65 73 74 72 6f 79  0 2.173].destroy
1af30 20 2e 74 74 0a 75 6e 73 65 74 20 6d 65 73 73 61   .tt.unset messa
1af40 67 65 0a 73 65 74 20 72 65 73 0a 7d 20 7b 2d 31  ge.set res.} {-1
1af50 7d 0a 0a 2e 74 20 64 65 6c 65 74 65 20 31 2e 30  }...t delete 1.0
1af60 20 65 6e 64 0a 2e 74 20 69 6e 73 65 72 74 20 65   end..t insert e
1af70 6e 64 20 22 4c 69 6e 65 20 31 22 0a 66 6f 72 20  nd "Line 1".for 
1af80 7b 73 65 74 20 69 20 32 7d 20 7b 24 69 20 3c 3d  {set i 2} {$i <=
1af90 20 32 30 30 7d 20 7b 69 6e 63 72 20 69 7d 20 7b   200} {incr i} {
1afa0 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20 65  .    .t insert e
1afb0 6e 64 20 22 5c 6e 4c 69 6e 65 20 24 69 22 0a 7d  nd "\nLine $i".}
1afc0 0a 2e 74 20 63 6f 6e 66 69 67 75 72 65 20 2d 77  ..t configure -w
1afd0 72 61 70 20 77 6f 72 64 0a 2e 74 20 64 65 6c 65  rap word..t dele
1afe0 74 65 20 35 30 2e 30 20 35 31 2e 30 0a 2e 74 20  te 50.0 51.0..t 
1aff0 69 6e 73 65 72 74 20 35 30 2e 30 20 22 54 68 69  insert 50.0 "Thi
1b000 73 20 69 73 20 61 20 6c 6f 6e 67 20 6c 69 6e 65  s is a long line
1b010 2c 20 6f 6e 65 20 74 68 61 74 20 77 69 6c 6c 20  , one that will 
1b020 77 72 61 70 20 61 72 6f 75 6e 64 20 74 77 69 63  wrap around twic
1b030 65 2e 5c 6e 22 0a 75 70 64 61 74 65 0a 2e 74 20  e.\n".update..t 
1b040 74 61 67 20 61 64 64 20 78 20 35 30 2e 31 0a 0a  tag add x 50.1..
1b050 74 65 73 74 20 74 65 78 74 44 69 73 70 2d 32 32  test textDisp-22
1b060 2e 31 20 7b 54 6b 54 65 78 74 43 68 61 72 42 62  .1 {TkTextCharBb
1b070 6f 78 7d 20 7b 0a 20 20 20 20 2e 74 20 63 6f 6e  ox} {.    .t con
1b080 66 69 67 20 2d 77 72 61 70 20 77 6f 72 64 0a 20  fig -wrap word. 
1b090 20 20 20 2e 74 20 79 76 69 65 77 20 34 38 2e 30     .t yview 48.0
1b0a0 0a 20 20 20 20 6c 69 73 74 20 5b 2e 74 20 62 62  .    list [.t bb
1b0b0 6f 78 20 34 37 2e 32 5d 20 5b 2e 74 20 62 62 6f  ox 47.2] [.t bbo
1b0c0 78 20 34 38 2e 30 5d 20 5b 2e 74 20 62 62 6f 78  x 48.0] [.t bbox
1b0d0 20 35 30 2e 35 5d 20 5b 2e 74 20 62 62 6f 78 20   50.5] [.t bbox 
1b0e0 35 30 2e 34 30 5d 20 5c 0a 09 20 20 20 20 5b 2e  50.40] \..    [.
1b0f0 74 20 62 62 6f 78 20 35 38 2e 30 5d 0a 7d 20 5b  t bbox 58.0].} [
1b100 6c 69 73 74 20 7b 7d 20 5c 0a 20 20 20 20 5b 6c  list {} \.    [l
1b110 69 73 74 20 24 70 61 64 78 20 24 70 61 64 79 20  ist $padx $pady 
1b120 24 66 69 78 65 64 57 69 64 74 68 20 24 66 69 78  $fixedWidth $fix
1b130 65 64 48 65 69 67 68 74 5d 20 5c 0a 20 20 20 20  edHeight] \.    
1b140 5b 6c 69 73 74 20 5b 65 78 70 72 20 7b 24 70 61  [list [expr {$pa
1b150 64 78 2b 35 2a 24 66 69 78 65 64 57 69 64 74 68  dx+5*$fixedWidth
1b160 7d 5d 20 5b 65 78 70 72 20 7b 24 70 61 64 79 2b  }] [expr {$pady+
1b170 32 2a 24 66 69 78 65 64 48 65 69 67 68 74 7d 5d  2*$fixedHeight}]
1b180 20 24 66 69 78 65 64 57 69 64 74 68 20 24 66 69   $fixedWidth $fi
1b190 78 65 64 48 65 69 67 68 74 5d 20 5c 0a 20 20 20  xedHeight] \.   
1b1a0 20 5b 6c 69 73 74 20 24 70 61 64 78 20 5b 65 78   [list $padx [ex
1b1b0 70 72 20 7b 24 70 61 64 79 2b 34 2a 24 66 69 78  pr {$pady+4*$fix
1b1c0 65 64 48 65 69 67 68 74 7d 5d 20 24 66 69 78 65  edHeight}] $fixe
1b1d0 64 57 69 64 74 68 20 24 66 69 78 65 64 48 65 69  dWidth $fixedHei
1b1e0 67 68 74 5d 20 5c 0a 20 20 20 20 7b 7d 5d 0a 0a  ght] \.    {}]..
1b1f0 74 65 73 74 20 74 65 78 74 44 69 73 70 2d 32 32  test textDisp-22
1b200 2e 32 20 7b 54 6b 54 65 78 74 43 68 61 72 42 62  .2 {TkTextCharBb
1b210 6f 78 7d 20 7b 0a 20 20 20 20 2e 74 20 63 6f 6e  ox} {.    .t con
1b220 66 69 67 20 2d 77 72 61 70 20 6e 6f 6e 65 0a 20  fig -wrap none. 
1b230 20 20 20 2e 74 20 79 76 69 65 77 20 34 38 2e 30     .t yview 48.0
1b240 0a 20 20 20 20 6c 69 73 74 20 5b 2e 74 20 62 62  .    list [.t bb
1b250 6f 78 20 35 30 2e 35 5d 20 5b 2e 74 20 62 62 6f  ox 50.5] [.t bbo
1b260 78 20 35 30 2e 34 30 5d 20 5b 2e 74 20 62 62 6f  x 50.40] [.t bbo
1b270 78 20 35 37 2e 30 5d 0a 7d 20 5b 6c 69 73 74 20  x 57.0].} [list 
1b280 5c 0a 20 20 20 20 5b 6c 69 73 74 20 5b 65 78 70  \.    [list [exp
1b290 72 20 7b 24 70 61 64 78 2b 35 2a 24 66 69 78 65  r {$padx+5*$fixe
1b2a0 64 57 69 64 74 68 7d 5d 20 5b 65 78 70 72 20 7b  dWidth}] [expr {
1b2b0 24 70 61 64 79 2b 32 2a 24 66 69 78 65 64 48 65  $pady+2*$fixedHe
1b2c0 69 67 68 74 7d 5d 20 24 66 69 78 65 64 57 69 64  ight}] $fixedWid
1b2d0 74 68 20 24 66 69 78 65 64 48 65 69 67 68 74 5d  th $fixedHeight]
1b2e0 20 5c 0a 20 20 20 20 7b 7d 20 5c 0a 20 20 20 20   \.    {} \.    
1b2f0 5b 6c 69 73 74 20 24 70 61 64 78 20 5b 65 78 70  [list $padx [exp
1b300 72 20 7b 24 70 61 64 79 2b 39 2a 24 66 69 78 65  r {$pady+9*$fixe
1b310 64 48 65 69 67 68 74 7d 5d 20 24 66 69 78 65 64  dHeight}] $fixed
1b320 57 69 64 74 68 20 24 66 69 78 65 64 48 65 69 67  Width $fixedHeig
1b330 68 74 5d 5d 0a 0a 74 65 73 74 20 74 65 78 74 44  ht]]..test textD
1b340 69 73 70 2d 32 32 2e 33 20 7b 54 6b 54 65 78 74  isp-22.3 {TkText
1b350 43 68 61 72 42 62 6f 78 2c 20 63 75 74 2d 6f 66  CharBbox, cut-of
1b360 66 20 6c 69 6e 65 73 7d 20 7b 0a 20 20 20 20 2e  f lines} {.    .
1b370 74 20 63 6f 6e 66 69 67 20 2d 77 72 61 70 20 63  t config -wrap c
1b380 68 61 72 0a 20 20 20 20 2e 74 20 79 76 69 65 77  har.    .t yview
1b390 20 31 30 2e 30 0a 20 20 20 20 77 6d 20 67 65 6f   10.0.    wm geo
1b3a0 6d 20 2e 20 24 7b 77 69 64 74 68 7d 78 5b 65 78  m . ${width}x[ex
1b3b0 70 72 20 24 68 65 69 67 68 74 2d 31 5d 0a 20 20  pr $height-1].  
1b3c0 20 20 75 70 64 61 74 65 0a 20 20 20 20 6c 69 73    update.    lis
1b3d0 74 20 5b 2e 74 20 62 62 6f 78 20 31 39 2e 31 5d  t [.t bbox 19.1]
1b3e0 20 5b 2e 74 20 62 62 6f 78 20 32 30 2e 31 5d 0a   [.t bbox 20.1].
1b3f0 7d 20 5b 6c 69 73 74 20 5c 0a 20 20 20 20 5b 6c  } [list \.    [l
1b400 69 73 74 20 5b 65 78 70 72 20 7b 24 70 61 64 78  ist [expr {$padx
1b410 2b 24 66 69 78 65 64 57 69 64 74 68 7d 5d 20 5b  +$fixedWidth}] [
1b420 65 78 70 72 20 7b 24 70 61 64 79 2b 39 2a 24 66  expr {$pady+9*$f
1b430 69 78 65 64 48 65 69 67 68 74 7d 5d 20 24 66 69  ixedHeight}] $fi
1b440 78 65 64 57 69 64 74 68 20 24 66 69 78 65 64 48  xedWidth $fixedH
1b450 65 69 67 68 74 5d 20 5c 0a 20 20 20 20 5b 6c 69  eight] \.    [li
1b460 73 74 20 5b 65 78 70 72 20 7b 24 70 61 64 78 2b  st [expr {$padx+
1b470 24 66 69 78 65 64 57 69 64 74 68 7d 5d 20 5b 65  $fixedWidth}] [e
1b480 78 70 72 20 7b 24 70 61 64 79 2b 31 30 2a 24 66  xpr {$pady+10*$f
1b490 69 78 65 64 48 65 69 67 68 74 7d 5d 20 24 66 69  ixedHeight}] $fi
1b4a0 78 65 64 57 69 64 74 68 20 5b 65 78 70 72 20 7b  xedWidth [expr {
1b4b0 28 24 68 65 69 67 68 74 2d 31 29 2d 28 31 30 2a  ($height-1)-(10*
1b4c0 24 66 69 78 65 64 48 65 69 67 68 74 29 2d 32 2a  $fixedHeight)-2*
1b4d0 24 70 61 64 79 7d 5d 5d 5d 0a 0a 74 65 73 74 20  $pady}]]]..test 
1b4e0 74 65 78 74 44 69 73 70 2d 32 32 2e 34 20 7b 54  textDisp-22.4 {T
1b4f0 6b 54 65 78 74 43 68 61 72 42 62 6f 78 2c 20 63  kTextCharBbox, c
1b500 75 74 2d 6f 66 66 20 6c 69 6e 65 73 7d 20 7b 0a  ut-off lines} {.
1b510 20 20 20 20 2e 74 20 63 6f 6e 66 69 67 20 2d 77      .t config -w
1b520 72 61 70 20 63 68 61 72 0a 20 20 20 20 2e 74 20  rap char.    .t 
1b530 79 76 69 65 77 20 31 30 2e 30 0a 20 20 20 20 77  yview 10.0.    w
1b540 6d 20 67 65 6f 6d 20 2e 20 24 7b 77 69 64 74 68  m geom . ${width
1b550 7d 78 5b 65 78 70 72 20 24 68 65 69 67 68 74 2b  }x[expr $height+
1b560 31 5d 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20  1].    update.  
1b570 20 20 6c 69 73 74 20 5b 2e 74 20 62 62 6f 78 20    list [.t bbox 
1b580 31 39 2e 31 5d 20 5b 2e 74 20 62 62 6f 78 20 32  19.1] [.t bbox 2
1b590 30 2e 31 5d 0a 7d 20 5b 6c 69 73 74 20 5c 0a 20  0.1].} [list \. 
1b5a0 20 20 20 5b 6c 69 73 74 20 5b 65 78 70 72 20 7b     [list [expr {
1b5b0 24 70 61 64 78 2b 24 66 69 78 65 64 57 69 64 74  $padx+$fixedWidt
1b5c0 68 7d 5d 20 5b 65 78 70 72 20 7b 24 70 61 64 79  h}] [expr {$pady
1b5d0 2b 39 2a 24 66 69 78 65 64 48 65 69 67 68 74 7d  +9*$fixedHeight}
1b5e0 5d 20 24 66 69 78 65 64 57 69 64 74 68 20 24 66  ] $fixedWidth $f
1b5f0 69 78 65 64 48 65 69 67 68 74 5d 20 5c 0a 20 20  ixedHeight] \.  
1b600 20 20 5b 6c 69 73 74 20 5b 65 78 70 72 20 7b 24    [list [expr {$
1b610 70 61 64 78 2b 24 66 69 78 65 64 57 69 64 74 68  padx+$fixedWidth
1b620 7d 5d 20 5b 65 78 70 72 20 7b 24 70 61 64 79 2b  }] [expr {$pady+
1b630 31 30 2a 24 66 69 78 65 64 48 65 69 67 68 74 7d  10*$fixedHeight}
1b640 5d 20 24 66 69 78 65 64 57 69 64 74 68 20 5b 65  ] $fixedWidth [e
1b650 78 70 72 20 7b 28 24 68 65 69 67 68 74 2b 31 29  xpr {($height+1)
1b660 2d 28 31 30 2a 24 66 69 78 65 64 48 65 69 67 68  -(10*$fixedHeigh
1b670 74 29 2d 32 2a 24 70 61 64 79 7d 5d 5d 5d 0a 0a  t)-2*$pady}]]]..
1b680 74 65 73 74 20 74 65 78 74 44 69 73 70 2d 32 32  test textDisp-22
1b690 2e 35 20 7b 54 6b 54 65 78 74 43 68 61 72 42 62  .5 {TkTextCharBb
1b6a0 6f 78 2c 20 63 75 74 2d 6f 66 66 20 63 68 61 72  ox, cut-off char
1b6b0 7d 20 7b 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69  } {.    .t confi
1b6c0 67 20 2d 77 72 61 70 20 6e 6f 6e 65 0a 20 20 20  g -wrap none.   
1b6d0 20 2e 74 20 79 76 69 65 77 20 31 30 2e 30 0a 20   .t yview 10.0. 
1b6e0 20 20 20 77 6d 20 67 65 6f 6d 20 2e 20 5b 65 78     wm geom . [ex
1b6f0 70 72 20 7b 28 37 2a 24 66 69 78 65 64 57 69 64  pr {(7*$fixedWid
1b700 74 68 29 2d 34 2b 31 30 30 2b 32 2a 24 70 61 64  th)-4+100+2*$pad
1b710 78 7d 5d 78 24 68 65 69 67 68 74 0a 20 20 20 20  x}]x$height.    
1b720 75 70 64 61 74 65 0a 20 20 20 20 2e 74 20 62 62  update.    .t bb
1b730 6f 78 20 31 35 2e 36 0a 7d 20 5b 6c 69 73 74 20  ox 15.6.} [list 
1b740 5b 65 78 70 72 20 7b 24 70 61 64 78 2b 36 2a 24  [expr {$padx+6*$
1b750 66 69 78 65 64 57 69 64 74 68 7d 5d 20 5b 65 78  fixedWidth}] [ex
1b760 70 72 20 7b 24 70 61 64 79 2b 35 2a 24 66 69 78  pr {$pady+5*$fix
1b770 65 64 48 65 69 67 68 74 7d 5d 20 5b 65 78 70 72  edHeight}] [expr
1b780 20 7b 24 66 69 78 65 64 57 69 64 74 68 2d 34 7d   {$fixedWidth-4}
1b790 5d 20 24 66 69 78 65 64 48 65 69 67 68 74 5d 0a  ] $fixedHeight].
1b7a0 0a 74 65 73 74 20 74 65 78 74 44 69 73 70 2d 32  .test textDisp-2
1b7b0 32 2e 36 20 7b 54 6b 54 65 78 74 43 68 61 72 42  2.6 {TkTextCharB
1b7c0 62 6f 78 2c 20 6c 69 6e 65 20 76 69 73 69 62 6c  box, line visibl
1b7d0 65 20 62 75 74 20 6e 6f 74 20 63 68 61 72 7d 20  e but not char} 
1b7e0 7b 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69 67 20  {.    .t config 
1b7f0 2d 77 72 61 70 20 63 68 61 72 0a 20 20 20 20 2e  -wrap char.    .
1b800 74 20 79 76 69 65 77 20 31 30 2e 30 0a 20 20 20  t yview 10.0.   
1b810 20 2e 74 20 74 61 67 20 61 64 64 20 62 69 67 66   .t tag add bigf
1b820 69 78 20 32 30 2e 32 20 32 30 2e 35 0a 20 20 20  ix 20.2 20.5.   
1b830 20 77 6d 20 67 65 6f 6d 20 2e 20 24 7b 77 69 64   wm geom . ${wid
1b840 74 68 7d 78 5b 65 78 70 72 20 24 68 65 69 67 68  th}x[expr $heigh
1b850 74 2b 33 5d 0a 20 20 20 20 75 70 64 61 74 65 0a  t+3].    update.
1b860 20 20 20 20 6c 69 73 74 20 5b 2e 74 20 62 62 6f      list [.t bbo
1b870 78 20 31 39 2e 31 5d 20 5b 2e 74 20 62 62 6f 78  x 19.1] [.t bbox
1b880 20 32 30 2e 31 5d 20 5b 2e 74 20 62 62 6f 78 20   20.1] [.t bbox 
1b890 32 30 2e 32 5d 0a 7d 20 5b 6c 69 73 74 20 5c 0a  20.2].} [list \.
1b8a0 20 20 20 20 5b 6c 69 73 74 20 5b 65 78 70 72 20      [list [expr 
1b8b0 7b 24 70 61 64 78 2b 24 66 69 78 65 64 57 69 64  {$padx+$fixedWid
1b8c0 74 68 7d 5d 20 5b 65 78 70 72 20 7b 24 70 61 64  th}] [expr {$pad
1b8d0 79 2b 39 2a 24 66 69 78 65 64 48 65 69 67 68 74  y+9*$fixedHeight
1b8e0 7d 5d 20 24 66 69 78 65 64 57 69 64 74 68 20 24  }] $fixedWidth $
1b8f0 66 69 78 65 64 48 65 69 67 68 74 5d 20 5c 0a 20  fixedHeight] \. 
1b900 20 20 20 7b 7d 20 5c 0a 20 20 20 20 5b 6c 69 73     {} \.    [lis
1b910 74 20 5b 65 78 70 72 20 7b 24 70 61 64 78 2b 32  t [expr {$padx+2
1b920 2a 24 66 69 78 65 64 57 69 64 74 68 7d 5d 20 5b  *$fixedWidth}] [
1b930 65 78 70 72 20 7b 24 70 61 64 79 2b 31 30 2a 24  expr {$pady+10*$
1b940 66 69 78 65 64 48 65 69 67 68 74 7d 5d 20 24 62  fixedHeight}] $b
1b950 69 67 46 69 78 65 64 57 69 64 74 68 20 5b 65 78  igFixedWidth [ex
1b960 70 72 20 7b 28 24 68 65 69 67 68 74 2b 33 29 2d  pr {($height+3)-
1b970 32 2a 24 70 61 64 79 2d 28 31 30 2a 24 66 69 78  2*$pady-(10*$fix
1b980 65 64 48 65 69 67 68 74 29 7d 5d 5d 5d 0a 2e 74  edHeight)}]]]..t
1b990 20 74 61 67 20 72 65 6d 6f 76 65 20 62 69 67 66   tag remove bigf
1b9a0 69 78 20 31 2e 30 20 65 6e 64 0a 77 6d 20 67 65  ix 1.0 end.wm ge
1b9b0 6f 6d 20 2e 20 7b 7d 0a 75 70 64 61 74 65 0a 0a  om . {}.update..
1b9c0 74 65 73 74 20 74 65 78 74 44 69 73 70 2d 32 32  test textDisp-22
1b9d0 2e 37 20 7b 54 6b 54 65 78 74 43 68 61 72 42 62  .7 {TkTextCharBb
1b9e0 6f 78 2c 20 64 69 66 66 65 72 65 6e 74 20 63 68  ox, different ch
1b9f0 61 72 61 63 74 65 72 20 73 69 7a 65 73 7d 20 7b  aracter sizes} {
1ba00 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69 67 20 2d  .    .t config -
1ba10 77 72 61 70 20 63 68 61 72 0a 20 20 20 20 2e 74  wrap char.    .t
1ba20 20 79 76 69 65 77 20 31 30 2e 30 0a 20 20 20 20   yview 10.0.    
1ba30 2e 74 20 74 61 67 20 61 64 64 20 62 69 67 66 69  .t tag add bigfi
1ba40 78 20 31 32 2e 32 20 31 32 2e 35 0a 20 20 20 20  x 12.2 12.5.    
1ba50 75 70 64 61 74 65 0a 20 20 20 20 6c 69 73 74 20  update.    list 
1ba60 5b 2e 74 20 62 62 6f 78 20 31 32 2e 31 5d 20 5b  [.t bbox 12.1] [
1ba70 2e 74 20 62 62 6f 78 20 31 32 2e 32 5d 0a 7d 20  .t bbox 12.2].} 
1ba80 5b 6c 69 73 74 20 5c 0a 20 20 20 20 5b 6c 69 73  [list \.    [lis
1ba90 74 20 5b 65 78 70 72 20 7b 24 70 61 64 78 2b 24  t [expr {$padx+$
1baa0 66 69 78 65 64 57 69 64 74 68 7d 5d 20 5b 65 78  fixedWidth}] [ex
1bab0 70 72 20 7b 24 70 61 64 79 2b 32 2a 24 66 69 78  pr {$pady+2*$fix
1bac0 65 64 48 65 69 67 68 74 2b 24 62 69 67 46 69 78  edHeight+$bigFix
1bad0 65 64 41 73 63 65 6e 74 44 69 66 66 7d 5d 20 24  edAscentDiff}] $
1bae0 66 69 78 65 64 57 69 64 74 68 20 24 66 69 78 65  fixedWidth $fixe
1baf0 64 48 65 69 67 68 74 5d 20 5c 0a 20 20 20 20 5b  dHeight] \.    [
1bb00 6c 69 73 74 20 5b 65 78 70 72 20 7b 24 70 61 64  list [expr {$pad
1bb10 78 2b 32 2a 24 66 69 78 65 64 57 69 64 74 68 7d  x+2*$fixedWidth}
1bb20 5d 20 5b 65 78 70 72 20 7b 24 70 61 64 79 2b 32  ] [expr {$pady+2
1bb30 2a 24 66 69 78 65 64 48 65 69 67 68 74 7d 5d 20  *$fixedHeight}] 
1bb40 24 62 69 67 46 69 78 65 64 57 69 64 74 68 20 24  $bigFixedWidth $
1bb50 62 69 67 46 69 78 65 64 48 65 69 67 68 74 5d 5d  bigFixedHeight]]
1bb60 0a 2e 74 20 74 61 67 20 72 65 6d 6f 76 65 20 62  ..t tag remove b
1bb70 69 67 20 31 2e 30 20 65 6e 64 0a 0a 74 65 73 74  ig 1.0 end..test
1bb80 20 74 65 78 74 44 69 73 70 2d 32 32 2e 38 20 7b   textDisp-22.8 {
1bb90 54 6b 54 65 78 74 43 68 61 72 42 62 6f 78 2c 20  TkTextCharBbox, 
1bba0 68 6f 72 69 7a 6f 6e 74 61 6c 20 73 63 72 6f 6c  horizontal scrol
1bbb0 6c 69 6e 67 7d 20 7b 0a 20 20 20 20 2e 74 20 63  ling} {.    .t c
1bbc0 6f 6e 66 69 67 75 72 65 20 2d 77 72 61 70 20 6e  onfigure -wrap n
1bbd0 6f 6e 65 0a 20 20 20 20 2e 74 20 64 65 6c 65 74  one.    .t delet
1bbe0 65 20 31 2e 30 20 65 6e 64 0a 20 20 20 20 2e 74  e 1.0 end.    .t
1bbf0 20 69 6e 73 65 72 74 20 65 6e 64 20 22 31 32 33   insert end "123
1bc00 34 35 5c 6e 22 0a 20 20 20 20 2e 74 20 69 6e 73  45\n".    .t ins
1bc10 65 72 74 20 65 6e 64 20 22 61 62 63 64 65 66 67  ert end "abcdefg
1bc20 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77  hijklmnopqrstuvw
1bc30 78 79 7a 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d  xyzABCDEFGHIJKLM
1bc40 4e 4f 50 51 52 53 54 55 56 57 58 59 5a 22 0a 20  NOPQRSTUVWXYZ". 
1bc50 20 20 20 2e 74 20 78 76 69 65 77 20 73 63 72 6f     .t xview scro
1bc60 6c 6c 20 34 20 75 6e 69 74 73 0a 20 20 20 20 6c  ll 4 units.    l
1bc70 69 73 74 20 5b 2e 74 20 62 62 6f 78 20 31 2e 33  ist [.t bbox 1.3
1bc80 5d 20 5b 2e 74 20 62 62 6f 78 20 31 2e 34 5d 20  ] [.t bbox 1.4] 
1bc90 5b 2e 74 20 62 62 6f 78 20 32 2e 33 5d 20 5b 2e  [.t bbox 2.3] [.
1bca0 74 20 62 62 6f 78 20 32 2e 34 5d 20 5c 0a 09 20  t bbox 2.4] \.. 
1bcb0 20 20 20 5b 2e 74 20 62 62 6f 78 20 32 2e 32 33     [.t bbox 2.23
1bcc0 5d 20 5b 2e 74 20 62 62 6f 78 20 32 2e 32 34 5d  ] [.t bbox 2.24]
1bcd0 0a 7d 20 5b 6c 69 73 74 20 7b 7d 20 5c 0a 20 20  .} [list {} \.  
1bce0 20 20 5b 6c 69 73 74 20 24 70 61 64 78 20 24 70    [list $padx $p
1bcf0 61 64 79 20 24 66 69 78 65 64 57 69 64 74 68 20  ady $fixedWidth 
1bd00 24 66 69 78 65 64 48 65 69 67 68 74 5d 20 5c 0a  $fixedHeight] \.
1bd10 20 20 20 20 7b 7d 20 5c 0a 20 20 20 20 5b 6c 69      {} \.    [li
1bd20 73 74 20 24 70 61 64 78 20 5b 65 78 70 72 20 7b  st $padx [expr {
1bd30 24 70 61 64 79 2b 24 66 69 78 65 64 48 65 69 67  $pady+$fixedHeig
1bd40 68 74 7d 5d 20 24 66 69 78 65 64 57 69 64 74 68  ht}] $fixedWidth
1bd50 20 24 66 69 78 65 64 48 65 69 67 68 74 5d 20 5c   $fixedHeight] \
1bd60 0a 20 20 20 20 5b 6c 69 73 74 20 5b 65 78 70 72  .    [list [expr
1bd70 20 7b 24 70 61 64 78 2b 31 39 2a 24 66 69 78 65   {$padx+19*$fixe
1bd80 64 57 69 64 74 68 7d 5d 20 5b 65 78 70 72 20 7b  dWidth}] [expr {
1bd90 24 70 61 64 79 2b 24 66 69 78 65 64 48 65 69 67  $pady+$fixedHeig
1bda0 68 74 7d 5d 20 24 66 69 78 65 64 57 69 64 74 68  ht}] $fixedWidth
1bdb0 20 24 66 69 78 65 64 48 65 69 67 68 74 5d 20 5c   $fixedHeight] \
1bdc0 0a 20 20 20 20 7b 7d 5d 0a 0a 74 65 73 74 20 74  .    {}]..test t
1bdd0 65 78 74 44 69 73 70 2d 32 32 2e 39 20 7b 54 6b  extDisp-22.9 {Tk
1bde0 54 65 78 74 43 68 61 72 42 62 6f 78 2c 20 68 61  TextCharBbox, ha
1bdf0 6e 64 6c 69 6e 67 20 6f 66 20 73 70 61 63 69 6e  ndling of spacin
1be00 67 7d 20 7b 0a 20 20 20 20 2e 74 20 63 6f 6e 66  g} {.    .t conf
1be10 69 67 75 72 65 20 2d 77 72 61 70 20 63 68 61 72  igure -wrap char
1be20 0a 20 20 20 20 2e 74 20 64 65 6c 65 74 65 20 31  .    .t delete 1
1be30 2e 30 20 65 6e 64 0a 20 20 20 20 2e 74 20 69 6e  .0 end.    .t in
1be40 73 65 72 74 20 31 2e 30 20 22 61 62 63 64 65 66  sert 1.0 "abcdef
1be50 67 68 69 6a 6b 6c 5c 6e 6d 6e 6f 70 71 72 73 74  ghijkl\nmnopqrst
1be60 75 76 77 7a 79 7a 22 0a 20 20 20 20 2e 74 20 74  uvwzyz".    .t t
1be70 61 67 20 63 6f 6e 66 69 67 75 72 65 20 73 70 61  ag configure spa
1be80 63 69 6e 67 20 2d 73 70 61 63 69 6e 67 31 20 38  cing -spacing1 8
1be90 20 2d 73 70 61 63 69 6e 67 33 20 32 0a 20 20 20   -spacing3 2.   
1bea0 20 2e 74 20 74 61 67 20 61 64 64 20 73 70 61 63   .t tag add spac
1beb0 69 6e 67 20 31 2e 30 20 65 6e 64 0a 20 20 20 20  ing 1.0 end.    
1bec0 66 72 61 6d 65 20 2e 74 2e 66 31 20 2d 77 69 64  frame .t.f1 -wid
1bed0 74 68 20 31 30 20 2d 68 65 69 67 68 74 20 34 20  th 10 -height 4 
1bee0 2d 62 67 20 62 6c 61 63 6b 0a 20 20 20 20 66 72  -bg black.    fr
1bef0 61 6d 65 20 2e 74 2e 66 32 20 2d 77 69 64 74 68  ame .t.f2 -width
1bf00 20 31 30 20 2d 68 65 69 67 68 74 20 34 20 2d 62   10 -height 4 -b
1bf10 67 20 62 6c 61 63 6b 0a 20 20 20 20 66 72 61 6d  g black.    fram
1bf20 65 20 2e 74 2e 66 33 20 2d 77 69 64 74 68 20 31  e .t.f3 -width 1
1bf30 30 20 2d 68 65 69 67 68 74 20 34 20 2d 62 67 20  0 -height 4 -bg 
1bf40 62 6c 61 63 6b 0a 20 20 20 20 66 72 61 6d 65 20  black.    frame 
1bf50 2e 74 2e 66 34 20 2d 77 69 64 74 68 20 31 30 20  .t.f4 -width 10 
1bf60 2d 68 65 69 67 68 74 20 34 20 2d 62 67 20 62 6c  -height 4 -bg bl
1bf70 61 63 6b 0a 20 20 20 20 2e 74 20 77 69 6e 64 6f  ack.    .t windo
1bf80 77 20 63 72 65 61 74 65 20 31 2e 33 20 2d 77 69  w create 1.3 -wi
1bf90 6e 64 6f 77 20 2e 74 2e 66 31 20 2d 61 6c 69 67  ndow .t.f1 -alig
1bfa0 6e 20 74 6f 70 0a 20 20 20 20 2e 74 20 77 69 6e  n top.    .t win
1bfb0 64 6f 77 20 63 72 65 61 74 65 20 31 2e 37 20 2d  dow create 1.7 -
1bfc0 77 69 6e 64 6f 77 20 2e 74 2e 66 32 20 2d 61 6c  window .t.f2 -al
1bfd0 69 67 6e 20 63 65 6e 74 65 72 0a 20 20 20 20 2e  ign center.    .
1bfe0 74 20 77 69 6e 64 6f 77 20 63 72 65 61 74 65 20  t window create 
1bff0 32 2e 31 20 2d 77 69 6e 64 6f 77 20 2e 74 2e 66  2.1 -window .t.f
1c000 33 20 2d 61 6c 69 67 6e 20 62 6f 74 74 6f 6d 0a  3 -align bottom.
1c010 20 20 20 20 2e 74 20 77 69 6e 64 6f 77 20 63 72      .t window cr
1c020 65 61 74 65 20 32 2e 31 30 20 2d 77 69 6e 64 6f  eate 2.10 -windo
1c030 77 20 2e 74 2e 66 34 20 2d 61 6c 69 67 6e 20 62  w .t.f4 -align b
1c040 61 73 65 6c 69 6e 65 0a 20 20 20 20 75 70 64 61  aseline.    upda
1c050 74 65 0a 20 20 20 20 6c 69 73 74 20 5b 2e 74 20  te.    list [.t 
1c060 62 62 6f 78 20 2e 74 2e 66 31 5d 20 5b 2e 74 20  bbox .t.f1] [.t 
1c070 62 62 6f 78 20 2e 74 2e 66 32 5d 20 5b 2e 74 20  bbox .t.f2] [.t 
1c080 62 62 6f 78 20 2e 74 2e 66 33 5d 20 5b 2e 74 20  bbox .t.f3] [.t 
1c090 62 62 6f 78 20 2e 74 2e 66 34 5d 20 5c 0a 09 20  bbox .t.f4] \.. 
1c0a0 20 20 20 5b 2e 74 20 62 62 6f 78 20 31 2e 31 5d     [.t bbox 1.1]
1c0b0 20 5b 2e 74 20 62 62 6f 78 20 32 2e 39 5d 0a 7d   [.t bbox 2.9].}
1c0c0 20 5b 6c 69 73 74 20 5c 0a 20 20 20 20 5b 6c 69   [list \.    [li
1c0d0 73 74 20 5b 65 78 70 72 20 7b 24 70 61 64 78 2b  st [expr {$padx+
1c0e0 33 2a 24 66 69 78 65 64 57 69 64 74 68 7d 5d 20  3*$fixedWidth}] 
1c0f0 5b 65 78 70 72 20 7b 24 70 61 64 79 2b 38 7d 5d  [expr {$pady+8}]
1c100 20 31 30 20 34 5d 20 5c 0a 20 20 20 20 5b 6c 69   10 4] \.    [li
1c110 73 74 20 5b 65 78 70 72 20 7b 24 70 61 64 78 2b  st [expr {$padx+
1c120 31 30 2b 36 2a 24 66 69 78 65 64 57 69 64 74 68  10+6*$fixedWidth
1c130 7d 5d 20 5b 65 78 70 72 20 7b 24 70 61 64 79 2b  }] [expr {$pady+
1c140 38 2b 28 24 66 69 78 65 64 48 65 69 67 68 74 2f  8+($fixedHeight/
1c150 32 29 2d 32 7d 5d 20 31 30 20 34 5d 20 5c 0a 20  2)-2}] 10 4] \. 
1c160 20 20 20 5b 6c 69 73 74 20 5b 65 78 70 72 20 7b     [list [expr {
1c170 24 70 61 64 78 2b 24 66 69 78 65 64 57 69 64 74  $padx+$fixedWidt
1c180 68 7d 5d 20 5b 65 78 70 72 20 7b 24 70 61 64 79  h}] [expr {$pady
1c190 2b 32 2a 38 2b 32 2d 34 2b 32 2a 24 66 69 78 65  +2*8+2-4+2*$fixe
1c1a0 64 48 65 69 67 68 74 7d 5d 20 31 30 20 34 5d 20  dHeight}] 10 4] 
1c1b0 5c 0a 20 20 20 20 5b 6c 69 73 74 20 5b 65 78 70  \.    [list [exp
1c1c0 72 20 7b 24 70 61 64 78 2b 31 30 2b 39 2a 24 66  r {$padx+10+9*$f
1c1d0 69 78 65 64 57 69 64 74 68 7d 5d 20 5b 65 78 70  ixedWidth}] [exp
1c1e0 72 20 7b 24 70 61 64 79 2b 32 2a 38 2b 32 2d 34  r {$pady+2*8+2-4
1c1f0 2b 24 66 69 78 65 64 48 65 69 67 68 74 2b 24 66  +$fixedHeight+$f
1c200 69 78 65 64 41 73 63 65 6e 74 7d 5d 20 31 30 20  ixedAscent}] 10 
1c210 34 5d 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20 5b  4] \.    [list [
1c220 65 78 70 72 20 7b 24 70 61 64 78 2b 24 66 69 78  expr {$padx+$fix
1c230 65 64 57 69 64 74 68 7d 5d 20 5b 65 78 70 72 20  edWidth}] [expr 
1c240 7b 24 70 61 64 79 2b 38 7d 5d 20 24 66 69 78 65  {$pady+8}] $fixe
1c250 64 57 69 64 74 68 20 24 66 69 78 65 64 48 65 69  dWidth $fixedHei
1c260 67 68 74 5d 20 5c 0a 20 20 20 20 5b 6c 69 73 74  ght] \.    [list
1c270 20 5b 65 78 70 72 20 7b 24 70 61 64 78 2b 31 30   [expr {$padx+10
1c280 2b 38 2a 24 66 69 78 65 64 57 69 64 74 68 7d 5d  +8*$fixedWidth}]
1c290 20 5b 65 78 70 72 20 7b 24 70 61 64 79 2b 32 2a   [expr {$pady+2*
1c2a0 38 2b 32 2b 24 66 69 78 65 64 48 65 69 67 68 74  8+2+$fixedHeight
1c2b0 7d 5d 20 24 66 69 78 65 64 57 69 64 74 68 20 24  }] $fixedWidth $
1c2c0 66 69 78 65 64 48 65 69 67 68 74 5d 5d 0a 2e 74  fixedHeight]]..t
1c2d0 20 74 61 67 20 64 65 6c 65 74 65 20 73 70 61 63   tag delete spac
1c2e0 69 6e 67 0a 0a 74 65 73 74 20 74 65 78 74 44 69  ing..test textDi
1c2f0 73 70 2d 32 32 2e 31 30 20 7b 54 6b 54 65 78 74  sp-22.10 {TkText
1c300 43 68 61 72 42 62 6f 78 2c 20 68 61 6e 64 6c 69  CharBbox, handli
1c310 6e 67 20 6f 66 20 65 6c 69 64 65 64 20 6c 69 6e  ng of elided lin
1c320 65 73 7d 20 7b 0a 20 20 20 20 2e 74 20 63 6f 6e  es} {.    .t con
1c330 66 69 67 75 72 65 20 2d 77 72 61 70 20 63 68 61  figure -wrap cha
1c340 72 0a 20 20 20 20 2e 74 20 64 65 6c 65 74 65 20  r.    .t delete 
1c350 31 2e 30 20 65 6e 64 0a 20 20 20 20 66 6f 72 20  1.0 end.    for 
1c360 7b 73 65 74 20 69 20 31 7d 20 7b 24 69 20 3c 20  {set i 1} {$i < 
1c370 31 30 7d 20 7b 69 6e 63 72 20 69 7d 20 7b 0a 20  10} {incr i} {. 
1c380 20 20 20 20 20 20 20 2e 74 20 69 6e 73 65 72 74         .t insert
1c390 20 65 6e 64 20 22 4c 69 6e 65 20 24 69 20 2d 20   end "Line $i - 
1c3a0 4c 69 6e 65 20 5b 66 6f 72 6d 61 74 20 25 63 20  Line [format %c 
1c3b0 5b 65 78 70 72 20 36 34 2b 24 69 5d 5d 5c 6e 22  [expr 64+$i]]\n"
1c3c0 0a 20 20 20 20 7d 0a 20 20 20 20 2e 74 20 74 61  .    }.    .t ta
1c3d0 67 20 61 64 64 20 68 69 64 64 65 6e 20 32 2e 38  g add hidden 2.8
1c3e0 20 32 2e 31 33 0a 20 20 20 20 2e 74 20 74 61 67   2.13.    .t tag
1c3f0 20 61 64 64 20 68 69 64 64 65 6e 20 36 2e 38 20   add hidden 6.8 
1c400 37 2e 31 33 0a 20 20 20 20 2e 74 20 74 61 67 20  7.13.    .t tag 
1c410 63 6f 6e 66 69 67 75 72 65 20 68 69 64 64 65 6e  configure hidden
1c420 20 2d 65 6c 69 64 65 20 74 72 75 65 0a 20 20 20   -elide true.   
1c430 20 75 70 64 61 74 65 0a 20 20 20 20 6c 69 73 74   update.    list
1c440 20 5c 0a 20 20 20 20 20 20 20 20 5b 65 78 70 72   \.        [expr
1c450 20 7b 5b 6c 69 6e 64 65 78 20 5b 2e 74 20 62 62   {[lindex [.t bb
1c460 6f 78 20 32 2e 39 5d 20 20 30 5d 20 2d 20 5b 6c  ox 2.9]  0] - [l
1c470 69 6e 64 65 78 20 5b 2e 74 20 62 62 6f 78 20 32  index [.t bbox 2
1c480 2e 38 5d 20 30 5d 7d 5d 20 5c 0a 20 20 20 20 20  .8] 0]}] \.     
1c490 20 20 20 5b 65 78 70 72 20 7b 5b 6c 69 6e 64 65     [expr {[linde
1c4a0 78 20 5b 2e 74 20 62 62 6f 78 20 32 2e 31 30 5d  x [.t bbox 2.10]
1c4b0 20 30 5d 20 2d 20 5b 6c 69 6e 64 65 78 20 5b 2e   0] - [lindex [.
1c4c0 74 20 62 62 6f 78 20 32 2e 38 5d 20 30 5d 7d 5d  t bbox 2.8] 0]}]
1c4d0 20 5c 0a 20 20 20 20 20 20 20 20 5b 65 78 70 72   \.        [expr
1c4e0 20 7b 5b 6c 69 6e 64 65 78 20 5b 2e 74 20 62 62   {[lindex [.t bb
1c4f0 6f 78 20 32 2e 31 33 5d 20 30 5d 20 2d 20 5b 6c  ox 2.13] 0] - [l
1c500 69 6e 64 65 78 20 5b 2e 74 20 62 62 6f 78 20 32  index [.t bbox 2
1c510 2e 38 5d 20 30 5d 7d 5d 20 5c 0a 20 20 20 20 20  .8] 0]}] \.     
1c520 20 20 20 5b 65 78 70 72 20 7b 5b 6c 69 6e 64 65     [expr {[linde
1c530 78 20 5b 2e 74 20 62 62 6f 78 20 36 2e 39 5d 20  x [.t bbox 6.9] 
1c540 20 30 5d 20 2d 20 5b 6c 69 6e 64 65 78 20 5b 2e   0] - [lindex [.
1c550 74 20 62 62 6f 78 20 36 2e 38 5d 20 30 5d 7d 5d  t bbox 6.8] 0]}]
1c560 20 5c 0a 20 20 20 20 20 20 20 20 5b 65 78 70 72   \.        [expr
1c570 20 7b 5b 6c 69 6e 64 65 78 20 5b 2e 74 20 62 62   {[lindex [.t bb
1c580 6f 78 20 36 2e 31 30 5d 20 30 5d 20 2d 20 5b 6c  ox 6.10] 0] - [l
1c590 69 6e 64 65 78 20 5b 2e 74 20 62 62 6f 78 20 36  index [.t bbox 6
1c5a0 2e 38 5d 20 30 5d 7d 5d 20 5c 0a 20 20 20 20 20  .8] 0]}] \.     
1c5b0 20 20 20 5b 65 78 70 72 20 7b 5b 6c 69 6e 64 65     [expr {[linde
1c5c0 78 20 5b 2e 74 20 62 62 6f 78 20 36 2e 31 33 5d  x [.t bbox 6.13]
1c5d0 20 30 5d 20 2d 20 5b 6c 69 6e 64 65 78 20 5b 2e   0] - [lindex [.
1c5e0 74 20 62 62 6f 78 20 36 2e 38 5d 20 30 5d 7d 5d  t bbox 6.8] 0]}]
1c5f0 20 5c 0a 20 20 20 20 20 20 20 20 5b 65 78 70 72   \.        [expr
1c600 20 7b 5b 6c 69 6e 64 65 78 20 5b 2e 74 20 62 62   {[lindex [.t bb
1c610 6f 78 20 36 2e 31 34 5d 20 30 5d 20 2d 20 5b 6c  ox 6.14] 0] - [l
1c620 69 6e 64 65 78 20 5b 2e 74 20 62 62 6f 78 20 36  index [.t bbox 6
1c630 2e 38 5d 20 30 5d 7d 5d 20 5c 0a 20 20 20 20 20  .8] 0]}] \.     
1c640 20 20 20 5b 65 78 70 72 20 7b 5b 6c 69 6e 64 65     [expr {[linde
1c650 78 20 5b 2e 74 20 62 62 6f 78 20 36 2e 31 35 5d  x [.t bbox 6.15]
1c660 20 30 5d 20 2d 20 5b 6c 69 6e 64 65 78 20 5b 2e   0] - [lindex [.
1c670 74 20 62 62 6f 78 20 36 2e 38 5d 20 30 5d 7d 5d  t bbox 6.8] 0]}]
1c680 20 5c 0a 20 20 20 20 20 20 20 20 5b 65 78 70 72   \.        [expr
1c690 20 7b 5b 6c 69 6e 64 65 78 20 5b 2e 74 20 62 62   {[lindex [.t bb
1c6a0 6f 78 20 37 2e 30 5d 20 20 30 5d 20 2d 20 5b 6c  ox 7.0]  0] - [l
1c6b0 69 6e 64 65 78 20 5b 2e 74 20 62 62 6f 78 20 36  index [.t bbox 6
1c6c0 2e 38 5d 20 30 5d 7d 5d 20 5c 0a 20 20 20 20 20  .8] 0]}] \.     
1c6d0 20 20 20 5b 65 78 70 72 20 7b 5b 6c 69 6e 64 65     [expr {[linde
1c6e0 78 20 5b 2e 74 20 62 62 6f 78 20 37 2e 31 5d 20  x [.t bbox 7.1] 
1c6f0 20 30 5d 20 2d 20 5b 6c 69 6e 64 65 78 20 5b 2e   0] - [lindex [.
1c700 74 20 62 62 6f 78 20 36 2e 38 5d 20 30 5d 7d 5d  t bbox 6.8] 0]}]
1c710 20 5c 0a 20 20 20 20 20 20 20 20 5b 65 78 70 72   \.        [expr
1c720 20 7b 5b 6c 69 6e 64 65 78 20 5b 2e 74 20 62 62   {[lindex [.t bb
1c730 6f 78 20 37 2e 31 32 5d 20 30 5d 20 2d 20 5b 6c  ox 7.12] 0] - [l
1c740 69 6e 64 65 78 20 5b 2e 74 20 62 62 6f 78 20 36  index [.t bbox 6
1c750 2e 38 5d 20 30 5d 7d 5d 0a 7d 20 5b 6c 69 73 74  .8] 0]}].} [list
1c760 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30   0 0 0 0 0 0 0 0
1c770 20 30 20 30 20 30 5d 0a 0a 74 65 73 74 20 74 65   0 0 0]..test te
1c780 78 74 44 69 73 70 2d 32 32 2e 31 31 20 7b 54 6b  xtDisp-22.11 {Tk
1c790 54 65 78 74 43 68 61 72 42 62 6f 78 2c 20 68 61  TextCharBbox, ha
1c7a0 6e 64 6c 69 6e 67 20 6f 66 20 77 72 61 70 70 65  ndling of wrappe
1c7b0 64 20 65 6c 69 64 65 64 20 6c 69 6e 65 73 7d 20  d elided lines} 
1c7c0 7b 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69 67 75  {.    .t configu
1c7d0 72 65 20 2d 77 72 61 70 20 63 68 61 72 0a 20 20  re -wrap char.  
1c7e0 20 20 2e 74 20 64 65 6c 65 74 65 20 31 2e 30 20    .t delete 1.0 
1c7f0 65 6e 64 0a 20 20 20 20 66 6f 72 20 7b 73 65 74  end.    for {set
1c800 20 69 20 31 7d 20 7b 24 69 20 3c 20 31 30 7d 20   i 1} {$i < 10} 
1c810 7b 69 6e 63 72 20 69 7d 20 7b 0a 20 20 20 20 20  {incr i} {.     
1c820 20 20 20 2e 74 20 69 6e 73 65 72 74 20 65 6e 64     .t insert end
1c830 20 22 4c 69 6e 65 20 24 69 20 2d 20 4c 69 6e 65   "Line $i - Line
1c840 20 5f 24 69 20 2d 20 4c 69 6e 65 73 20 2e 24 69   _$i - Lines .$i
1c850 20 2d 20 4c 69 6e 65 20 5b 66 6f 72 6d 61 74 20   - Line [format 
1c860 25 63 20 5b 65 78 70 72 20 36 34 2b 24 69 5d 5d  %c [expr 64+$i]]
1c870 5c 6e 22 0a 20 20 20 20 7d 0a 20 20 20 20 2e 74  \n".    }.    .t
1c880 20 74 61 67 20 61 64 64 20 68 69 64 64 65 6e 20   tag add hidden 
1c890 31 2e 33 30 20 32 2e 35 0a 20 20 20 20 2e 74 20  1.30 2.5.    .t 
1c8a0 74 61 67 20 63 6f 6e 66 69 67 75 72 65 20 68 69  tag configure hi
1c8b0 64 64 65 6e 20 2d 65 6c 69 64 65 20 74 72 75 65  dden -elide true
1c8c0 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20 20 20  .    update.    
1c8d0 6c 69 73 74 20 5c 0a 20 20 20 20 20 20 20 20 5b  list \.        [
1c8e0 65 78 70 72 20 7b 5b 6c 69 6e 64 65 78 20 5b 2e  expr {[lindex [.
1c8f0 74 20 62 62 6f 78 20 31 2e 33 30 5d 20 30 5d 20  t bbox 1.30] 0] 
1c900 2d 20 5b 6c 69 6e 64 65 78 20 5b 2e 74 20 62 62  - [lindex [.t bb
1c910 6f 78 20 32 2e 34 5d 20 20 30 5d 7d 5d 20 5c 0a  ox 2.4]  0]}] \.
1c920 20 20 20 20 20 20 20 20 5b 65 78 70 72 20 7b 5b          [expr {[
1c930 6c 69 6e 64 65 78 20 5b 2e 74 20 62 62 6f 78 20  lindex [.t bbox 
1c940 31 2e 33 30 5d 20 30 5d 20 2d 20 5b 6c 69 6e 64  1.30] 0] - [lind
1c950 65 78 20 5b 2e 74 20 62 62 6f 78 20 32 2e 35 5d  ex [.t bbox 2.5]
1c960 20 20 30 5d 7d 5d 0a 7d 20 5b 6c 69 73 74 20 30    0]}].} [list 0
1c970 20 30 5d 0a 0a 2e 74 20 64 65 6c 65 74 65 20 31   0]...t delete 1
1c980 2e 30 20 65 6e 64 0a 2e 74 20 69 6e 73 65 72 74  .0 end..t insert
1c990 20 65 6e 64 20 22 4c 69 6e 65 20 31 22 0a 66 6f   end "Line 1".fo
1c9a0 72 20 7b 73 65 74 20 69 20 32 7d 20 7b 24 69 20  r {set i 2} {$i 
1c9b0 3c 3d 20 32 30 30 7d 20 7b 69 6e 63 72 20 69 7d  <= 200} {incr i}
1c9c0 20 7b 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74   {.    .t insert
1c9d0 20 65 6e 64 20 22 5c 6e 4c 69 6e 65 20 24 69 22   end "\nLine $i"
1c9e0 0a 7d 0a 2e 74 20 63 6f 6e 66 69 67 75 72 65 20  .}..t configure 
1c9f0 2d 77 72 61 70 20 77 6f 72 64 0a 2e 74 20 64 65  -wrap word..t de
1ca00 6c 65 74 65 20 35 30 2e 30 20 35 31 2e 30 0a 2e  lete 50.0 51.0..
1ca10 74 20 69 6e 73 65 72 74 20 35 30 2e 30 20 22 54  t insert 50.0 "T
1ca20 68 69 73 20 69 73 20 61 20 6c 6f 6e 67 20 6c 69  his is a long li
1ca30 6e 65 2c 20 6f 6e 65 20 74 68 61 74 20 77 69 6c  ne, one that wil
1ca40 6c 20 77 72 61 70 20 61 72 6f 75 6e 64 20 74 77  l wrap around tw
1ca50 69 63 65 2e 5c 6e 22 0a 75 70 64 61 74 65 0a 0a  ice.\n".update..
1ca60 74 65 73 74 20 74 65 78 74 44 69 73 70 2d 32 33  test textDisp-23
1ca70 2e 31 20 7b 54 6b 54 65 78 74 44 4c 69 6e 65 49  .1 {TkTextDLineI
1ca80 6e 66 6f 7d 20 7b 0a 20 20 20 20 2e 74 20 63 6f  nfo} {.    .t co
1ca90 6e 66 69 67 20 2d 77 72 61 70 20 77 6f 72 64 0a  nfig -wrap word.
1caa0 20 20 20 20 2e 74 20 79 76 69 65 77 20 34 38 2e      .t yview 48.
1cab0 30 0a 20 20 20 20 6c 69 73 74 20 5b 2e 74 20 64  0.    list [.t d
1cac0 6c 69 6e 65 69 6e 66 6f 20 34 37 2e 33 5d 20 5b  lineinfo 47.3] [
1cad0 2e 74 20 64 6c 69 6e 65 69 6e 66 6f 20 34 38 2e  .t dlineinfo 48.
1cae0 30 5d 20 5b 2e 74 20 64 6c 69 6e 65 69 6e 66 6f  0] [.t dlineinfo
1caf0 20 35 30 2e 34 30 5d 20 5c 0a 09 20 20 20 20 5b   50.40] \..    [
1cb00 2e 74 20 64 6c 69 6e 65 69 6e 66 6f 20 35 36 2e  .t dlineinfo 56.
1cb10 30 5d 0a 7d 20 5b 6c 69 73 74 20 7b 7d 20 5c 0a  0].} [list {} \.
1cb20 20 20 20 20 5b 6c 69 73 74 20 24 70 61 64 78 20      [list $padx 
1cb30 24 70 61 64 79 20 5b 65 78 70 72 20 7b 37 2a 24  $pady [expr {7*$
1cb40 66 69 78 65 64 57 69 64 74 68 7d 5d 20 24 66 69  fixedWidth}] $fi
1cb50 78 65 64 48 65 69 67 68 74 20 24 66 69 78 65 64  xedHeight $fixed
1cb60 41 73 63 65 6e 74 5d 20 5c 0a 20 20 20 20 5b 6c  Ascent] \.    [l
1cb70 69 73 74 20 24 70 61 64 78 20 5b 65 78 70 72 20  ist $padx [expr 
1cb80 7b 24 70 61 64 79 2b 34 2a 24 66 69 78 65 64 48  {$pady+4*$fixedH
1cb90 65 69 67 68 74 7d 5d 20 5b 65 78 70 72 20 7b 31  eight}] [expr {1
1cba0 33 2a 24 66 69 78 65 64 57 69 64 74 68 7d 5d 20  3*$fixedWidth}] 
1cbb0 24 66 69 78 65 64 48 65 69 67 68 74 20 24 66 69  $fixedHeight $fi
1cbc0 78 65 64 41 73 63 65 6e 74 5d 20 5c 0a 20 20 20  xedAscent] \.   
1cbd0 20 7b 7d 5d 0a 0a 74 65 73 74 20 74 65 78 74 44   {}]..test textD
1cbe0 69 73 70 2d 32 33 2e 32 20 7b 54 6b 54 65 78 74  isp-23.2 {TkText
1cbf0 44 4c 69 6e 65 49 6e 66 6f 7d 20 7b 0a 20 20 20  DLineInfo} {.   
1cc00 20 2e 74 20 63 6f 6e 66 69 67 20 2d 62 64 20 34   .t config -bd 4
1cc10 20 2d 77 72 61 70 20 77 6f 72 64 0a 20 20 20 20   -wrap word.    
1cc20 75 70 64 61 74 65 0a 20 20 20 20 2e 74 20 79 76  update.    .t yv
1cc30 69 65 77 20 34 38 2e 30 0a 20 20 20 20 2e 74 20  iew 48.0.    .t 
1cc40 64 6c 69 6e 65 69 6e 66 6f 20 35 30 2e 34 30 0a  dlineinfo 50.40.
1cc50 7d 20 5b 6c 69 73 74 20 5b 65 78 70 72 20 7b 24  } [list [expr {$
1cc60 70 61 64 78 2d 24 62 77 2b 34 7d 5d 20 5b 65 78  padx-$bw+4}] [ex
1cc70 70 72 20 7b 24 70 61 64 79 2d 24 62 77 2b 34 2b  pr {$pady-$bw+4+
1cc80 34 2a 24 66 69 78 65 64 48 65 69 67 68 74 7d 5d  4*$fixedHeight}]
1cc90 20 5b 65 78 70 72 20 7b 31 33 2a 24 66 69 78 65   [expr {13*$fixe
1cca0 64 57 69 64 74 68 7d 5d 20 24 66 69 78 65 64 48  dWidth}] $fixedH
1ccb0 65 69 67 68 74 20 24 66 69 78 65 64 41 73 63 65  eight $fixedAsce
1ccc0 6e 74 5d 0a 2e 74 20 63 6f 6e 66 69 67 20 2d 62  nt]..t config -b
1ccd0 64 20 30 0a 0a 74 65 73 74 20 74 65 78 74 44 69  d 0..test textDi
1cce0 73 70 2d 32 33 2e 33 20 7b 54 6b 54 65 78 74 44  sp-23.3 {TkTextD
1ccf0 4c 69 6e 65 49 6e 66 6f 7d 20 7b 0a 20 20 20 20  LineInfo} {.    
1cd00 2e 74 20 63 6f 6e 66 69 67 20 2d 77 72 61 70 20  .t config -wrap 
1cd10 6e 6f 6e 65 0a 20 20 20 20 75 70 64 61 74 65 0a  none.    update.
1cd20 20 20 20 20 2e 74 20 79 76 69 65 77 20 34 38 2e      .t yview 48.
1cd30 30 0a 20 20 20 20 6c 69 73 74 20 5b 2e 74 20 64  0.    list [.t d
1cd40 6c 69 6e 65 69 6e 66 6f 20 35 30 2e 34 30 5d 20  lineinfo 50.40] 
1cd50 5b 2e 74 20 64 6c 69 6e 65 69 6e 66 6f 20 35 37  [.t dlineinfo 57
1cd60 2e 33 5d 0a 7d 20 5b 6c 69 73 74 20 5c 0a 20 20  .3].} [list \.  
1cd70 20 20 5b 6c 69 73 74 20 24 70 61 64 78 20 5b 65    [list $padx [e
1cd80 78 70 72 20 7b 24 70 61 64 79 2b 32 2a 24 66 69  xpr {$pady+2*$fi
1cd90 78 65 64 48 65 69 67 68 74 7d 5d 20 5b 65 78 70  xedHeight}] [exp
1cda0 72 20 7b 35 33 2a 24 66 69 78 65 64 57 69 64 74  r {53*$fixedWidt
1cdb0 68 7d 5d 20 24 66 69 78 65 64 48 65 69 67 68 74  h}] $fixedHeight
1cdc0 20 24 66 69 78 65 64 41 73 63 65 6e 74 5d 20 5c   $fixedAscent] \
1cdd0 0a 20 20 20 20 5b 6c 69 73 74 20 24 70 61 64 78  .    [list $padx
1cde0 20 5b 65 78 70 72 20 7b 24 70 61 64 79 2b 39 2a   [expr {$pady+9*
1cdf0 24 66 69 78 65 64 48 65 69 67 68 74 7d 5d 20 5b  $fixedHeight}] [
1ce00 65 78 70 72 20 7b 37 2a 24 66 69 78 65 64 57 69  expr {7*$fixedWi
1ce10 64 74 68 7d 5d 20 24 66 69 78 65 64 48 65 69 67  dth}] $fixedHeig
1ce20 68 74 20 24 66 69 78 65 64 41 73 63 65 6e 74 5d  ht $fixedAscent]
1ce30 5d 0a 0a 74 65 73 74 20 74 65 78 74 44 69 73 70  ]..test textDisp
1ce40 2d 32 33 2e 34 20 7b 54 6b 54 65 78 74 44 4c 69  -23.4 {TkTextDLi
1ce50 6e 65 49 6e 66 6f 2c 20 63 75 74 2d 6f 66 66 20  neInfo, cut-off 
1ce60 6c 69 6e 65 73 7d 20 7b 0a 20 20 20 20 2e 74 20  lines} {.    .t 
1ce70 63 6f 6e 66 69 67 20 2d 77 72 61 70 20 63 68 61  config -wrap cha
1ce80 72 0a 20 20 20 20 2e 74 20 79 76 69 65 77 20 31  r.    .t yview 1
1ce90 30 2e 30 0a 20 20 20 20 77 6d 20 67 65 6f 6d 20  0.0.    wm geom 
1cea0 2e 20 24 7b 77 69 64 74 68 7d 78 5b 65 78 70 72  . ${width}x[expr
1ceb0 20 24 68 65 69 67 68 74 2d 31 5d 0a 20 20 20 20   $height-1].    
1cec0 75 70 64 61 74 65 0a 20 20 20 20 6c 69 73 74 20  update.    list 
1ced0 5b 2e 74 20 64 6c 69 6e 65 69 6e 66 6f 20 31 39  [.t dlineinfo 19
1cee0 2e 30 5d 20 5b 2e 74 20 64 6c 69 6e 65 69 6e 66  .0] [.t dlineinf
1cef0 6f 20 32 30 2e 30 5d 0a 7d 20 5b 6c 69 73 74 20  o 20.0].} [list 
1cf00 5c 0a 20 20 20 20 5b 6c 69 73 74 20 24 70 61 64  \.    [list $pad
1cf10 78 20 5b 65 78 70 72 20 7b 24 70 61 64 79 2b 39  x [expr {$pady+9
1cf20 2a 24 66 69 78 65 64 48 65 69 67 68 74 7d 5d 20  *$fixedHeight}] 
1cf30 5b 65 78 70 72 20 7b 37 2a 24 66 69 78 65 64 57  [expr {7*$fixedW
1cf40 69 64 74 68 7d 5d 20 24 66 69 78 65 64 48 65 69  idth}] $fixedHei
1cf50 67 68 74 20 24 66 69 78 65 64 41 73 63 65 6e 74  ght $fixedAscent
1cf60 5d 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20 24 70  ] \.    [list $p
1cf70 61 64 78 20 5b 65 78 70 72 20 7b 24 70 61 64 79  adx [expr {$pady
1cf80 2b 31 30 2a 24 66 69 78 65 64 48 65 69 67 68 74  +10*$fixedHeight
1cf90 7d 5d 20 5b 65 78 70 72 20 7b 37 2a 24 66 69 78  }] [expr {7*$fix
1cfa0 65 64 57 69 64 74 68 7d 5d 20 5b 65 78 70 72 20  edWidth}] [expr 
1cfb0 7b 28 24 68 65 69 67 68 74 2d 31 29 2d 31 30 2a  {($height-1)-10*
1cfc0 24 66 69 78 65 64 48 65 69 67 68 74 2d 32 2a 24  $fixedHeight-2*$
1cfd0 70 61 64 79 7d 5d 20 24 66 69 78 65 64 41 73 63  pady}] $fixedAsc
1cfe0 65 6e 74 5d 5d 0a 0a 74 65 73 74 20 74 65 78 74  ent]]..test text
1cff0 44 69 73 70 2d 32 33 2e 35 20 7b 54 6b 54 65 78  Disp-23.5 {TkTex
1d000 74 44 4c 69 6e 65 49 6e 66 6f 2c 20 63 75 74 2d  tDLineInfo, cut-
1d010 6f 66 66 20 6c 69 6e 65 73 7d 20 7b 0a 20 20 20  off lines} {.   
1d020 20 2e 74 20 63 6f 6e 66 69 67 20 2d 77 72 61 70   .t config -wrap
1d030 20 63 68 61 72 0a 20 20 20 20 2e 74 20 79 76 69   char.    .t yvi
1d040 65 77 20 31 30 2e 30 0a 20 20 20 20 77 6d 20 67  ew 10.0.    wm g
1d050 65 6f 6d 20 2e 20 24 7b 77 69 64 74 68 7d 78 5b  eom . ${width}x[
1d060 65 78 70 72 20 24 68 65 69 67 68 74 2b 31 5d 0a  expr $height+1].
1d070 20 20 20 20 75 70 64 61 74 65 0a 20 20 20 20 6c      update.    l
1d080 69 73 74 20 5b 2e 74 20 64 6c 69 6e 65 69 6e 66  ist [.t dlineinf
1d090 6f 20 31 39 2e 30 5d 20 5b 2e 74 20 64 6c 69 6e  o 19.0] [.t dlin
1d0a0 65 69 6e 66 6f 20 32 30 2e 30 5d 0a 7d 20 5b 6c  einfo 20.0].} [l
1d0b0 69 73 74 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20  ist \.    [list 
1d0c0 24 70 61 64 78 20 5b 65 78 70 72 20 7b 24 70 61  $padx [expr {$pa
1d0d0 64 79 2b 39 2a 24 66 69 78 65 64 48 65 69 67 68  dy+9*$fixedHeigh
1d0e0 74 7d 5d 20 5b 65 78 70 72 20 7b 37 2a 24 66 69  t}] [expr {7*$fi
1d0f0 78 65 64 57 69 64 74 68 7d 5d 20 24 66 69 78 65  xedWidth}] $fixe
1d100 64 48 65 69 67 68 74 20 24 66 69 78 65 64 41 73  dHeight $fixedAs
1d110 63 65 6e 74 5d 20 5c 0a 20 20 20 20 5b 6c 69 73  cent] \.    [lis
1d120 74 20 24 70 61 64 78 20 5b 65 78 70 72 20 7b 24  t $padx [expr {$
1d130 70 61 64 79 2b 31 30 2a 24 66 69 78 65 64 48 65  pady+10*$fixedHe
1d140 69 67 68 74 7d 5d 20 5b 65 78 70 72 20 7b 37 2a  ight}] [expr {7*
1d150 24 66 69 78 65 64 57 69 64 74 68 7d 5d 20 5b 65  $fixedWidth}] [e
1d160 78 70 72 20 7b 28 24 68 65 69 67 68 74 2b 31 29  xpr {($height+1)
1d170 2d 31 30 2a 24 66 69 78 65 64 48 65 69 67 68 74  -10*$fixedHeight
1d180 2d 32 2a 24 70 61 64 79 7d 5d 20 24 66 69 78 65  -2*$pady}] $fixe
1d190 64 41 73 63 65 6e 74 5d 5d 0a 0a 77 6d 20 67 65  dAscent]]..wm ge
1d1a0 6f 6d 20 2e 20 7b 7d 0a 75 70 64 61 74 65 0a 0a  om . {}.update..
1d1b0 74 65 73 74 20 74 65 78 74 44 69 73 70 2d 32 33  test textDisp-23
1d1c0 2e 36 20 7b 54 6b 54 65 78 74 44 4c 69 6e 65 49  .6 {TkTextDLineI
1d1d0 6e 66 6f 2c 20 68 6f 72 69 7a 6f 6e 74 61 6c 20  nfo, horizontal 
1d1e0 73 63 72 6f 6c 6c 69 6e 67 7d 20 7b 0a 20 20 20  scrolling} {.   
1d1f0 20 2e 74 20 63 6f 6e 66 69 67 20 2d 77 72 61 70   .t config -wrap
1d200 20 6e 6f 6e 65 0a 20 20 20 20 2e 74 20 64 65 6c   none.    .t del
1d210 65 74 65 20 31 2e 30 20 65 6e 64 0a 20 20 20 20  ete 1.0 end.    
1d220 2e 74 20 69 6e 73 65 72 74 20 65 6e 64 20 22 46  .t insert end "F
1d230 69 72 73 74 20 6c 69 6e 65 5c 6e 22 0a 20 20 20  irst line\n".   
1d240 20 2e 74 20 69 6e 73 65 72 74 20 65 6e 64 20 22   .t insert end "
1d250 53 65 63 6f 6e 64 20 6c 69 6e 65 20 69 73 20 61  Second line is a
1d260 20 76 65 72 79 20 6c 6f 6e 67 20 6f 6e 65 20 74   very long one t
1d270 68 61 74 20 64 6f 65 73 6e 27 74 20 61 6c 6c 20  hat doesn't all 
1d280 66 69 74 2e 5c 6e 22 0a 20 20 20 20 2e 74 20 69  fit.\n".    .t i
1d290 6e 73 65 72 74 20 65 6e 64 20 22 54 68 69 72 64  nsert end "Third
1d2a0 22 0a 20 20 20 20 2e 74 20 78 76 69 65 77 20 73  ".    .t xview s
1d2b0 63 72 6f 6c 6c 20 36 20 75 6e 69 74 73 0a 20 20  croll 6 units.  
1d2c0 20 20 75 70 64 61 74 65 0a 20 20 20 20 6c 69 73    update.    lis
1d2d0 74 20 5b 2e 74 20 64 6c 69 6e 65 69 6e 66 6f 20  t [.t dlineinfo 
1d2e0 31 2e 30 5d 20 5b 2e 74 20 64 6c 69 6e 65 69 6e  1.0] [.t dlinein
1d2f0 66 6f 20 32 2e 30 5d 20 5b 2e 74 20 64 6c 69 6e  fo 2.0] [.t dlin
1d300 65 69 6e 66 6f 20 33 2e 30 5d 0a 7d 20 5b 6c 69  einfo 3.0].} [li
1d310 73 74 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20 5b  st \.    [list [
1d320 65 78 70 72 20 7b 24 70 61 64 78 2d 36 2a 24 66  expr {$padx-6*$f
1d330 69 78 65 64 57 69 64 74 68 7d 5d 20 24 70 61 64  ixedWidth}] $pad
1d340 79 20 5b 65 78 70 72 20 7b 31 30 2a 24 66 69 78  y [expr {10*$fix
1d350 65 64 57 69 64 74 68 7d 5d 20 24 66 69 78 65 64  edWidth}] $fixed
1d360 48 65 69 67 68 74 20 24 66 69 78 65 64 41 73 63  Height $fixedAsc
1d370 65 6e 74 5d 20 5c 0a 20 20 20 20 5b 6c 69 73 74  ent] \.    [list
1d380 20 5b 65 78 70 72 20 7b 24 70 61 64 78 2d 36 2a   [expr {$padx-6*
1d390 24 66 69 78 65 64 57 69 64 74 68 7d 5d 20 5b 65  $fixedWidth}] [e
1d3a0 78 70 72 20 7b 24 70 61 64 79 2b 24 66 69 78 65  xpr {$pady+$fixe
1d3b0 64 48 65 69 67 68 74 7d 5d 20 5b 65 78 70 72 20  dHeight}] [expr 
1d3c0 7b 35 32 2a 24 66 69 78 65 64 57 69 64 74 68 7d  {52*$fixedWidth}
1d3d0 5d 20 24 66 69 78 65 64 48 65 69 67 68 74 20 24  ] $fixedHeight $
1d3e0 66 69 78 65 64 41 73 63 65 6e 74 5d 20 5c 0a 20  fixedAscent] \. 
1d3f0 20 20 20 5b 6c 69 73 74 20 5b 65 78 70 72 20 7b     [list [expr {
1d400 24 70 61 64 78 2d 36 2a 24 66 69 78 65 64 57 69  $padx-6*$fixedWi
1d410 64 74 68 7d 5d 20 5b 65 78 70 72 20 7b 24 70 61  dth}] [expr {$pa
1d420 64 79 2b 32 2a 24 66 69 78 65 64 48 65 69 67 68  dy+2*$fixedHeigh
1d430 74 7d 5d 20 5b 65 78 70 72 20 7b 35 2a 24 66 69  t}] [expr {5*$fi
1d440 78 65 64 57 69 64 74 68 7d 5d 20 24 66 69 78 65  xedWidth}] $fixe
1d450 64 48 65 69 67 68 74 20 24 66 69 78 65 64 41 73  dHeight $fixedAs
1d460 63 65 6e 74 5d 5d 0a 2e 74 20 78 76 69 65 77 20  cent]]..t xview 
1d470 6d 6f 76 65 74 6f 20 30 0a 0a 74 65 73 74 20 74  moveto 0..test t
1d480 65 78 74 44 69 73 70 2d 32 33 2e 37 20 7b 54 6b  extDisp-23.7 {Tk
1d490 54 65 78 74 44 4c 69 6e 65 49 6e 66 6f 2c 20 63  TextDLineInfo, c
1d4a0 65 6e 74 65 72 69 6e 67 7d 20 7b 0a 20 20 20 20  entering} {.    
1d4b0 2e 74 20 63 6f 6e 66 69 67 20 2d 77 72 61 70 20  .t config -wrap 
1d4c0 77 6f 72 64 0a 20 20 20 20 2e 74 20 64 65 6c 65  word.    .t dele
1d4d0 74 65 20 31 2e 30 20 65 6e 64 0a 20 20 20 20 2e  te 1.0 end.    .
1d4e0 74 20 69 6e 73 65 72 74 20 65 6e 64 20 22 46 69  t insert end "Fi
1d4f0 72 73 74 20 6c 69 6e 65 5c 6e 22 0a 20 20 20 20  rst line\n".    
1d500 2e 74 20 69 6e 73 65 72 74 20 65 6e 64 20 22 53  .t insert end "S
1d510 65 63 6f 6e 64 20 6c 69 6e 65 20 69 73 20 61 20  econd line is a 
1d520 76 65 72 79 20 6c 6f 6e 67 20 6f 6e 65 20 74 68  very long one th
1d530 61 74 20 64 6f 65 73 6e 27 74 20 61 6c 6c 20 66  at doesn't all f
1d540 69 74 2e 5c 6e 22 0a 20 20 20 20 2e 74 20 69 6e  it.\n".    .t in
1d550 73 65 72 74 20 65 6e 64 20 22 54 68 69 72 64 22  sert end "Third"
1d560 0a 20 20 20 20 2e 74 20 74 61 67 20 63 6f 6e 66  .    .t tag conf
1d570 69 67 75 72 65 20 78 20 2d 6a 75 73 74 69 66 79  igure x -justify
1d580 20 63 65 6e 74 65 72 0a 20 20 20 20 2e 74 20 74   center.    .t t
1d590 61 67 20 63 6f 6e 66 69 67 75 72 65 20 79 20 2d  ag configure y -
1d5a0 6a 75 73 74 69 66 79 20 72 69 67 68 74 0a 20 20  justify right.  
1d5b0 20 20 2e 74 20 74 61 67 20 61 64 64 20 78 20 31    .t tag add x 1
1d5c0 2e 30 0a 20 20 20 20 2e 74 20 74 61 67 20 61 64  .0.    .t tag ad
1d5d0 64 20 79 20 33 2e 30 0a 20 20 20 20 6c 69 73 74  d y 3.0.    list
1d5e0 20 5b 2e 74 20 64 6c 69 6e 65 69 6e 66 6f 20 31   [.t dlineinfo 1
1d5f0 2e 30 5d 20 5b 2e 74 20 64 6c 69 6e 65 69 6e 66  .0] [.t dlineinf
1d600 6f 20 32 2e 30 5d 20 5b 2e 74 20 64 6c 69 6e 65  o 2.0] [.t dline
1d610 69 6e 66 6f 20 33 2e 30 5d 0a 7d 20 5b 6c 69 73  info 3.0].} [lis
1d620 74 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20 5b 65  t \.    [list [e
1d630 78 70 72 20 7b 24 70 61 64 78 2b 72 6f 75 6e 64  xpr {$padx+round
1d640 28 28 31 30 2e 30 2a 24 66 69 78 65 64 57 69 64  ((10.0*$fixedWid
1d650 74 68 29 2f 32 2e 30 29 7d 5d 20 24 70 61 64 79  th)/2.0)}] $pady
1d660 20 5b 65 78 70 72 20 7b 31 30 2a 24 66 69 78 65   [expr {10*$fixe
1d670 64 57 69 64 74 68 7d 5d 20 24 66 69 78 65 64 48  dWidth}] $fixedH
1d680 65 69 67 68 74 20 24 66 69 78 65 64 41 73 63 65  eight $fixedAsce
1d690 6e 74 5d 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20  nt] \.    [list 
1d6a0 24 70 61 64 78 20 5b 65 78 70 72 20 7b 24 70 61  $padx [expr {$pa
1d6b0 64 79 2b 24 66 69 78 65 64 48 65 69 67 68 74 7d  dy+$fixedHeight}
1d6c0 5d 20 5b 65 78 70 72 20 7b 31 37 2a 24 66 69 78  ] [expr {17*$fix
1d6d0 65 64 57 69 64 74 68 7d 5d 20 24 66 69 78 65 64  edWidth}] $fixed
1d6e0 48 65 69 67 68 74 20 24 66 69 78 65 64 41 73 63  Height $fixedAsc
1d6f0 65 6e 74 5d 20 5c 0a 20 20 20 20 5b 6c 69 73 74  ent] \.    [list
1d700 20 5b 65 78 70 72 20 7b 24 70 61 64 78 2b 31 35   [expr {$padx+15
1d710 2a 24 66 69 78 65 64 57 69 64 74 68 7d 5d 20 5b  *$fixedWidth}] [
1d720 65 78 70 72 20 7b 24 70 61 64 79 2b 34 2a 24 66  expr {$pady+4*$f
1d730 69 78 65 64 48 65 69 67 68 74 7d 5d 20 5b 65 78  ixedHeight}] [ex
1d740 70 72 20 7b 35 2a 24 66 69 78 65 64 57 69 64 74  pr {5*$fixedWidt
1d750 68 7d 5d 20 24 66 69 78 65 64 48 65 69 67 68 74  h}] $fixedHeight
1d760 20 24 66 69 78 65 64 41 73 63 65 6e 74 5d 5d 0a   $fixedAscent]].
1d770 2e 74 20 74 61 67 20 64 65 6c 65 74 65 20 78 20  .t tag delete x 
1d780 79 0a 0a 74 65 73 74 20 74 65 78 74 44 69 73 70  y..test textDisp
1d790 2d 32 34 2e 31 20 7b 54 6b 54 65 78 74 43 68 61  -24.1 {TkTextCha
1d7a0 72 4c 61 79 6f 75 74 50 72 6f 63 7d 20 7b 0a 20  rLayoutProc} {. 
1d7b0 20 20 20 2e 74 20 63 6f 6e 66 69 67 75 72 65 20     .t configure 
1d7c0 2d 77 72 61 70 20 63 68 61 72 0a 20 20 20 20 2e  -wrap char.    .
1d7d0 74 20 64 65 6c 65 74 65 20 31 2e 30 20 65 6e 64  t delete 1.0 end
1d7e0 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20 31  .    .t insert 1
1d7f0 2e 30 20 22 61 62 63 64 65 66 67 68 69 6a 6b 6c  .0 "abcdefghijkl
1d800 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a 22 0a  mnopqrstuvwxyz".
1d810 20 20 20 20 6c 69 73 74 20 5b 2e 74 20 62 62 6f      list [.t bbo
1d820 78 20 31 2e 31 39 5d 20 5b 2e 74 20 62 62 6f 78  x 1.19] [.t bbox
1d830 20 31 2e 32 30 5d 0a 7d 20 5b 6c 69 73 74 20 5c   1.20].} [list \
1d840 0a 20 20 20 20 5b 6c 69 73 74 20 5b 65 78 70 72  .    [list [expr
1d850 20 7b 24 70 61 64 78 2b 31 39 2a 24 66 69 78 65   {$padx+19*$fixe
1d860 64 57 69 64 74 68 7d 5d 20 24 70 61 64 79 20 24  dWidth}] $pady $
1d870 66 69 78 65 64 57 69 64 74 68 20 24 66 69 78 65  fixedWidth $fixe
1d880 64 48 65 69 67 68 74 5d 20 5c 0a 20 20 20 20 5b  dHeight] \.    [
1d890 6c 69 73 74 20 24 70 61 64 78 20 5b 65 78 70 72  list $padx [expr
1d8a0 20 7b 24 70 61 64 79 2b 24 66 69 78 65 64 48 65   {$pady+$fixedHe
1d8b0 69 67 68 74 7d 5d 20 24 66 69 78 65 64 57 69 64  ight}] $fixedWid
1d8c0 74 68 20 24 66 69 78 65 64 48 65 69 67 68 74 5d  th $fixedHeight]
1d8d0 5d 0a 0a 74 65 73 74 20 74 65 78 74 44 69 73 70  ]..test textDisp
1d8e0 2d 32 34 2e 32 20 7b 54 6b 54 65 78 74 43 68 61  -24.2 {TkTextCha
1d8f0 72 4c 61 79 6f 75 74 50 72 6f 63 7d 20 7b 0a 20  rLayoutProc} {. 
1d900 20 20 20 2e 74 20 63 6f 6e 66 69 67 75 72 65 20     .t configure 
1d910 2d 77 72 61 70 20 63 68 61 72 0a 20 20 20 20 2e  -wrap char.    .
1d920 74 20 64 65 6c 65 74 65 20 31 2e 30 20 65 6e 64  t delete 1.0 end
1d930 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20 31  .    .t insert 1
1d940 2e 30 20 22 61 62 63 64 65 66 67 68 69 6a 6b 6c  .0 "abcdefghijkl
1d950 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a 22 0a  mnopqrstuvwxyz".
1d960 20 20 20 20 73 65 74 20 77 20 5b 65 78 70 72 20      set w [expr 
1d970 7b 32 30 2a 24 66 69 78 65 64 57 69 64 74 68 2b  {20*$fixedWidth+
1d980 31 7d 5d 0a 20 20 20 20 77 6d 20 67 65 6f 6d 20  1}].    wm geom 
1d990 2e 20 5b 65 78 70 72 20 7b 32 2a 24 70 61 64 78  . [expr {2*$padx
1d9a0 2b 31 30 30 2b 24 77 7d 5d 78 24 68 65 69 67 68  +100+$w}]x$heigh
1d9b0 74 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20 20  t.    update.   
1d9c0 20 6c 69 73 74 20 5b 2e 74 20 62 62 6f 78 20 31   list [.t bbox 1
1d9d0 2e 31 39 5d 20 5b 2e 74 20 62 62 6f 78 20 31 2e  .19] [.t bbox 1.
1d9e0 32 30 5d 0a 7d 20 5b 6c 69 73 74 20 5c 0a 20 20  20].} [list \.  
1d9f0 20 20 5b 6c 69 73 74 20 5b 65 78 70 72 20 7b 24    [list [expr {$
1da00 70 61 64 78 2b 31 39 2a 24 66 69 78 65 64 57 69  padx+19*$fixedWi
1da10 64 74 68 7d 5d 20 24 70 61 64 79 20 5b 65 78 70  dth}] $pady [exp
1da20 72 20 7b 24 66 69 78 65 64 57 69 64 74 68 2b 31  r {$fixedWidth+1
1da30 7d 5d 20 24 66 69 78 65 64 48 65 69 67 68 74 5d  }] $fixedHeight]
1da40 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20 24 70 61   \.    [list $pa
1da50 64 78 20 5b 65 78 70 72 20 7b 24 70 61 64 79 2b  dx [expr {$pady+
1da60 24 66 69 78 65 64 48 65 69 67 68 74 7d 5d 20 24  $fixedHeight}] $
1da70 66 69 78 65 64 57 69 64 74 68 20 24 66 69 78 65  fixedWidth $fixe
1da80 64 48 65 69 67 68 74 5d 5d 0a 75 6e 73 65 74 20  dHeight]].unset 
1da90 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 77 0a 0a 74  -nocomplain w..t
1daa0 65 73 74 20 74 65 78 74 44 69 73 70 2d 32 34 2e  est textDisp-24.
1dab0 33 20 7b 54 6b 54 65 78 74 43 68 61 72 4c 61 79  3 {TkTextCharLay
1dac0 6f 75 74 50 72 6f 63 7d 20 7b 0a 20 20 20 20 2e  outProc} {.    .
1dad0 74 20 63 6f 6e 66 69 67 75 72 65 20 2d 77 72 61  t configure -wra
1dae0 70 20 63 68 61 72 0a 20 20 20 20 2e 74 20 64 65  p char.    .t de
1daf0 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a 20 20 20  lete 1.0 end.   
1db00 20 2e 74 20 69 6e 73 65 72 74 20 31 2e 30 20 22   .t insert 1.0 "
1db10 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70  abcdefghijklmnop
1db20 71 72 73 74 75 76 77 78 79 7a 22 0a 20 20 20 20  qrstuvwxyz".    
1db30 73 65 74 20 77 20 5b 65 78 70 72 20 7b 32 30 2a  set w [expr {20*
1db40 24 66 69 78 65 64 57 69 64 74 68 2d 31 7d 5d 0a  $fixedWidth-1}].
1db50 20 20 20 20 77 6d 20 67 65 6f 6d 20 2e 20 5b 65      wm geom . [e
1db60 78 70 72 20 7b 32 2a 24 70 61 64 78 2b 31 30 30  xpr {2*$padx+100
1db70 2b 24 77 7d 5d 78 24 68 65 69 67 68 74 0a 20 20  +$w}]x$height.  
1db80 20 20 75 70 64 61 74 65 0a 20 20 20 20 6c 69 73    update.    lis
1db90 74 20 5b 2e 74 20 62 62 6f 78 20 31 2e 31 39 5d  t [.t bbox 1.19]
1dba0 20 5b 2e 74 20 62 62 6f 78 20 31 2e 32 30 5d 0a   [.t bbox 1.20].
1dbb0 7d 20 5b 6c 69 73 74 20 5c 0a 20 20 20 20 5b 6c  } [list \.    [l
1dbc0 69 73 74 20 24 70 61 64 78 20 5b 65 78 70 72 20  ist $padx [expr 
1dbd0 7b 24 70 61 64 79 2b 24 66 69 78 65 64 48 65 69  {$pady+$fixedHei
1dbe0 67 68 74 7d 5d 20 24 66 69 78 65 64 57 69 64 74  ght}] $fixedWidt
1dbf0 68 20 24 66 69 78 65 64 48 65 69 67 68 74 5d 20  h $fixedHeight] 
1dc00 5c 0a 20 20 20 20 5b 6c 69 73 74 20 5b 65 78 70  \.    [list [exp
1dc10 72 20 7b 24 70 61 64 78 2b 24 66 69 78 65 64 57  r {$padx+$fixedW
1dc20 69 64 74 68 7d 5d 20 5b 65 78 70 72 20 7b 24 70  idth}] [expr {$p
1dc30 61 64 79 2b 24 66 69 78 65 64 48 65 69 67 68 74  ady+$fixedHeight
1dc40 7d 5d 20 24 66 69 78 65 64 57 69 64 74 68 20 24  }] $fixedWidth $
1dc50 66 69 78 65 64 48 65 69 67 68 74 5d 5d 0a 75 6e  fixedHeight]].un
1dc60 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20  set -nocomplain 
1dc70 77 0a 0a 74 65 73 74 20 74 65 78 74 44 69 73 70  w..test textDisp
1dc80 2d 32 34 2e 34 20 7b 54 6b 54 65 78 74 43 68 61  -24.4 {TkTextCha
1dc90 72 4c 61 79 6f 75 74 50 72 6f 63 2c 20 6e 65 77  rLayoutProc, new
1dca0 6c 69 6e 65 20 6e 6f 74 20 76 69 73 69 62 6c 65  line not visible
1dcb0 7d 20 7b 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69  } {.    .t confi
1dcc0 67 75 72 65 20 2d 77 72 61 70 20 63 68 61 72 0a  gure -wrap char.
1dcd0 20 20 20 20 2e 74 20 64 65 6c 65 74 65 20 31 2e      .t delete 1.
1dce0 30 20 65 6e 64 0a 20 20 20 20 2e 74 20 69 6e 73  0 end.    .t ins
1dcf0 65 72 74 20 31 2e 30 20 30 31 32 33 34 35 36 37  ert 1.0 01234567
1dd00 38 39 30 31 32 33 34 35 36 37 38 39 5c 6e 30 31  890123456789\n01
1dd10 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37  2345678901234567
1dd20 38 39 30 0a 20 20 20 20 77 6d 20 67 65 6f 6d 20  890.    wm geom 
1dd30 2e 20 7b 7d 0a 20 20 20 20 75 70 64 61 74 65 0a  . {}.    update.
1dd40 20 20 20 20 6c 69 73 74 20 5b 2e 74 20 62 62 6f      list [.t bbo
1dd50 78 20 31 2e 31 39 5d 20 5b 2e 74 20 62 62 6f 78  x 1.19] [.t bbox
1dd60 20 31 2e 32 30 5d 20 5b 2e 74 20 62 62 6f 78 20   1.20] [.t bbox 
1dd70 32 2e 32 30 5d 0a 7d 20 5b 6c 69 73 74 20 5c 0a  2.20].} [list \.
1dd80 20 20 5b 6c 69 73 74 20 5b 65 78 70 72 20 7b 24    [list [expr {$
1dd90 70 61 64 78 2b 31 39 2a 24 66 69 78 65 64 57 69  padx+19*$fixedWi
1dda0 64 74 68 7d 5d 20 24 70 61 64 79 20 24 66 69 78  dth}] $pady $fix
1ddb0 65 64 57 69 64 74 68 20 24 66 69 78 65 64 48 65  edWidth $fixedHe
1ddc0 69 67 68 74 5d 20 5c 0a 20 20 5b 6c 69 73 74 20  ight] \.  [list 
1ddd0 5b 65 78 70 72 20 7b 24 70 61 64 78 2b 32 30 2a  [expr {$padx+20*
1dde0 24 66 69 78 65 64 57 69 64 74 68 7d 5d 20 24 70  $fixedWidth}] $p
1ddf0 61 64 79 20 30 20 24 66 69 78 65 64 48 65 69 67  ady 0 $fixedHeig
1de00 68 74 5d 20 5c 0a 20 20 5b 6c 69 73 74 20 24 70  ht] \.  [list $p
1de10 61 64 78 20 5b 65 78 70 72 20 7b 24 70 61 64 79  adx [expr {$pady
1de20 2b 32 2a 24 66 69 78 65 64 48 65 69 67 68 74 7d  +2*$fixedHeight}
1de30 5d 20 24 66 69 78 65 64 57 69 64 74 68 20 24 66  ] $fixedWidth $f
1de40 69 78 65 64 48 65 69 67 68 74 5d 5d 0a 0a 23 20  ixedHeight]]..# 
1de50 66 61 69 6c 73 20 6f 6e 20 77 69 6e 64 6f 77 73  fails on windows
1de60 0a 74 65 73 74 20 74 65 78 74 44 69 73 70 2d 32  .test textDisp-2
1de70 34 2e 35 20 7b 54 6b 54 65 78 74 43 68 61 72 4c  4.5 {TkTextCharL
1de80 61 79 6f 75 74 50 72 6f 63 2c 20 63 68 61 72 20  ayoutProc, char 
1de90 64 6f 65 73 6e 27 74 20 66 69 74 2c 20 6e 65 77  doesn't fit, new
1dea0 6c 69 6e 65 20 6e 6f 74 20 76 69 73 69 62 6c 65  line not visible
1deb0 7d 20 7b 0a 20 20 20 20 23 20 4f 6e 20 77 69 6e  } {.    # On win
1dec0 64 6f 77 73 2c 20 74 68 65 20 77 69 6e 64 6f 77  dows, the window
1ded0 20 63 61 6e 6e 6f 74 20 62 65 20 73 68 72 75 6e   cannot be shrun
1dee0 6b 20 65 6e 6f 75 67 68 20 64 75 65 20 74 6f 20  k enough due to 
1def0 74 68 65 0a 20 20 20 20 23 20 64 65 63 6f 72 61  the.    # decora
1df00 74 69 6f 6e 73 2e 0a 20 20 20 20 69 66 20 7b 24  tions..    if {$
1df10 74 63 6c 5f 70 6c 61 74 66 6f 72 6d 28 70 6c 61  tcl_platform(pla
1df20 74 66 6f 72 6d 29 20 3d 3d 20 22 77 69 6e 64 6f  tform) == "windo
1df30 77 73 22 7d 20 7b 0a 09 77 6d 20 6f 76 65 72 72  ws"} {..wm overr
1df40 69 64 65 72 65 64 69 72 65 63 74 20 2e 20 31 0a  ideredirect . 1.
1df50 20 20 20 20 7d 0a 20 20 20 20 2e 74 20 63 6f 6e      }.    .t con
1df60 66 69 67 75 72 65 20 2d 77 72 61 70 20 63 68 61  figure -wrap cha
1df70 72 0a 20 20 20 20 2e 74 20 64 65 6c 65 74 65 20  r.    .t delete 
1df80 31 2e 30 20 65 6e 64 0a 20 20 20 20 2e 74 20 69  1.0 end.    .t i
1df90 6e 73 65 72 74 20 31 2e 30 20 30 5c 6e 31 5c 6e  nsert 1.0 0\n1\n
1dfa0 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20 20 20  .    update.    
1dfb0 77 6d 20 67 65 6f 6d 20 2e 20 5b 65 78 70 72 20  wm geom . [expr 
1dfc0 7b 31 30 30 2b 24 66 69 78 65 64 57 69 64 74 68  {100+$fixedWidth
1dfd0 2d 33 2b 32 2a 24 70 61 64 78 7d 5d 78 24 68 65  -3+2*$padx}]x$he
1dfe0 69 67 68 74 0a 20 20 20 20 75 70 64 61 74 65 0a  ight.    update.
1dff0 20 20 20 20 6c 69 73 74 20 5b 2e 74 20 62 62 6f      list [.t bbo
1e000 78 20 31 2e 30 5d 20 5b 2e 74 20 62 62 6f 78 20  x 1.0] [.t bbox 
1e010 31 2e 31 5d 20 5b 2e 74 20 62 62 6f 78 20 32 2e  1.1] [.t bbox 2.
1e020 30 5d 0a 7d 20 5b 6c 69 73 74 20 5c 0a 20 20 20  0].} [list \.   
1e030 20 5b 6c 69 73 74 20 24 70 61 64 78 20 24 70 61   [list $padx $pa
1e040 64 79 20 5b 65 78 70 72 20 7b 24 66 69 78 65 64  dy [expr {$fixed
1e050 57 69 64 74 68 2d 33 7d 5d 20 24 66 69 78 65 64  Width-3}] $fixed
1e060 48 65 69 67 68 74 5d 20 5c 0a 20 20 20 20 5b 6c  Height] \.    [l
1e070 69 73 74 20 5b 65 78 70 72 20 7b 24 70 61 64 78  ist [expr {$padx
1e080 2b 34 7d 5d 20 24 70 61 64 79 20 30 20 24 66 69  +4}] $pady 0 $fi
1e090 78 65 64 48 65 69 67 68 74 5d 20 5c 0a 20 20 20  xedHeight] \.   
1e0a0 20 5b 6c 69 73 74 20 24 70 61 64 78 20 5b 65 78   [list $padx [ex
1e0b0 70 72 20 7b 24 70 61 64 79 2b 24 66 69 78 65 64  pr {$pady+$fixed
1e0c0 48 65 69 67 68 74 7d 5d 20 5b 65 78 70 72 20 7b  Height}] [expr {
1e0d0 24 66 69 78 65 64 57 69 64 74 68 2d 33 7d 5d 20  $fixedWidth-3}] 
1e0e0 24 66 69 78 65 64 48 65 69 67 68 74 5d 5d 0a 77  $fixedHeight]].w
1e0f0 6d 20 6f 76 65 72 72 69 64 65 72 65 64 69 72 65  m overrideredire
1e100 63 74 20 2e 20 30 0a 0a 74 65 73 74 20 74 65 78  ct . 0..test tex
1e110 74 44 69 73 70 2d 32 34 2e 36 20 7b 54 6b 54 65  tDisp-24.6 {TkTe
1e120 78 74 43 68 61 72 4c 61 79 6f 75 74 50 72 6f 63  xtCharLayoutProc
1e130 2c 20 6c 69 6e 65 20 65 6e 64 73 20 77 69 74 68  , line ends with
1e140 20 73 70 61 63 65 7d 20 7b 0a 20 20 20 20 2e 74   space} {.    .t
1e150 20 63 6f 6e 66 69 67 75 72 65 20 2d 77 72 61 70   configure -wrap
1e160 20 63 68 61 72 0a 20 20 20 20 2e 74 20 64 65 6c   char.    .t del
1e170 65 74 65 20 31 2e 30 20 65 6e 64 0a 20 20 20 20  ete 1.0 end.    
1e180 2e 74 20 69 6e 73 65 72 74 20 31 2e 30 20 22 61  .t insert 1.0 "a
1e190 20 62 20 63 20 64 20 65 20 66 20 67 20 68 20 69   b c d e f g h i
1e1a0 20 6a 20 6b 20 6c 20 6d 20 6e 20 6f 20 70 22 0a   j k l m n o p".
1e1b0 20 20 20 20 77 6d 20 67 65 6f 6d 20 2e 20 7b 7d      wm geom . {}
1e1c0 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20 20 20  .    update.    
1e1d0 6c 69 73 74 20 5b 2e 74 20 62 62 6f 78 20 31 2e  list [.t bbox 1.
1e1e0 31 39 5d 20 5b 2e 74 20 62 62 6f 78 20 31 2e 32  19] [.t bbox 1.2
1e1f0 30 5d 0a 7d 20 5b 6c 69 73 74 20 5c 0a 20 20 20  0].} [list \.   
1e200 20 5b 6c 69 73 74 20 5b 65 78 70 72 20 7b 24 70   [list [expr {$p
1e210 61 64 78 2b 31 39 2a 24 66 69 78 65 64 57 69 64  adx+19*$fixedWid
1e220 74 68 7d 5d 20 24 70 61 64 79 20 24 66 69 78 65  th}] $pady $fixe
1e230 64 57 69 64 74 68 20 24 66 69 78 65 64 48 65 69  dWidth $fixedHei
1e240 67 68 74 5d 20 5c 0a 20 20 20 20 5b 6c 69 73 74  ght] \.    [list
1e250 20 24 70 61 64 78 20 5b 65 78 70 72 20 7b 24 70   $padx [expr {$p
1e260 61 64 79 2b 24 66 69 78 65 64 48 65 69 67 68 74  ady+$fixedHeight
1e270 7d 5d 20 24 66 69 78 65 64 57 69 64 74 68 20 24  }] $fixedWidth $
1e280 66 69 78 65 64 48 65 69 67 68 74 5d 5d 0a 0a 74  fixedHeight]]..t
1e290 65 73 74 20 74 65 78 74 44 69 73 70 2d 32 34 2e  est textDisp-24.
1e2a0 37 20 7b 54 6b 54 65 78 74 43 68 61 72 4c 61 79  7 {TkTextCharLay
1e2b0 6f 75 74 50 72 6f 63 2c 20 6c 69 6e 65 20 65 6e  outProc, line en
1e2c0 64 73 20 77 69 74 68 20 73 70 61 63 65 7d 20 7b  ds with space} {
1e2d0 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69 67 75 72  .    .t configur
1e2e0 65 20 2d 77 72 61 70 20 63 68 61 72 0a 20 20 20  e -wrap char.   
1e2f0 20 2e 74 20 64 65 6c 65 74 65 20 31 2e 30 20 65   .t delete 1.0 e
1e300 6e 64 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74  nd.    .t insert
1e310 20 31 2e 30 20 22 61 20 62 20 63 20 64 20 65 20   1.0 "a b c d e 
1e320 66 20 67 20 68 20 69 20 6a 20 6b 20 6c 20 6d 20  f g h i j k l m 
1e330 6e 20 6f 20 70 22 0a 20 20 20 20 73 65 74 20 77  n o p".    set w
1e340 20 5b 65 78 70 72 20 7b 32 30 2a 24 66 69 78 65   [expr {20*$fixe
1e350 64 57 69 64 74 68 2b 31 7d 5d 0a 20 20 20 20 77  dWidth+1}].    w
1e360 6d 20 67 65 6f 6d 20 2e 20 5b 65 78 70 72 20 7b  m geom . [expr {
1e370 32 2a 24 70 61 64 78 2b 31 30 30 2b 24 77 7d 5d  2*$padx+100+$w}]
1e380 78 24 68 65 69 67 68 74 0a 20 20 20 20 75 70 64  x$height.    upd
1e390 61 74 65 0a 20 20 20 20 6c 69 73 74 20 5b 2e 74  ate.    list [.t
1e3a0 20 62 62 6f 78 20 31 2e 31 39 5d 20 5b 2e 74 20   bbox 1.19] [.t 
1e3b0 62 62 6f 78 20 31 2e 32 30 5d 0a 7d 20 5b 6c 69  bbox 1.20].} [li
1e3c0 73 74 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20 5b  st \.    [list [
1e3d0 65 78 70 72 20 7b 24 70 61 64 78 2b 31 39 2a 24  expr {$padx+19*$
1e3e0 66 69 78 65 64 57 69 64 74 68 7d 5d 20 24 70 61  fixedWidth}] $pa
1e3f0 64 79 20 5b 65 78 70 72 20 7b 24 66 69 78 65 64  dy [expr {$fixed
1e400 57 69 64 74 68 2b 31 7d 5d 20 24 66 69 78 65 64  Width+1}] $fixed
1e410 48 65 69 67 68 74 5d 20 5c 0a 20 20 20 20 5b 6c  Height] \.    [l
1e420 69 73 74 20 24 70 61 64 78 20 5b 65 78 70 72 20  ist $padx [expr 
1e430 7b 24 70 61 64 79 2b 24 66 69 78 65 64 48 65 69  {$pady+$fixedHei
1e440 67 68 74 7d 5d 20 24 66 69 78 65 64 57 69 64 74  ght}] $fixedWidt
1e450 68 20 24 66 69 78 65 64 48 65 69 67 68 74 5d 5d  h $fixedHeight]]
1e460 0a 0a 23 20 77 69 74 68 20 2d 73 70 61 63 65 6d  ..# with -spacem
1e470 6f 64 65 20 74 72 69 6d 0a 74 65 73 74 20 74 65  ode trim.test te
1e480 78 74 44 69 73 70 2d 32 34 2e 38 2e 31 20 7b 54  xtDisp-24.8.1 {T
1e490 6b 54 65 78 74 43 68 61 72 4c 61 79 6f 75 74 50  kTextCharLayoutP
1e4a0 72 6f 63 2c 20 2d 73 70 61 63 65 6d 6f 64 65 20  roc, -spacemode 
1e4b0 74 72 69 6d 2c 20 6c 69 6e 65 20 65 6e 64 73 20  trim, line ends 
1e4c0 77 69 74 68 20 73 70 61 63 65 7d 20 7b 0a 20 20  with space} {.  
1e4d0 20 20 2e 74 20 63 6f 6e 66 69 67 75 72 65 20 2d    .t configure -
1e4e0 73 70 61 63 65 6d 6f 64 65 20 74 72 69 6d 0a 20  spacemode trim. 
1e4f0 20 20 20 2e 74 20 63 6f 6e 66 69 67 75 72 65 20     .t configure 
1e500 2d 77 72 61 70 20 63 68 61 72 0a 20 20 20 20 2e  -wrap char.    .
1e510 74 20 64 65 6c 65 74 65 20 31 2e 30 20 65 6e 64  t delete 1.0 end
1e520 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20 31  .    .t insert 1
1e530 2e 30 20 22 61 20 62 20 63 20 64 20 65 20 66 20  .0 "a b c d e f 
1e540 67 20 68 20 69 20 6a 20 6b 20 6c 20 6d 20 6e 20  g h i j k l m n 
1e550 6f 20 70 22 0a 20 20 20 20 73 65 74 20 77 20 5b  o p".    set w [
1e560 65 78 70 72 20 7b 32 30 2a 24 66 69 78 65 64 57  expr {20*$fixedW
1e570 69 64 74 68 2d 31 7d 5d 0a 20 20 20 20 77 6d 20  idth-1}].    wm 
1e580 67 65 6f 6d 20 2e 20 5b 65 78 70 72 20 7b 32 2a  geom . [expr {2*
1e590 24 70 61 64 78 2b 31 30 30 2b 24 77 7d 5d 78 24  $padx+100+$w}]x$
1e5a0 68 65 69 67 68 74 0a 20 20 20 20 75 70 64 61 74  height.    updat
1e5b0 65 0a 20 20 20 20 6c 69 73 74 20 5b 2e 74 20 62  e.    list [.t b
1e5c0 62 6f 78 20 31 2e 31 39 5d 20 5b 2e 74 20 62 62  box 1.19] [.t bb
1e5d0 6f 78 20 31 2e 32 30 5d 0a 7d 20 5b 6c 69 73 74  ox 1.20].} [list
1e5e0 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20 5b 65 78   \.    [list [ex
1e5f0 70 72 20 7b 24 70 61 64 78 2b 31 39 2a 24 66 69  pr {$padx+19*$fi
1e600 78 65 64 57 69 64 74 68 7d 5d 20 24 70 61 64 79  xedWidth}] $pady
1e610 20 5b 65 78 70 72 20 7b 24 66 69 78 65 64 57 69   [expr {$fixedWi
1e620 64 74 68 2d 31 7d 5d 20 24 66 69 78 65 64 48 65  dth-1}] $fixedHe
1e630 69 67 68 74 5d 20 5c 0a 20 20 20 20 5b 6c 69 73  ight] \.    [lis
1e640 74 20 24 70 61 64 78 20 5b 65 78 70 72 20 7b 24  t $padx [expr {$
1e650 70 61 64 79 2b 24 66 69 78 65 64 48 65 69 67 68  pady+$fixedHeigh
1e660 74 7d 5d 20 24 66 69 78 65 64 57 69 64 74 68 20  t}] $fixedWidth 
1e670 24 66 69 78 65 64 48 65 69 67 68 74 5d 5d 0a 2e  $fixedHeight]]..
1e680 74 20 63 6f 6e 66 69 67 75 72 65 20 2d 73 70 61  t configure -spa
1e690 63 65 6d 6f 64 65 20 6e 6f 6e 65 0a 0a 74 65 73  cemode none..tes
1e6a0 74 20 74 65 78 74 44 69 73 70 2d 32 34 2e 38 2e  t textDisp-24.8.
1e6b0 32 20 7b 54 6b 54 65 78 74 43 68 61 72 4c 61 79  2 {TkTextCharLay
1e6c0 6f 75 74 50 72 6f 63 2c 20 2d 73 70 61 63 65 6d  outProc, -spacem
1e6d0 6f 64 65 20 6e 6f 6e 65 2c 20 6c 69 6e 65 20 65  ode none, line e
1e6e0 6e 64 73 20 77 69 74 68 20 73 70 61 63 65 7d 20  nds with space} 
1e6f0 7b 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69 67 75  {.    .t configu
1e700 72 65 20 2d 73 70 61 63 65 6d 6f 64 65 20 6e 6f  re -spacemode no
1e710 6e 65 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69 67  ne.    .t config
1e720 75 72 65 20 2d 77 72 61 70 20 63 68 61 72 0a 20  ure -wrap char. 
1e730 20 20 20 2e 74 20 64 65 6c 65 74 65 20 31 2e 30     .t delete 1.0
1e740 20 65 6e 64 0a 20 20 20 20 2e 74 20 69 6e 73 65   end.    .t inse
1e750 72 74 20 31 2e 30 20 22 61 20 62 20 63 20 64 20  rt 1.0 "a b c d 
1e760 65 20 66 20 67 20 68 20 69 20 6a 20 6b 20 6c 20  e f g h i j k l 
1e770 6d 20 6e 20 6f 20 70 22 0a 20 20 20 20 73 65 74  m n o p".    set
1e780 20 77 20 5b 65 78 70 72 20 7b 32 30 2a 24 66 69   w [expr {20*$fi
1e790 78 65 64 57 69 64 74 68 2d 31 7d 5d 0a 20 20 20  xedWidth-1}].   
1e7a0 20 77 6d 20 67 65 6f 6d 20 2e 20 5b 65 78 70 72   wm geom . [expr
1e7b0 20 7b 32 2a 24 70 61 64 78 2b 31 30 30 2b 24 77   {2*$padx+100+$w
1e7c0 7d 5d 78 24 68 65 69 67 68 74 0a 20 20 20 20 75  }]x$height.    u
1e7d0 70 64 61 74 65 0a 20 20 20 20 6c 69 73 74 20 5b  pdate.    list [
1e7e0 2e 74 20 62 62 6f 78 20 31 2e 31 39 5d 20 5b 2e  .t bbox 1.19] [.
1e7f0 74 20 62 62 6f 78 20 31 2e 32 30 5d 0a 7d 20 5b  t bbox 1.20].} [
1e800 6c 69 73 74 20 5c 0a 20 20 20 20 5b 6c 69 73 74  list \.    [list
1e810 20 24 70 61 64 78 20 5b 65 78 70 72 20 7b 24 70   $padx [expr {$p
1e820 61 64 79 2b 24 66 69 78 65 64 48 65 69 67 68 74  ady+$fixedHeight
1e830 7d 5d 20 24 66 69 78 65 64 57 69 64 74 68 20 24  }] $fixedWidth $
1e840 66 69 78 65 64 48 65 69 67 68 74 5d 20 5c 0a 20  fixedHeight] \. 
1e850 20 20 20 5b 6c 69 73 74 20 5b 65 78 70 72 20 7b     [list [expr {
1e860 24 70 61 64 78 2b 24 66 69 78 65 64 57 69 64 74  $padx+$fixedWidt
1e870 68 7d 5d 20 5b 65 78 70 72 20 7b 24 70 61 64 79  h}] [expr {$pady
1e880 2b 24 66 69 78 65 64 48 65 69 67 68 74 7d 5d 20  +$fixedHeight}] 
1e890 24 66 69 78 65 64 57 69 64 74 68 20 24 66 69 78  $fixedWidth $fix
1e8a0 65 64 48 65 69 67 68 74 5d 5d 0a 0a 74 65 73 74  edHeight]]..test
1e8b0 20 74 65 78 74 44 69 73 70 2d 32 34 2e 39 2e 31   textDisp-24.9.1
1e8c0 20 7b 54 6b 54 65 78 74 43 68 61 72 4c 61 79 6f   {TkTextCharLayo
1e8d0 75 74 50 72 6f 63 2c 20 2d 73 70 61 63 65 6d 6f  utProc, -spacemo
1e8e0 64 65 20 74 72 69 6d 2c 20 6c 69 6e 65 20 65 6e  de trim, line en
1e8f0 64 73 20 77 69 74 68 20 73 70 61 63 65 7d 20 7b  ds with space} {
1e900 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69 67 75 72  .    .t configur
1e910 65 20 2d 73 70 61 63 65 6d 6f 64 65 20 74 72 69  e -spacemode tri
1e920 6d 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69 67 75  m.    .t configu
1e930 72 65 20 2d 77 72 61 70 20 63 68 61 72 0a 20 20  re -wrap char.  
1e940 20 20 2e 74 20 64 65 6c 65 74 65 20 31 2e 30 20    .t delete 1.0 
1e950 65 6e 64 0a 20 20 20 20 2e 74 20 69 6e 73 65 72  end.    .t inser
1e960 74 20 31 2e 30 20 22 61 20 62 20 63 20 64 20 65  t 1.0 "a b c d e
1e970 20 66 20 67 20 68 20 69 20 6a 20 6b 20 6c 20 6d   f g h i j k l m
1e980 20 6e 20 6f 20 70 22 0a 20 20 20 20 73 65 74 20   n o p".    set 
1e990 77 20 5b 65 78 70 72 20 7b 32 30 2a 24 66 69 78  w [expr {20*$fix
1e9a0 65 64 57 69 64 74 68 2d 36 7d 5d 0a 20 20 20 20  edWidth-6}].    
1e9b0 77 6d 20 67 65 6f 6d 20 2e 20 5b 65 78 70 72 20  wm geom . [expr 
1e9c0 7b 32 2a 24 70 61 64 78 2b 31 30 30 2b 24 77 7d  {2*$padx+100+$w}
1e9d0 5d 78 24 68 65 69 67 68 74 0a 20 20 20 20 75 70  ]x$height.    up
1e9e0 64 61 74 65 0a 20 20 20 20 6c 69 73 74 20 5b 2e  date.    list [.
1e9f0 74 20 62 62 6f 78 20 31 2e 31 39 5d 20 5b 2e 74  t bbox 1.19] [.t
1ea00 20 62 62 6f 78 20 31 2e 32 30 5d 0a 7d 20 5b 6c   bbox 1.20].} [l
1ea10 69 73 74 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20  ist \.    [list 
1ea20 5b 65 78 70 72 20 7b 24 70 61 64 78 2b 31 39 2a  [expr {$padx+19*
1ea30 24 66 69 78 65 64 57 69 64 74 68 7d 5d 20 24 70  $fixedWidth}] $p
1ea40 61 64 79 20 5b 65 78 70 72 20 7b 24 66 69 78 65  ady [expr {$fixe
1ea50 64 57 69 64 74 68 2d 36 7d 5d 20 24 66 69 78 65  dWidth-6}] $fixe
1ea60 64 48 65 69 67 68 74 5d 20 5c 0a 20 20 20 20 5b  dHeight] \.    [
1ea70 6c 69 73 74 20 24 70 61 64 78 20 5b 65 78 70 72  list $padx [expr
1ea80 20 7b 24 70 61 64 79 2b 24 66 69 78 65 64 48 65   {$pady+$fixedHe
1ea90 69 67 68 74 7d 5d 20 24 66 69 78 65 64 57 69 64  ight}] $fixedWid
1eaa0 74 68 20 24 66 69 78 65 64 48 65 69 67 68 74 5d  th $fixedHeight]
1eab0 5d 0a 2e 74 20 63 6f 6e 66 69 67 75 72 65 20 2d  ]..t configure -
1eac0 73 70 61 63 65 6d 6f 64 65 20 6e 6f 6e 65 0a 75  spacemode none.u
1ead0 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e  nset -nocomplain
1eae0 20 77 0a 0a 74 65 73 74 20 74 65 78 74 44 69 73   w..test textDis
1eaf0 70 2d 32 34 2e 39 2e 32 20 7b 54 6b 54 65 78 74  p-24.9.2 {TkText
1eb00 43 68 61 72 4c 61 79 6f 75 74 50 72 6f 63 2c 20  CharLayoutProc, 
1eb10 2d 73 70 61 63 65 6d 6f 64 65 20 6e 6f 6e 65 2c  -spacemode none,
1eb20 20 6c 69 6e 65 20 65 6e 64 73 20 77 69 74 68 20   line ends with 
1eb30 73 70 61 63 65 7d 20 7b 0a 20 20 20 20 2e 74 20  space} {.    .t 
1eb40 63 6f 6e 66 69 67 75 72 65 20 2d 73 70 61 63 65  configure -space
1eb50 6d 6f 64 65 20 6e 6f 6e 65 0a 20 20 20 20 2e 74  mode none.    .t
1eb60 20 63 6f 6e 66 69 67 75 72 65 20 2d 77 72 61 70   configure -wrap
1eb70 20 63 68 61 72 0a 20 20 20 20 2e 74 20 64 65 6c   char.    .t del
1eb80 65 74 65 20 31 2e 30 20 65 6e 64 0a 20 20 20 20  ete 1.0 end.    
1eb90 2e 74 20 69 6e 73 65 72 74 20 31 2e 30 20 22 61  .t insert 1.0 "a
1eba0 20 62 20 63 20 64 20 65 20 66 20 67 20 68 20 69   b c d e f g h i
1ebb0 20 6a 20 6b 20 6c 20 6d 20 6e 20 6f 20 70 22 0a   j k l m n o p".
1ebc0 20 20 20 20 73 65 74 20 77 20 5b 65 78 70 72 20      set w [expr 
1ebd0 7b 32 30 2a 24 66 69 78 65 64 57 69 64 74 68 2d  {20*$fixedWidth-
1ebe0 36 7d 5d 0a 20 20 20 20 77 6d 20 67 65 6f 6d 20  6}].    wm geom 
1ebf0 2e 20 5b 65 78 70 72 20 7b 32 2a 24 70 61 64 78  . [expr {2*$padx
1ec00 2b 31 30 30 2b 24 77 7d 5d 78 24 68 65 69 67 68  +100+$w}]x$heigh
1ec10 74 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20 20  t.    update.   
1ec20 20 6c 69 73 74 20 5b 2e 74 20 62 62 6f 78 20 31   list [.t bbox 1
1ec30 2e 31 39 5d 20 5b 2e 74 20 62 62 6f 78 20 31 2e  .19] [.t bbox 1.
1ec40 32 30 5d 0a 7d 20 5b 6c 69 73 74 20 5c 0a 20 20  20].} [list \.  
1ec50 20 20 5b 6c 69 73 74 20 24 70 61 64 78 20 5b 65    [list $padx [e
1ec60 78 70 72 20 7b 24 70 61 64 79 2b 24 66 69 78 65  xpr {$pady+$fixe
1ec70 64 48 65 69 67 68 74 7d 5d 20 24 66 69 78 65 64  dHeight}] $fixed
1ec80 57 69 64 74 68 20 24 66 69 78 65 64 48 65 69 67  Width $fixedHeig
1ec90 68 74 5d 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20  ht] \.    [list 
1eca0 5b 65 78 70 72 20 7b 24 70 61 64 78 2b 24 66 69  [expr {$padx+$fi
1ecb0 78 65 64 57 69 64 74 68 7d 5d 20 5b 65 78 70 72  xedWidth}] [expr
1ecc0 20 7b 24 70 61 64 79 2b 24 66 69 78 65 64 48 65   {$pady+$fixedHe
1ecd0 69 67 68 74 7d 5d 20 24 66 69 78 65 64 57 69 64  ight}] $fixedWid
1ece0 74 68 20 24 66 69 78 65 64 48 65 69 67 68 74 5d  th $fixedHeight]
1ecf0 5d 0a 75 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c  ].unset -nocompl
1ed00 61 69 6e 20 77 0a 0a 23 20 43 75 72 72 65 6e 74  ain w..# Current
1ed10 6c 79 2c 20 77 68 65 6e 20 74 68 65 72 65 20 69  ly, when there i
1ed20 73 20 7a 65 72 6f 20 72 6f 6f 6d 2c 20 74 68 65  s zero room, the
1ed30 20 73 70 61 63 65 0a 23 20 69 73 20 6d 6f 76 65   space.# is move
1ed40 64 20 74 6f 20 74 68 65 20 6e 65 78 74 20 6c 69  d to the next li
1ed50 6e 65 2e 0a 74 65 73 74 20 74 65 78 74 44 69 73  ne..test textDis
1ed60 70 2d 32 34 2e 31 30 20 7b 54 6b 54 65 78 74 43  p-24.10 {TkTextC
1ed70 68 61 72 4c 61 79 6f 75 74 50 72 6f 63 2c 20 6c  harLayoutProc, l
1ed80 69 6e 65 20 65 6e 64 73 20 77 69 74 68 20 73 70  ine ends with sp
1ed90 61 63 65 7d 20 7b 0a 20 20 20 20 2e 74 20 63 6f  ace} {.    .t co
1eda0 6e 66 69 67 75 72 65 20 2d 77 72 61 70 20 63 68  nfigure -wrap ch
1edb0 61 72 0a 20 20 20 20 2e 74 20 64 65 6c 65 74 65  ar.    .t delete
1edc0 20 31 2e 30 20 65 6e 64 0a 20 20 20 20 2e 74 20   1.0 end.    .t 
1edd0 69 6e 73 65 72 74 20 31 2e 30 20 22 61 20 62 20  insert 1.0 "a b 
1ede0 63 20 64 20 65 20 66 20 67 20 68 20 69 20 6a 20  c d e f g h i j 
1edf0 6b 20 6c 20 6d 20 6e 20 6f 20 70 22 0a 20 20 20  k l m n o p".   
1ee00 20 73 65 74 20 77 20 5b 65 78 70 72 20 7b 32 30   set w [expr {20
1ee10 2a 24 66 69 78 65 64 57 69 64 74 68 2d 37 7d 5d  *$fixedWidth-7}]
1ee20 0a 20 20 20 20 77 6d 20 67 65 6f 6d 20 2e 20 5b  .    wm geom . [
1ee30 65 78 70 72 20 7b 32 2a 24 70 61 64 78 2b 31 30  expr {2*$padx+10
1ee40 30 2b 24 77 7d 5d 78 24 68 65 69 67 68 74 0a 20  0+$w}]x$height. 
1ee50 20 20 20 75 70 64 61 74 65 0a 20 20 20 20 6c 69     update.    li
1ee60 73 74 20 5b 2e 74 20 62 62 6f 78 20 31 2e 31 39  st [.t bbox 1.19
1ee70 5d 20 5b 2e 74 20 62 62 6f 78 20 31 2e 32 30 5d  ] [.t bbox 1.20]
1ee80 0a 7d 20 5b 6c 69 73 74 20 5c 0a 20 20 20 20 5b  .} [list \.    [
1ee90 6c 69 73 74 20 24 70 61 64 78 20 5b 65 78 70 72  list $padx [expr
1eea0 20 7b 24 70 61 64 79 2b 24 66 69 78 65 64 48 65   {$pady+$fixedHe
1eeb0 69 67 68 74 7d 5d 20 24 66 69 78 65 64 57 69 64  ight}] $fixedWid
1eec0 74 68 20 24 66 69 78 65 64 48 65 69 67 68 74 5d  th $fixedHeight]
1eed0 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20 5b 65 78   \.    [list [ex
1eee0 70 72 20 7b 24 70 61 64 78 2b 24 66 69 78 65 64  pr {$padx+$fixed
1eef0 57 69 64 74 68 7d 5d 20 5b 65 78 70 72 20 7b 24  Width}] [expr {$
1ef00 70 61 64 79 2b 24 66 69 78 65 64 48 65 69 67 68  pady+$fixedHeigh
1ef10 74 7d 5d 20 24 66 69 78 65 64 57 69 64 74 68 20  t}] $fixedWidth 
1ef20 24 66 69 78 65 64 48 65 69 67 68 74 5d 5d 0a 75  $fixedHeight]].u
1ef30 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e  nset -nocomplain
1ef40 20 77 0a 0a 74 65 73 74 20 74 65 78 74 44 69 73   w..test textDis
1ef50 70 2d 32 34 2e 31 31 2e 31 20 7b 54 6b 54 65 78  p-24.11.1 {TkTex
1ef60 74 43 68 61 72 4c 61 79 6f 75 74 50 72 6f 63 2c  tCharLayoutProc,
1ef70 20 2d 73 70 61 63 65 6d 6f 64 65 20 74 72 69 6d   -spacemode trim
1ef80 2c 20 6c 69 6e 65 20 65 6e 64 73 20 77 69 74 68  , line ends with
1ef90 20 73 70 61 63 65 20 74 68 61 74 20 64 6f 65 73   space that does
1efa0 6e 27 74 20 71 75 69 74 65 20 66 69 74 7d 20 7b  n't quite fit} {
1efb0 0a 20 20 20 20 23 20 4f 6e 20 77 69 6e 64 6f 77  .    # On window
1efc0 73 2c 20 74 68 65 20 77 69 6e 64 6f 77 20 63 61  s, the window ca
1efd0 6e 6e 6f 74 20 62 65 20 73 68 72 75 6e 6b 20 65  nnot be shrunk e
1efe0 6e 6f 75 67 68 20 64 75 65 20 74 6f 20 74 68 65  nough due to the
1eff0 0a 20 20 20 20 23 20 64 65 63 6f 72 61 74 69 6f  .    # decoratio
1f000 6e 73 2e 0a 20 20 20 20 69 66 20 7b 24 74 63 6c  ns..    if {$tcl
1f010 5f 70 6c 61 74 66 6f 72 6d 28 70 6c 61 74 66 6f  _platform(platfo
1f020 72 6d 29 20 3d 3d 20 22 77 69 6e 64 6f 77 73 22  rm) == "windows"
1f030 7d 20 7b 0a 09 77 6d 20 6f 76 65 72 72 69 64 65  } {..wm override
1f040 72 65 64 69 72 65 63 74 20 2e 20 31 0a 20 20 20  redirect . 1.   
1f050 20 7d 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69 67   }.    .t config
1f060 75 72 65 20 2d 73 70 61 63 65 6d 6f 64 65 20 74  ure -spacemode t
1f070 72 69 6d 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69  rim.    .t confi
1f080 67 75 72 65 20 2d 77 72 61 70 20 63 68 61 72 0a  gure -wrap char.
1f090 20 20 20 20 2e 74 20 64 65 6c 65 74 65 20 31 2e      .t delete 1.
1f0a0 30 20 65 6e 64 0a 20 20 20 20 2e 74 20 69 6e 73  0 end.    .t ins
1f0b0 65 72 74 20 31 2e 30 20 22 30 31 32 33 34 35 36  ert 1.0 "0123456
1f0c0 37 38 39 30 31 32 33 34 35 36 37 38 39 20 5c 6e  7890123456789 \n
1f0d0 61 62 63 64 65 66 67 22 0a 20 20 20 20 73 65 74  abcdefg".    set
1f0e0 20 77 20 5b 65 78 70 72 20 7b 28 32 31 2a 24 66   w [expr {(21*$f
1f0f0 69 78 65 64 57 69 64 74 68 29 2d 32 7d 5d 0a 20  ixedWidth)-2}]. 
1f100 20 20 20 77 6d 20 67 65 6f 6d 20 2e 20 5b 65 78     wm geom . [ex
1f110 70 72 20 7b 32 2a 24 70 61 64 78 2b 31 30 30 2b  pr {2*$padx+100+
1f120 24 77 7d 5d 78 24 68 65 69 67 68 74 0a 20 20 20  $w}]x$height.   
1f130 20 75 70 64 61 74 65 0a 20 20 20 20 73 65 74 20   update.    set 
1f140 72 65 73 75 6c 74 20 7b 7d 0a 20 20 20 20 23 20  result {}.    # 
1f150 73 70 61 63 65 2c 20 6e 65 77 6c 69 6e 65 2c 20  space, newline, 
1f160 27 61 27 0a 20 20 20 20 6c 61 70 70 65 6e 64 20  'a'.    lappend 
1f170 72 65 73 75 6c 74 20 5b 2e 74 20 62 62 6f 78 20  result [.t bbox 
1f180 31 2e 32 30 5d 20 5b 2e 74 20 62 62 6f 78 20 31  1.20] [.t bbox 1
1f190 2e 32 31 5d 20 5b 2e 74 20 62 62 6f 78 20 32 2e  .21] [.t bbox 2.
1f1a0 30 5d 0a 20 20 20 20 2e 74 20 6d 61 72 6b 20 73  0].    .t mark s
1f1b0 65 74 20 69 6e 73 65 72 74 20 31 2e 32 31 0a 20  et insert 1.21. 
1f1c0 20 20 20 23 20 73 70 61 63 65 2c 20 6e 65 77 6c     # space, newl
1f1d0 69 6e 65 2c 20 27 61 27 0a 20 20 20 20 6c 61 70  ine, 'a'.    lap
1f1e0 70 65 6e 64 20 72 65 73 75 6c 74 20 5b 2e 74 20  pend result [.t 
1f1f0 62 62 6f 78 20 31 2e 32 30 5d 20 5b 2e 74 20 62  bbox 1.20] [.t b
1f200 62 6f 78 20 31 2e 32 31 5d 20 5b 2e 74 20 62 62  box 1.21] [.t bb
1f210 6f 78 20 32 2e 30 5d 0a 7d 20 5b 6c 69 73 74 20  ox 2.0].} [list 
1f220 5c 0a 20 20 20 20 5b 6c 69 73 74 20 5b 65 78 70  \.    [list [exp
1f230 72 20 7b 24 70 61 64 78 2b 32 30 2a 24 66 69 78  r {$padx+20*$fix
1f240 65 64 57 69 64 74 68 7d 5d 20 24 70 61 64 79 20  edWidth}] $pady 
1f250 30 20 24 66 69 78 65 64 48 65 69 67 68 74 5d 20  0 $fixedHeight] 
1f260 5c 0a 20 20 20 20 5b 6c 69 73 74 20 5b 65 78 70  \.    [list [exp
1f270 72 20 7b 24 70 61 64 78 2b 32 30 2a 24 66 69 78  r {$padx+20*$fix
1f280 65 64 57 69 64 74 68 7d 5d 20 24 70 61 64 79 20  edWidth}] $pady 
1f290 5b 65 78 70 72 20 7b 24 66 69 78 65 64 57 69 64  [expr {$fixedWid
1f2a0 74 68 2d 32 7d 5d 20 24 66 69 78 65 64 48 65 69  th-2}] $fixedHei
1f2b0 67 68 74 5d 20 5c 0a 20 20 20 20 5b 6c 69 73 74  ght] \.    [list
1f2c0 20 24 70 61 64 78 20 5b 65 78 70 72 20 7b 24 70   $padx [expr {$p
1f2d0 61 64 79 2b 24 66 69 78 65 64 48 65 69 67 68 74  ady+$fixedHeight
1f2e0 7d 5d 20 24 66 69 78 65 64 57 69 64 74 68 20 24  }] $fixedWidth $
1f2f0 66 69 78 65 64 48 65 69 67 68 74 5d 20 5c 0a 20  fixedHeight] \. 
1f300 20 20 20 5b 6c 69 73 74 20 5b 65 78 70 72 20 7b     [list [expr {
1f310 24 70 61 64 78 2b 32 30 2a 24 66 69 78 65 64 57  $padx+20*$fixedW
1f320 69 64 74 68 7d 5d 20 24 70 61 64 79 20 30 20 24  idth}] $pady 0 $
1f330 66 69 78 65 64 48 65 69 67 68 74 5d 20 5c 0a 20  fixedHeight] \. 
1f340 20 20 20 5b 6c 69 73 74 20 5b 65 78 70 72 20 7b     [list [expr {
1f350 24 70 61 64 78 2b 32 30 2a 24 66 69 78 65 64 57  $padx+20*$fixedW
1f360 69 64 74 68 7d 5d 20 24 70 61 64 79 20 5b 65 78  idth}] $pady [ex
1f370 70 72 20 7b 24 66 69 78 65 64 57 69 64 74 68 2d  pr {$fixedWidth-
1f380 32 7d 5d 20 24 66 69 78 65 64 48 65 69 67 68 74  2}] $fixedHeight
1f390 5d 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20 24 70  ] \.    [list $p
1f3a0 61 64 78 20 5b 65 78 70 72 20 7b 24 70 61 64 79  adx [expr {$pady
1f3b0 2b 24 66 69 78 65 64 48 65 69 67 68 74 7d 5d 20  +$fixedHeight}] 
1f3c0 24 66 69 78 65 64 57 69 64 74 68 20 24 66 69 78  $fixedWidth $fix
1f3d0 65 64 48 65 69 67 68 74 5d 5d 0a 77 6d 20 6f 76  edHeight]].wm ov
1f3e0 65 72 72 69 64 65 72 65 64 69 72 65 63 74 20 2e  errideredirect .
1f3f0 20 30 0a 2e 74 20 63 6f 6e 66 69 67 75 72 65 20   0..t configure 
1f400 2d 73 70 61 63 65 6d 6f 64 65 20 6e 6f 6e 65 0a  -spacemode none.
1f410 77 6d 20 67 65 6f 6d 20 2e 20 7b 7d 0a 0a 74 65  wm geom . {}..te
1f420 73 74 20 74 65 78 74 44 69 73 70 2d 32 34 2e 31  st textDisp-24.1
1f430 31 2e 32 20 7b 54 6b 54 65 78 74 43 68 61 72 4c  1.2 {TkTextCharL
1f440 61 79 6f 75 74 50 72 6f 63 2c 20 2d 73 70 61 63  ayoutProc, -spac
1f450 65 6d 6f 64 65 20 6e 6f 6e 65 2c 20 6c 69 6e 65  emode none, line
1f460 20 65 6e 64 73 20 77 69 74 68 20 73 70 61 63 65   ends with space
1f470 20 74 68 61 74 20 64 6f 65 73 6e 27 74 20 71 75   that doesn't qu
1f480 69 74 65 20 66 69 74 7d 20 7b 0a 20 20 20 20 2e  ite fit} {.    .
1f490 74 20 63 6f 6e 66 69 67 75 72 65 20 2d 73 70 61  t configure -spa
1f4a0 63 65 6d 6f 64 65 20 6e 6f 6e 65 0a 20 20 20 20  cemode none.    
1f4b0 2e 74 20 63 6f 6e 66 69 67 75 72 65 20 2d 77 72  .t configure -wr
1f4c0 61 70 20 63 68 61 72 0a 20 20 20 20 2e 74 20 64  ap char.    .t d
1f4d0 65 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a 20 20  elete 1.0 end.  
1f4e0 20 20 2e 74 20 69 6e 73 65 72 74 20 31 2e 30 20    .t insert 1.0 
1f4f0 22 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34  "012345678901234
1f500 35 36 37 38 39 20 5c 6e 61 62 63 64 65 66 67 22  56789 \nabcdefg"
1f510 0a 20 20 20 20 73 65 74 20 77 20 5b 65 78 70 72  .    set w [expr
1f520 20 7b 32 31 2a 24 66 69 78 65 64 57 69 64 74 68   {21*$fixedWidth
1f530 2d 32 7d 5d 0a 20 20 20 20 77 6d 20 67 65 6f 6d  -2}].    wm geom
1f540 20 2e 20 5b 65 78 70 72 20 7b 32 2a 24 70 61 64   . [expr {2*$pad
1f550 78 2b 31 30 30 2b 24 77 7d 5d 78 24 68 65 69 67  x+100+$w}]x$heig
1f560 68 74 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20  ht.    update.  
1f570 20 20 73 65 74 20 72 65 73 75 6c 74 20 7b 7d 0a    set result {}.
1f580 20 20 20 20 6c 61 70 70 65 6e 64 20 72 65 73 75      lappend resu
1f590 6c 74 20 5b 2e 74 20 62 62 6f 78 20 31 2e 32 31  lt [.t bbox 1.21
1f5a0 5d 20 5b 2e 74 20 62 62 6f 78 20 32 2e 30 5d 0a  ] [.t bbox 2.0].
1f5b0 20 20 20 20 2e 74 20 6d 61 72 6b 20 73 65 74 20      .t mark set 
1f5c0 69 6e 73 65 72 74 20 31 2e 32 31 0a 20 20 20 20  insert 1.21.    
1f5d0 6c 61 70 70 65 6e 64 20 72 65 73 75 6c 74 20 5b  lappend result [
1f5e0 2e 74 20 62 62 6f 78 20 31 2e 32 31 5d 20 5b 2e  .t bbox 1.21] [.
1f5f0 74 20 62 62 6f 78 20 32 2e 30 5d 0a 7d 20 5b 6c  t bbox 2.0].} [l
1f600 69 73 74 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20  ist \.    [list 
1f610 5b 65 78 70 72 20 7b 24 70 61 64 78 2b 24 66 69  [expr {$padx+$fi
1f620 78 65 64 57 69 64 74 68 7d 5d 20 5b 65 78 70 72  xedWidth}] [expr
1f630 20 7b 24 70 61 64 79 2b 24 66 69 78 65 64 48 65   {$pady+$fixedHe
1f640 69 67 68 74 7d 5d 20 5b 65 78 70 72 20 7b 32 30  ight}] [expr {20
1f650 2a 24 66 69 78 65 64 57 69 64 74 68 2d 32 7d 5d  *$fixedWidth-2}]
1f660 20 24 66 69 78 65 64 48 65 69 67 68 74 5d 20 5c   $fixedHeight] \
1f670 0a 20 20 20 20 5b 6c 69 73 74 20 24 70 61 64 78  .    [list $padx
1f680 20 5b 65 78 70 72 20 7b 24 70 61 64 79 2b 32 2a   [expr {$pady+2*
1f690 24 66 69 78 65 64 48 65 69 67 68 74 7d 5d 20 24  $fixedHeight}] $
1f6a0 66 69 78 65 64 57 69 64 74 68 20 24 66 69 78 65  fixedWidth $fixe
1f6b0 64 48 65 69 67 68 74 5d 20 5c 0a 20 20 20 20 5b  dHeight] \.    [
1f6c0 6c 69 73 74 20 5b 65 78 70 72 20 7b 24 70 61 64  list [expr {$pad
1f6d0 78 2b 24 66 69 78 65 64 57 69 64 74 68 7d 5d 20  x+$fixedWidth}] 
1f6e0 5b 65 78 70 72 20 7b 24 70 61 64 79 2b 24 66 69  [expr {$pady+$fi
1f6f0 78 65 64 48 65 69 67 68 74 7d 5d 20 20 5b 65 78  xedHeight}]  [ex
1f700 70 72 20 7b 32 30 2a 24 66 69 78 65 64 57 69 64  pr {20*$fixedWid
1f710 74 68 2d 32 7d 5d 20 24 66 69 78 65 64 48 65 69  th-2}] $fixedHei
1f720 67 68 74 5d 20 5c 0a 20 20 20 20 5b 6c 69 73 74  ght] \.    [list
1f730 20 24 70 61 64 78 20 5b 65 78 70 72 20 7b 24 70   $padx [expr {$p
1f740 61 64 79 2b 32 2a 24 66 69 78 65 64 48 65 69 67  ady+2*$fixedHeig
1f750 68 74 7d 5d 20 24 66 69 78 65 64 57 69 64 74 68  ht}] $fixedWidth
1f760 20 24 66 69 78 65 64 48 65 69 67 68 74 5d 5d 0a   $fixedHeight]].
1f770 75 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69  unset -nocomplai
1f780 6e 20 77 0a 77 6d 20 67 65 6f 6d 20 2e 20 7b 7d  n w.wm geom . {}
1f790 0a 0a 74 65 73 74 20 74 65 78 74 44 69 73 70 2d  ..test textDisp-
1f7a0 32 34 2e 31 32 20 7b 54 6b 54 65 78 74 43 68 61  24.12 {TkTextCha
1f7b0 72 4c 61 79 6f 75 74 50 72 6f 63 2c 20 74 61 62  rLayoutProc, tab
1f7c0 20 63 61 75 73 65 73 20 77 72 61 70 7d 20 2d 62   causes wrap} -b
1f7d0 6f 64 79 20 7b 0a 20 20 20 20 2e 74 20 63 6f 6e  ody {.    .t con
1f7e0 66 69 67 75 72 65 20 2d 77 72 61 70 20 63 68 61  figure -wrap cha
1f7f0 72 0a 20 20 20 20 2e 74 20 64 65 6c 65 74 65 20  r.    .t delete 
1f800 31 2e 30 20 65 6e 64 0a 20 20 20 20 2e 74 20 69  1.0 end.    .t i
1f810 6e 73 65 72 74 20 31 2e 30 20 22 61 62 63 64 65  nsert 1.0 "abcde
1f820 66 67 68 69 22 0a 20 20 20 20 2e 74 20 6d 61 72  fghi".    .t mar
1f830 6b 20 73 65 74 20 69 6e 73 65 72 74 20 31 2e 34  k set insert 1.4
1f840 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20 69  .    .t insert i
1f850 6e 73 65 72 74 20 5c 74 5c 74 5c 74 0a 20 20 20  nsert \t\t\t.   
1f860 20 75 70 64 61 74 65 0a 20 20 20 20 6c 69 73 74   update.    list
1f870 20 5b 2e 74 20 62 62 6f 78 20 7b 69 6e 73 65 72   [.t bbox {inser
1f880 74 20 2d 31 63 7d 5d 20 5b 2e 74 20 62 62 6f 78  t -1c}] [.t bbox
1f890 20 69 6e 73 65 72 74 5d 0a 7d 20 2d 72 65 73 75   insert].} -resu
1f8a0 6c 74 20 5b 6c 69 73 74 20 5c 0a 20 20 20 20 5b  lt [list \.    [
1f8b0 6c 69 73 74 20 5b 65 78 70 72 20 7b 24 70 61 64  list [expr {$pad
1f8c0 78 2b 31 36 2a 24 66 69 78 65 64 57 69 64 74 68  x+16*$fixedWidth
1f8d0 7d 5d 20 24 70 61 64 79 20 5b 65 78 70 72 20 7b  }] $pady [expr {
1f8e0 32 30 2a 24 66 69 78 65 64 57 69 64 74 68 2d 31  20*$fixedWidth-1
1f8f0 36 2a 24 66 69 78 65 64 57 69 64 74 68 7d 5d 20  6*$fixedWidth}] 
1f900 24 66 69 78 65 64 48 65 69 67 68 74 5d 20 5c 0a  $fixedHeight] \.
1f910 20 20 20 20 5b 6c 69 73 74 20 24 70 61 64 78 20      [list $padx 
1f920 5b 65 78 70 72 20 7b 24 70 61 64 79 2b 24 66 69  [expr {$pady+$fi
1f930 78 65 64 48 65 69 67 68 74 7d 5d 20 24 66 69 78  xedHeight}] $fix
1f940 65 64 57 69 64 74 68 20 24 66 69 78 65 64 48 65  edWidth $fixedHe
1f950 69 67 68 74 5d 5d 0a 0a 74 65 73 74 20 74 65 78  ight]]..test tex
1f960 74 44 69 73 70 2d 32 34 2e 31 33 20 7b 54 6b 54  tDisp-24.13 {TkT
1f970 65 78 74 43 68 61 72 4c 61 79 6f 75 74 50 72 6f  extCharLayoutPro
1f980 63 2c 20 2d 77 72 61 70 20 6e 6f 6e 65 7d 20 7b  c, -wrap none} {
1f990 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69 67 75 72  .    .t configur
1f9a0 65 20 2d 77 72 61 70 20 6e 6f 6e 65 0a 20 20 20  e -wrap none.   
1f9b0 20 2e 74 20 64 65 6c 65 74 65 20 31 2e 30 20 65   .t delete 1.0 e
1f9c0 6e 64 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74  nd.    .t insert
1f9d0 20 31 2e 30 20 22 61 62 63 64 65 66 67 68 69 6a   1.0 "abcdefghij
1f9e0 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a  klmnopqrstuvwxyz
1f9f0 22 0a 20 20 20 20 77 6d 20 67 65 6f 6d 20 2e 20  ".    wm geom . 
1fa00 7b 7d 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20  {}.    update.  
1fa10 20 20 6c 69 73 74 20 5b 2e 74 20 62 62 6f 78 20    list [.t bbox 
1fa20 31 2e 31 39 5d 20 5b 2e 74 20 62 62 6f 78 20 31  1.19] [.t bbox 1
1fa30 2e 32 30 5d 0a 7d 20 5b 6c 69 73 74 20 5b 6c 69  .20].} [list [li
1fa40 73 74 20 5b 65 78 70 72 20 7b 24 70 61 64 78 2b  st [expr {$padx+
1fa50 31 39 2a 24 66 69 78 65 64 57 69 64 74 68 7d 5d  19*$fixedWidth}]
1fa60 20 24 70 61 64 79 20 24 66 69 78 65 64 57 69 64   $pady $fixedWid
1fa70 74 68 20 24 66 69 78 65 64 48 65 69 67 68 74 5d  th $fixedHeight]
1fa80 20 7b 7d 5d 0a 0a 74 65 73 74 20 74 65 78 74 44   {}]..test textD
1fa90 69 73 70 2d 32 34 2e 31 34 20 7b 54 6b 54 65 78  isp-24.14 {TkTex
1faa0 74 43 68 61 72 4c 61 79 6f 75 74 50 72 6f 63 2c  tCharLayoutProc,
1fab0 20 2d 77 72 61 70 20 6e 6f 6e 65 7d 20 2d 62 6f   -wrap none} -bo
1fac0 64 79 20 7b 0a 20 20 20 20 2e 74 20 63 6f 6e 66  dy {.    .t conf
1fad0 69 67 75 72 65 20 2d 77 72 61 70 20 6e 6f 6e 65  igure -wrap none
1fae0 0a 20 20 20 20 2e 74 20 64 65 6c 65 74 65 20 31  .    .t delete 1
1faf0 2e 30 20 65 6e 64 0a 20 20 20 20 2e 74 20 69 6e  .0 end.    .t in
1fb00 73 65 72 74 20 31 2e 30 20 22 61 62 63 64 65 66  sert 1.0 "abcdef
1fb10 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76  ghijklmnopqrstuv
1fb20 77 78 79 7a 22 0a 20 20 20 20 73 65 74 20 77 20  wxyz".    set w 
1fb30 5b 65 78 70 72 20 7b 32 30 2a 24 66 69 78 65 64  [expr {20*$fixed
1fb40 57 69 64 74 68 2b 31 7d 5d 0a 20 20 20 20 77 6d  Width+1}].    wm
1fb50 20 67 65 6f 6d 20 2e 20 5b 65 78 70 72 20 7b 32   geom . [expr {2
1fb60 2a 24 70 61 64 78 2b 31 30 30 2b 24 77 7d 5d 78  *$padx+100+$w}]x
1fb70 24 68 65 69 67 68 74 0a 20 20 20 20 75 70 64 61  $height.    upda
1fb80 74 65 0a 20 20 20 20 6c 69 73 74 20 5b 2e 74 20  te.    list [.t 
1fb90 62 62 6f 78 20 31 2e 31 39 5d 20 5b 2e 74 20 62  bbox 1.19] [.t b
1fba0 62 6f 78 20 31 2e 32 30 5d 0a 7d 20 2d 63 6c 65  box 1.20].} -cle
1fbb0 61 6e 75 70 20 7b 0a 20 20 75 6e 73 65 74 20 2d  anup {.  unset -
1fbc0 6e 6f 63 6f 6d 70 6c 61 69 6e 20 77 0a 7d 20 2d  nocomplain w.} -
1fbd0 72 65 73 75 6c 74 20 5b 6c 69 73 74 20 5c 0a 20  result [list \. 
1fbe0 20 20 20 5b 6c 69 73 74 20 5b 65 78 70 72 20 7b     [list [expr {
1fbf0 24 70 61 64 78 2b 31 39 2a 24 66 69 78 65 64 57  $padx+19*$fixedW
1fc00 69 64 74 68 7d 5d 20 24 70 61 64 79 20 24 66 69  idth}] $pady $fi
1fc10 78 65 64 57 69 64 74 68 20 24 66 69 78 65 64 48  xedWidth $fixedH
1fc20 65 69 67 68 74 5d 20 5c 0a 20 20 20 20 5b 6c 69  eight] \.    [li
1fc30 73 74 20 5b 65 78 70 72 20 7b 24 70 61 64 78 2b  st [expr {$padx+
1fc40 32 30 2a 24 66 69 78 65 64 57 69 64 74 68 7d 5d  20*$fixedWidth}]
1fc50 20 24 70 61 64 79 20 31 20 24 66 69 78 65 64 48   $pady 1 $fixedH
1fc60 65 69 67 68 74 5d 5d 0a 0a 74 65 73 74 20 74 65  eight]]..test te
1fc70 78 74 44 69 73 70 2d 32 34 2e 31 35 20 7b 54 6b  xtDisp-24.15 {Tk
1fc80 54 65 78 74 43 68 61 72 4c 61 79 6f 75 74 50 72  TextCharLayoutPr
1fc90 6f 63 2c 20 2d 77 72 61 70 20 6e 6f 6e 65 7d 20  oc, -wrap none} 
1fca0 7b 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69 67 75  {.    .t configu
1fcb0 72 65 20 2d 77 72 61 70 20 6e 6f 6e 65 0a 20 20  re -wrap none.  
1fcc0 20 20 2e 74 20 64 65 6c 65 74 65 20 31 2e 30 20    .t delete 1.0 
1fcd0 65 6e 64 0a 20 20 20 20 2e 74 20 69 6e 73 65 72  end.    .t inser
1fce0 74 20 31 2e 30 20 22 61 62 63 64 65 66 67 68 69  t 1.0 "abcdefghi
1fcf0 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79  jklmnopqrstuvwxy
1fd00 7a 22 0a 20 20 20 20 73 65 74 20 77 20 5b 65 78  z".    set w [ex
1fd10 70 72 20 7b 32 31 2a 24 66 69 78 65 64 57 69 64  pr {21*$fixedWid
1fd20 74 68 2d 31 7d 5d 0a 20 20 20 20 77 6d 20 67 65  th-1}].    wm ge
1fd30 6f 6d 20 2e 20 5b 65 78 70 72 20 7b 32 2a 24 70  om . [expr {2*$p
1fd40 61 64 78 2b 31 30 30 2b 24 77 7d 5d 78 24 68 65  adx+100+$w}]x$he
1fd50 69 67 68 74 0a 20 20 20 20 75 70 64 61 74 65 0a  ight.    update.
1fd60 20 20 20 20 6c 69 73 74 20 5b 2e 74 20 62 62 6f      list [.t bbo
1fd70 78 20 31 2e 31 39 5d 20 5b 2e 74 20 62 62 6f 78  x 1.19] [.t bbox
1fd80 20 31 2e 32 30 5d 0a 7d 20 5b 6c 69 73 74 20 5c   1.20].} [list \
1fd90 0a 20 20 20 20 5b 6c 69 73 74 20 5b 65 78 70 72  .    [list [expr
1fda0 20 7b 24 70 61 64 78 2b 31 39 2a 24 66 69 78 65   {$padx+19*$fixe
1fdb0 64 57 69 64 74 68 7d 5d 20 24 70 61 64 79 20 5b  dWidth}] $pady [
1fdc0 65 78 70 72 20 7b 24 66 69 78 65 64 57 69 64 74  expr {$fixedWidt
1fdd0 68 7d 5d 20 24 66 69 78 65 64 48 65 69 67 68 74  h}] $fixedHeight
1fde0 5d 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20 5b 65  ] \.    [list [e
1fdf0 78 70 72 20 7b 24 70 61 64 78 2b 32 30 2a 24 66  xpr {$padx+20*$f
1fe00 69 78 65 64 57 69 64 74 68 7d 5d 20 24 70 61 64  ixedWidth}] $pad
1fe10 79 20 5b 65 78 70 72 20 7b 24 66 69 78 65 64 57  y [expr {$fixedW
1fe20 69 64 74 68 2d 31 7d 5d 20 24 66 69 78 65 64 48  idth-1}] $fixedH
1fe30 65 69 67 68 74 5d 5d 0a 0a 74 65 73 74 20 74 65  eight]]..test te
1fe40 78 74 44 69 73 70 2d 32 34 2e 31 36 20 7b 54 6b  xtDisp-24.16 {Tk
1fe50 54 65 78 74 43 68 61 72 4c 61 79 6f 75 74 50 72  TextCharLayoutPr
1fe60 6f 63 2c 20 6e 6f 20 63 68 61 72 73 20 66 69 74  oc, no chars fit
1fe70 7d 20 7b 0a 20 20 20 20 69 66 20 7b 24 74 63 6c  } {.    if {$tcl
1fe80 5f 70 6c 61 74 66 6f 72 6d 28 70 6c 61 74 66 6f  _platform(platfo
1fe90 72 6d 29 20 3d 3d 20 22 77 69 6e 64 6f 77 73 22  rm) == "windows"
1fea0 7d 20 7b 0a 09 77 6d 20 6f 76 65 72 72 69 64 65  } {..wm override
1feb0 72 65 64 69 72 65 63 74 20 2e 20 31 0a 20 20 20  redirect . 1.   
1fec0 20 7d 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69 67   }.    .t config
1fed0 75 72 65 20 2d 77 72 61 70 20 63 68 61 72 0a 20  ure -wrap char. 
1fee0 20 20 20 2e 74 20 64 65 6c 65 74 65 20 31 2e 30     .t delete 1.0
1fef0 20 65 6e 64 0a 20 20 20 20 2e 74 20 69 6e 73 65   end.    .t inse
1ff00 72 74 20 31 2e 30 20 22 61 62 63 64 65 66 67 68  rt 1.0 "abcdefgh
1ff10 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78  ijklmnopqrstuvwx
1ff20 79 7a 22 0a 20 20 20 20 77 6d 20 67 65 6f 6d 20  yz".    wm geom 
1ff30 2e 20 31 30 33 78 24 68 65 69 67 68 74 0a 20 20  . 103x$height.  
1ff40 20 20 75 70 64 61 74 65 0a 20 20 20 20 6c 69 73    update.    lis
1ff50 74 20 5b 2e 74 20 62 62 6f 78 20 31 2e 30 5d 20  t [.t bbox 1.0] 
1ff60 5b 2e 74 20 62 62 6f 78 20 31 2e 31 5d 20 5b 2e  [.t bbox 1.1] [.
1ff70 74 20 62 62 6f 78 20 31 2e 32 5d 0a 7d 20 5b 6c  t bbox 1.2].} [l
1ff80 69 73 74 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20  ist \.    [list 
1ff90 24 70 61 64 78 20 24 70 61 64 79 20 31 20 24 66  $padx $pady 1 $f
1ffa0 69 78 65 64 48 65 69 67 68 74 5d 20 5c 0a 20 20  ixedHeight] \.  
1ffb0 20 20 5b 6c 69 73 74 20 24 70 61 64 78 20 5b 65    [list $padx [e
1ffc0 78 70 72 20 7b 24 70 61 64 79 2b 24 66 69 78 65  xpr {$pady+$fixe
1ffd0 64 48 65 69 67 68 74 7d 5d 20 31 20 24 66 69 78  dHeight}] 1 $fix
1ffe0 65 64 48 65 69 67 68 74 5d 20 5c 0a 20 20 20 20  edHeight] \.    
1fff0 5b 6c 69 73 74 20 24 70 61 64 78 20 5b 65 78 70  [list $padx [exp
20000 72 20 7b 24 70 61 64 79 2b 32 2a 24 66 69 78 65  r {$pady+2*$fixe
20010 64 48 65 69 67 68 74 7d 5d 20 31 20 24 66 69 78  dHeight}] 1 $fix
20020 65 64 48 65 69 67 68 74 5d 5d 0a 0a 69 66 20 7b  edHeight]]..if {
20030 24 74 63 6c 5f 70 6c 61 74 66 6f 72 6d 28 70 6c  $tcl_platform(pl
20040 61 74 66 6f 72 6d 29 20 3d 3d 20 22 77 69 6e 64  atform) == "wind
20050 6f 77 73 22 7d 20 7b 0a 20 20 20 20 77 6d 20 6f  ows"} {.    wm o
20060 76 65 72 72 69 64 65 72 65 64 69 72 65 63 74 20  verrideredirect 
20070 2e 20 30 0a 7d 0a 74 65 73 74 20 74 65 78 74 44  . 0.}.test textD
20080 69 73 70 2d 32 34 2e 31 37 20 7b 54 6b 54 65 78  isp-24.17 {TkTex
20090 74 43 68 61 72 4c 61 79 6f 75 74 50 72 6f 63 2c  tCharLayoutProc,
200a0 20 2d 77 72 61 70 20 77 6f 72 64 7d 20 7b 0a 20   -wrap word} {. 
200b0 20 20 20 2e 74 20 63 6f 6e 66 69 67 75 72 65 20     .t configure 
200c0 2d 77 72 61 70 20 77 6f 72 64 0a 20 20 20 20 2e  -wrap word.    .
200d0 74 20 64 65 6c 65 74 65 20 31 2e 30 20 65 6e 64  t delete 1.0 end
200e0 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20 31  .    .t insert 1
200f0 2e 30 20 22 54 68 69 73 20 69 73 20 61 20 6c 69  .0 "This is a li
20100 6e 65 20 74 68 61 74 20 77 72 61 70 73 20 61 72  ne that wraps ar
20110 6f 75 6e 64 22 0a 20 20 20 20 77 6d 20 67 65 6f  ound".    wm geo
20120 6d 20 2e 20 7b 7d 0a 20 20 20 20 75 70 64 61 74  m . {}.    updat
20130 65 0a 20 20 20 20 6c 69 73 74 20 5b 2e 74 20 62  e.    list [.t b
20140 62 6f 78 20 31 2e 31 39 5d 20 5b 2e 74 20 62 62  box 1.19] [.t bb
20150 6f 78 20 31 2e 32 30 5d 0a 7d 20 5b 6c 69 73 74  ox 1.20].} [list
20160 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20 5b 65 78   \.    [list [ex
20170 70 72 20 7b 24 70 61 64 78 2b 31 39 2a 24 66 69  pr {$padx+19*$fi
20180 78 65 64 57 69 64 74 68 7d 5d 20 24 70 61 64 79  xedWidth}] $pady
20190 20 24 66 69 78 65 64 57 69 64 74 68 20 24 66 69   $fixedWidth $fi
201a0 78 65 64 48 65 69 67 68 74 5d 20 5c 0a 20 20 20  xedHeight] \.   
201b0 20 5b 6c 69 73 74 20 24 70 61 64 78 20 5b 65 78   [list $padx [ex
201c0 70 72 20 7b 24 70 61 64 79 2b 24 66 69 78 65 64  pr {$pady+$fixed
201d0 48 65 69 67 68 74 7d 5d 20 24 66 69 78 65 64 57  Height}] $fixedW
201e0 69 64 74 68 20 24 66 69 78 65 64 48 65 69 67 68  idth $fixedHeigh
201f0 74 5d 5d 0a 0a 74 65 73 74 20 74 65 78 74 44 69  t]]..test textDi
20200 73 70 2d 32 34 2e 31 38 20 7b 54 6b 54 65 78 74  sp-24.18 {TkText
20210 43 68 61 72 4c 61 79 6f 75 74 50 72 6f 63 2c 20  CharLayoutProc, 
20220 2d 77 72 61 70 20 77 6f 72 64 7d 20 7b 0a 20 20  -wrap word} {.  
20230 20 20 2e 74 20 63 6f 6e 66 69 67 75 72 65 20 2d    .t configure -
20240 77 72 61 70 20 77 6f 72 64 0a 20 20 20 20 2e 74  wrap word.    .t
20250 20 64 65 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a   delete 1.0 end.
20260 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20 31 2e      .t insert 1.
20270 30 20 22 78 54 68 69 73 20 69 73 20 61 20 6c 69  0 "xThis is a li
20280 6e 65 20 74 68 61 74 20 77 72 61 70 73 20 61 72  ne that wraps ar
20290 6f 75 6e 64 22 0a 20 20 20 20 77 6d 20 67 65 6f  ound".    wm geo
202a0 6d 20 2e 20 7b 7d 0a 20 20 20 20 75 70 64 61 74  m . {}.    updat
202b0 65 0a 20 20 20 20 6c 69 73 74 20 5b 2e 74 20 62  e.    list [.t b
202c0 62 6f 78 20 31 2e 31 34 5d 20 5b 2e 74 20 62 62  box 1.14] [.t bb
202d0 6f 78 20 31 2e 31 35 5d 20 5b 2e 74 20 62 62 6f  ox 1.15] [.t bbo
202e0 78 20 31 2e 31 36 5d 20 5b 2e 74 20 62 62 6f 78  x 1.16] [.t bbox
202f0 20 31 2e 32 31 5d 0a 7d 20 5b 6c 69 73 74 20 5c   1.21].} [list \
20300 0a 20 20 20 20 5b 6c 69 73 74 20 5b 65 78 70 72  .    [list [expr
20310 20 7b 24 70 61 64 78 2b 31 34 2a 24 66 69 78 65   {$padx+14*$fixe
20320 64 57 69 64 74 68 7d 5d 20 24 70 61 64 79 20 24  dWidth}] $pady $
20330 66 69 78 65 64 57 69 64 74 68 20 24 66 69 78 65  fixedWidth $fixe
20340 64 48 65 69 67 68 74 5d 20 5c 0a 20 20 20 20 5b  dHeight] \.    [
20350 6c 69 73 74 20 5b 65 78 70 72 20 7b 24 70 61 64  list [expr {$pad
20360 78 2b 31 35 2a 24 66 69 78 65 64 57 69 64 74 68  x+15*$fixedWidth
20370 7d 5d 20 24 70 61 64 79 20 24 66 69 78 65 64 57  }] $pady $fixedW
20380 69 64 74 68 20 24 66 69 78 65 64 48 65 69 67 68  idth $fixedHeigh
20390 74 5d 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20 5b  t] \.    [list [
203a0 65 78 70 72 20 7b 24 70 61 64 78 2b 31 36 2a 24  expr {$padx+16*$
203b0 66 69 78 65 64 57 69 64 74 68 7d 5d 20 24 70 61  fixedWidth}] $pa
203c0 64 79 20 24 66 69 78 65 64 57 69 64 74 68 20 24  dy $fixedWidth $
203d0 66 69 78 65 64 48 65 69 67 68 74 5d 20 5c 0a 20  fixedHeight] \. 
203e0 20 20 20 5b 6c 69 73 74 20 24 70 61 64 78 20 5b     [list $padx [
203f0 65 78 70 72 20 7b 24 70 61 64 79 2b 24 66 69 78  expr {$pady+$fix
20400 65 64 48 65 69 67 68 74 7d 5d 20 24 66 69 78 65  edHeight}] $fixe
20410 64 57 69 64 74 68 20 24 66 69 78 65 64 48 65 69  dWidth $fixedHei
20420 67 68 74 5d 5d 0a 0a 74 65 73 74 20 74 65 78 74  ght]]..test text
20430 44 69 73 70 2d 32 34 2e 31 39 20 7b 54 6b 54 65  Disp-24.19 {TkTe
20440 78 74 43 68 61 72 4c 61 79 6f 75 74 50 72 6f 63  xtCharLayoutProc
20450 2c 20 2d 77 72 61 70 20 77 6f 72 64 7d 20 7b 0a  , -wrap word} {.
20460 20 20 20 20 2e 74 20 63 6f 6e 66 69 67 75 72 65      .t configure
20470 20 2d 77 72 61 70 20 77 6f 72 64 0a 20 20 20 20   -wrap word.    
20480 2e 74 20 64 65 6c 65 74 65 20 31 2e 30 20 65 6e  .t delete 1.0 en
20490 64 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20  d.    .t insert 
204a0 31 2e 30 20 22 78 78 54 68 69 73 20 69 73 20 61  1.0 "xxThis is a
204b0 20 6c 69 6e 65 20 74 68 61 74 20 77 72 61 70 73   line that wraps
204c0 20 61 72 6f 75 6e 64 22 0a 20 20 20 20 77 6d 20   around".    wm 
204d0 67 65 6f 6d 20 2e 20 7b 7d 0a 20 20 20 20 75 70  geom . {}.    up
204e0 64 61 74 65 0a 20 20 20 20 6c 69 73 74 20 5b 2e  date.    list [.
204f0 74 20 62 62 6f 78 20 31 2e 31 34 5d 20 5b 2e 74  t bbox 1.14] [.t
20500 20 62 62 6f 78 20 31 2e 31 35 5d 20 5b 2e 74 20   bbox 1.15] [.t 
20510 62 62 6f 78 20 31 2e 31 36 5d 0a 7d 20 5b 6c 69  bbox 1.16].} [li
20520 73 74 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20 5b  st \.    [list [
20530 65 78 70 72 20 7b 24 70 61 64 78 2b 31 34 2a 24  expr {$padx+14*$
20540 66 69 78 65 64 57 69 64 74 68 7d 5d 20 24 70 61  fixedWidth}] $pa
20550 64 79 20 24 66 69 78 65 64 57 69 64 74 68 20 24  dy $fixedWidth $
20560 66 69 78 65 64 48 65 69 67 68 74 5d 20 5c 0a 20  fixedHeight] \. 
20570 20 20 20 5b 6c 69 73 74 20 5b 65 78 70 72 20 7b     [list [expr {
20580 24 70 61 64 78 2b 31 35 2a 24 66 69 78 65 64 57  $padx+15*$fixedW
20590 69 64 74 68 7d 5d 20 24 70 61 64 79 20 24 66 69  idth}] $pady $fi
205a0 78 65 64 57 69 64 74 68 20 24 66 69 78 65 64 48  xedWidth $fixedH
205b0 65 69 67 68 74 5d 20 5c 0a 20 20 20 20 5b 6c 69  eight] \.    [li
205c0 73 74 20 5b 65 78 70 72 20 7b 24 70 61 64 78 2b  st [expr {$padx+
205d0 31 36 2a 24 66 69 78 65 64 57 69 64 74 68 7d 5d  16*$fixedWidth}]
205e0 20 24 70 61 64 79 20 5b 65 78 70 72 20 7b 34 2a   $pady [expr {4*
205f0 24 66 69 78 65 64 57 69 64 74 68 7d 5d 20 24 66  $fixedWidth}] $f
20600 69 78 65 64 48 65 69 67 68 74 5d 5d 0a 0a 74 65  ixedHeight]]..te
20610 73 74 20 74 65 78 74 44 69 73 70 2d 32 34 2e 32  st textDisp-24.2
20620 30 20 7b 54 6b 54 65 78 74 43 68 61 72 4c 61 79  0 {TkTextCharLay
20630 6f 75 74 50 72 6f 63 2c 20 76 65 72 74 69 63 61  outProc, vertica
20640 6c 20 6f 66 66 73 65 74 7d 20 7b 0a 20 20 20 20  l offset} {.    
20650 2e 74 20 63 6f 6e 66 69 67 75 72 65 20 2d 77 72  .t configure -wr
20660 61 70 20 6e 6f 6e 65 0a 20 20 20 20 2e 74 20 64  ap none.    .t d
20670 65 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a 20 20  elete 1.0 end.  
20680 20 20 2e 74 20 69 6e 73 65 72 74 20 31 2e 30 20    .t insert 1.0 
20690 22 4c 69 6e 65 20 31 5c 6e 4c 69 6e 65 20 32 5c  "Line 1\nLine 2\
206a0 6e 4c 69 6e 65 20 33 22 0a 20 20 20 20 73 65 74  nLine 3".    set
206b0 20 72 65 73 75 6c 74 20 7b 7d 0a 20 20 20 20 6c   result {}.    l
206c0 61 70 70 65 6e 64 20 72 65 73 75 6c 74 20 5b 2e  append result [.
206d0 74 20 62 62 6f 78 20 32 2e 31 5d 20 5b 2e 74 20  t bbox 2.1] [.t 
206e0 64 6c 69 6e 65 69 6e 66 6f 20 32 2e 31 5d 0a 20  dlineinfo 2.1]. 
206f0 20 20 20 2e 74 20 74 61 67 20 63 6f 6e 66 69 67     .t tag config
20700 75 72 65 20 6f 66 66 73 65 74 20 2d 6f 66 66 73  ure offset -offs
20710 65 74 20 36 0a 20 20 20 20 2e 74 20 74 61 67 20  et 6.    .t tag 
20720 61 64 64 20 6f 66 66 73 65 74 20 32 2e 31 0a 20  add offset 2.1. 
20730 20 20 20 75 70 64 61 74 65 0a 20 20 20 20 6c 61     update.    la
20740 70 70 65 6e 64 20 72 65 73 75 6c 74 20 5b 2e 74  ppend result [.t
20750 20 62 62 6f 78 20 32 2e 31 5d 20 5b 2e 74 20 64   bbox 2.1] [.t d
20760 6c 69 6e 65 69 6e 66 6f 20 32 2e 31 5d 0a 20 20  lineinfo 2.1].  
20770 20 20 2e 74 20 74 61 67 20 63 6f 6e 66 69 67 75    .t tag configu
20780 72 65 20 6f 66 66 73 65 74 20 2d 6f 66 66 73 65  re offset -offse
20790 74 20 2d 32 0a 20 20 20 20 75 70 64 61 74 65 0a  t -2.    update.
207a0 20 20 20 20 6c 61 70 70 65 6e 64 20 72 65 73 75      lappend resu
207b0 6c 74 20 5b 2e 74 20 62 62 6f 78 20 32 2e 31 5d  lt [.t bbox 2.1]
207c0 20 5b 2e 74 20 64 6c 69 6e 65 69 6e 66 6f 20 32   [.t dlineinfo 2
207d0 2e 31 5d 0a 20 20 20 20 2e 74 20 74 61 67 20 64  .1].    .t tag d
207e0 65 6c 65 74 65 20 6f 66 66 73 65 74 0a 20 20 20  elete offset.   
207f0 20 75 70 64 61 74 65 0a 20 20 20 20 73 65 74 20   update.    set 
20800 72 65 73 75 6c 74 0a 7d 20 5b 6c 69 73 74 20 5c  result.} [list \
20810 0a 20 20 20 20 5b 6c 69 73 74 20 5b 65 78 70 72  .    [list [expr
20820 20 7b 24 70 61 64 78 2b 24 66 69 78 65 64 57 69   {$padx+$fixedWi
20830 64 74 68 7d 5d 20 5b 65 78 70 72 20 7b 24 70 61  dth}] [expr {$pa
20840 64 79 2b 24 66 69 78 65 64 48 65 69 67 68 74 7d  dy+$fixedHeight}
20850 5d 20 24 66 69 78 65 64 57 69 64 74 68 20 24 66  ] $fixedWidth $f
20860 69 78 65 64 48 65 69 67 68 74 5d 20 5c 0a 20 20  ixedHeight] \.  
20870 20 20 5b 6c 69 73 74 20 24 70 61 64 78 20 5b 65    [list $padx [e
20880 78 70 72 20 7b 24 70 61 64 79 2b 24 66 69 78 65  xpr {$pady+$fixe
20890 64 48 65 69 67 68 74 7d 5d 20 5b 65 78 70 72 20  dHeight}] [expr 
208a0 7b 36 2a 24 66 69 78 65 64 57 69 64 74 68 7d 5d  {6*$fixedWidth}]
208b0 20 24 66 69 78 65 64 48 65 69 67 68 74 20 24 66   $fixedHeight $f
208c0 69 78 65 64 41 73 63 65 6e 74 5d 20 5c 0a 20 20  ixedAscent] \.  
208d0 20 20 5b 6c 69 73 74 20 5b 65 78 70 72 20 7b 24    [list [expr {$
208e0 70 61 64 78 2b 24 66 69 78 65 64 57 69 64 74 68  padx+$fixedWidth
208f0 7d 5d 20 5b 65 78 70 72 20 7b 24 70 61 64 79 2b  }] [expr {$pady+
20900 24 66 69 78 65 64 48 65 69 67 68 74 7d 5d 20 24  $fixedHeight}] $
20910 66 69 78 65 64 57 69 64 74 68 20 24 66 69 78 65  fixedWidth $fixe
20920 64 48 65 69 67 68 74 5d 20 5c 0a 20 20 20 20 5b  dHeight] \.    [
20930 6c 69 73 74 20 24 70 61 64 78 20 5b 65 78 70 72  list $padx [expr
20940 20 7b 24 70 61 64 79 2b 24 66 69 78 65 64 48 65   {$pady+$fixedHe
20950 69 67 68 74 7d 5d 20 5b 65 78 70 72 20 7b 36 2a  ight}] [expr {6*
20960 24 66 69 78 65 64 57 69 64 74 68 7d 5d 20 5b 65  $fixedWidth}] [e
20970 78 70 72 20 7b 24 66 69 78 65 64 48 65 69 67 68  xpr {$fixedHeigh
20980 74 2b 36 7d 5d 20 5b 65 78 70 72 20 7b 24 66 69  t+6}] [expr {$fi
20990 78 65 64 41 73 63 65 6e 74 2b 36 7d 5d 5d 20 5c  xedAscent+6}]] \
209a0 0a 20 20 20 20 5b 6c 69 73 74 20 5b 65 78 70 72  .    [list [expr
209b0 20 7b 24 70 61 64 78 2b 24 66 69 78 65 64 57 69   {$padx+$fixedWi
209c0 64 74 68 7d 5d 20 5b 65 78 70 72 20 7b 24 70 61  dth}] [expr {$pa
209d0 64 79 2b 24 66 69 78 65 64 48 65 69 67 68 74 2b  dy+$fixedHeight+
209e0 32 7d 5d 20 24 66 69 78 65 64 57 69 64 74 68 20  2}] $fixedWidth 
209f0 24 66 69 78 65 64 48 65 69 67 68 74 5d 20 5c 0a  $fixedHeight] \.
20a00 20 20 20 20 5b 6c 69 73 74 20 24 70 61 64 78 20      [list $padx 
20a10 5b 65 78 70 72 20 7b 24 70 61 64 79 2b 24 66 69  [expr {$pady+$fi
20a20 78 65 64 48 65 69 67 68 74 7d 5d 20 5b 65 78 70  xedHeight}] [exp
20a30 72 20 7b 36 2a 24 66 69 78 65 64 57 69 64 74 68  r {6*$fixedWidth
20a40 7d 5d 20 5b 65 78 70 72 20 7b 24 66 69 78 65 64  }] [expr {$fixed
20a50 48 65 69 67 68 74 2b 32 7d 5d 20 24 66 69 78 65  Height+2}] $fixe
20a60 64 41 73 63 65 6e 74 5d 5d 0a 2e 74 20 63 6f 6e  dAscent]]..t con
20a70 66 69 67 75 72 65 20 2d 77 69 64 74 68 20 33 30  figure -width 30
20a80 0a 75 70 64 61 74 65 0a 0a 74 65 73 74 20 74 65  .update..test te
20a90 78 74 44 69 73 70 2d 32 34 2e 32 31 20 7b 54 6b  xtDisp-24.21 {Tk
20aa0 54 65 78 74 43 68 61 72 4c 61 79 6f 75 74 50 72  TextCharLayoutPr
20ab0 6f 63 2c 20 77 6f 72 64 20 62 72 65 61 6b 73 7d  oc, word breaks}
20ac0 20 7b 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69 67   {.    .t config
20ad0 75 72 65 20 2d 77 72 61 70 20 77 6f 72 64 0a 20  ure -wrap word. 
20ae0 20 20 20 2e 74 20 64 65 6c 65 74 65 20 31 2e 30     .t delete 1.0
20af0 20 65 6e 64 0a 20 20 20 20 2e 74 20 69 6e 73 65   end.    .t inse
20b00 72 74 20 31 2e 30 20 22 53 61 6d 70 6c 65 20 74  rt 1.0 "Sample t
20b10 65 78 74 20 78 78 78 78 78 78 78 20 79 79 79 79  ext xxxxxxx yyyy
20b20 79 20 7a 7a 7a 7a 7a 7a 7a 20 71 71 71 71 71 20  y zzzzzzz qqqqq 
20b30 72 72 72 72 20 73 73 73 73 20 74 74 20 75 20 76  rrrr ssss tt u v
20b40 76 76 76 76 22 0a 20 20 20 20 66 72 61 6d 65 20  vvvv".    frame 
20b50 2e 74 2e 66 20 2d 77 69 64 74 68 20 33 30 20 2d  .t.f -width 30 -
20b60 68 65 69 67 68 74 20 32 30 20 2d 62 67 20 62 6c  height 20 -bg bl
20b70 61 63 6b 0a 20 20 20 20 2e 74 20 77 69 6e 64 6f  ack.    .t windo
20b80 77 20 63 72 65 61 74 65 20 31 2e 33 36 20 2d 77  w create 1.36 -w
20b90 69 6e 64 6f 77 20 2e 74 2e 66 0a 20 20 20 20 2e  indow .t.f.    .
20ba0 74 20 62 62 6f 78 20 31 2e 32 36 0a 7d 20 5b 6c  t bbox 1.26.} [l
20bb0 69 73 74 20 24 70 61 64 78 20 5b 65 78 70 72 20  ist $padx [expr 
20bc0 7b 24 70 61 64 79 2b 24 66 69 78 65 64 48 65 69  {$pady+$fixedHei
20bd0 67 68 74 2b 28 28 32 30 2d 24 66 69 78 65 64 48  ght+((20-$fixedH
20be0 65 69 67 68 74 29 2f 32 29 7d 5d 20 24 66 69 78  eight)/2)}] $fix
20bf0 65 64 57 69 64 74 68 20 24 66 69 78 65 64 48 65  edWidth $fixedHe
20c00 69 67 68 74 5d 0a 0a 74 65 73 74 20 74 65 78 74  ight]..test text
20c10 44 69 73 70 2d 32 34 2e 32 32 20 7b 54 6b 54 65  Disp-24.22 {TkTe
20c20 78 74 43 68 61 72 4c 61 79 6f 75 74 50 72 6f 63  xtCharLayoutProc
20c30 2c 20 77 6f 72 64 20 62 72 65 61 6b 73 7d 20 7b  , word breaks} {
20c40 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69 67 75 72  .    .t configur
20c50 65 20 2d 77 72 61 70 20 77 6f 72 64 0a 20 20 20  e -wrap word.   
20c60 20 2e 74 20 64 65 6c 65 74 65 20 31 2e 30 20 65   .t delete 1.0 e
20c70 6e 64 0a 20 20 20 20 66 72 61 6d 65 20 2e 74 2e  nd.    frame .t.
20c80 66 20 2d 77 69 64 74 68 20 33 30 20 2d 68 65 69  f -width 30 -hei
20c90 67 68 74 20 32 30 20 2d 62 67 20 62 6c 61 63 6b  ght 20 -bg black
20ca0 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20 31  .    .t insert 1
20cb0 2e 30 20 22 53 61 6d 70 6c 65 20 74 65 78 74 20  .0 "Sample text 
20cc0 78 78 78 78 78 78 78 20 79 79 79 79 79 79 79 22  xxxxxxx yyyyyyy"
20cd0 0a 20 20 20 20 2e 74 20 77 69 6e 64 6f 77 20 63  .    .t window c
20ce0 72 65 61 74 65 20 65 6e 64 20 2d 77 69 6e 64 6f  reate end -windo
20cf0 77 20 2e 74 2e 66 0a 20 20 20 20 2e 74 20 69 6e  w .t.f.    .t in
20d00 73 65 72 74 20 65 6e 64 20 22 7a 7a 7a 7a 7a 7a  sert end "zzzzzz
20d10 7a 20 71 71 71 71 71 20 72 72 72 72 20 73 73 73  z qqqqq rrrr sss
20d20 73 20 74 74 20 75 20 76 76 76 76 76 22 0a 20 20  s tt u vvvvv".  
20d30 20 20 2e 74 20 62 62 6f 78 20 31 2e 32 38 0a 7d    .t bbox 1.28.}
20d40 20 5b 6c 69 73 74 20 5b 65 78 70 72 20 7b 24 70   [list [expr {$p
20d50 61 64 78 2b 33 30 7d 5d 20 5b 65 78 70 72 20 7b  adx+30}] [expr {
20d60 24 70 61 64 79 2b 24 66 69 78 65 64 48 65 69 67  $pady+$fixedHeig
20d70 68 74 2b 28 28 32 30 2d 24 66 69 78 65 64 48 65  ht+((20-$fixedHe
20d80 69 67 68 74 29 2f 32 29 7d 5d 20 24 66 69 78 65  ight)/2)}] $fixe
20d90 64 57 69 64 74 68 20 24 66 69 78 65 64 48 65 69  dWidth $fixedHei
20da0 67 68 74 5d 0a 0a 74 65 73 74 20 74 65 78 74 44  ght]..test textD
20db0 69 73 70 2d 32 34 2e 32 33 20 7b 54 6b 54 65 78  isp-24.23 {TkTex
20dc0 74 43 68 61 72 4c 61 79 6f 75 74 50 72 6f 63 2c  tCharLayoutProc,
20dd0 20 77 6f 72 64 20 62 72 65 61 6b 73 7d 20 7b 0a   word breaks} {.
20de0 20 20 20 20 2e 74 20 63 6f 6e 66 69 67 75 72 65      .t configure
20df0 20 2d 77 72 61 70 20 77 6f 72 64 0a 20 20 20 20   -wrap word.    
20e00 2e 74 20 64 65 6c 65 74 65 20 31 2e 30 20 65 6e  .t delete 1.0 en
20e10 64 0a 20 20 20 20 66 72 61 6d 65 20 2e 74 2e 66  d.    frame .t.f
20e20 20 2d 77 69 64 74 68 20 33 30 20 2d 68 65 69 67   -width 30 -heig
20e30 68 74 20 32 30 20 2d 62 67 20 62 6c 61 63 6b 0a  ht 20 -bg black.
20e40 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20 31 2e      .t insert 1.
20e50 30 20 22 53 61 6d 70 6c 65 20 74 65 78 74 20 78  0 "Sample text x
20e60 78 78 78 78 78 78 20 79 79 79 79 79 79 79 20 22  xxxxxx yyyyyyy "
20e70 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20 65  .    .t insert e
20e80 6e 64 20 22 7a 7a 7a 7a 7a 7a 7a 20 71 71 71 71  nd "zzzzzzz qqqq
20e90 71 20 72 72 72 72 20 73 73 73 73 20 74 74 22 0a  q rrrr ssss tt".
20ea0 20 20 20 20 2e 74 20 77 69 6e 64 6f 77 20 63 72      .t window cr
20eb0 65 61 74 65 20 65 6e 64 20 2d 77 69 6e 64 6f 77  eate end -window
20ec0 20 2e 74 2e 66 0a 20 20 20 20 2e 74 20 69 6e 73   .t.f.    .t ins
20ed0 65 72 74 20 65 6e 64 20 22 75 20 76 76 76 76 76  ert end "u vvvvv
20ee0 22 0a 20 20 20 20 2e 74 20 62 62 6f 78 20 2e 74  ".    .t bbox .t
20ef0 2e 66 0a 7d 20 5b 6c 69 73 74 20 24 70 61 64 78  .f.} [list $padx
20f00 20 5b 65 78 70 72 20 7b 24 70 61 64 79 2b 32 2a   [expr {$pady+2*
20f10 24 66 69 78 65 64 48 65 69 67 68 74 7d 5d 20 33  $fixedHeight}] 3
20f20 30 20 32 30 5d 0a 63 61 74 63 68 20 7b 64 65 73  0 20].catch {des
20f30 74 72 6f 79 20 2e 74 2e 66 7d 0a 2e 74 20 63 6f  troy .t.f}..t co
20f40 6e 66 69 67 75 72 65 20 2d 77 69 64 74 68 20 32  nfigure -width 2
20f50 30 20 3b 20 23 20 64 65 66 61 75 6c 74 0a 75 70  0 ; # default.up
20f60 64 61 74 65 0a 0a 74 65 73 74 20 74 65 78 74 44  date..test textD
20f70 69 73 70 2d 32 34 2e 32 34 20 7b 54 6b 54 65 78  isp-24.24 {TkTex
20f80 74 43 68 61 72 4c 61 79 6f 75 74 50 72 6f 63 2c  tCharLayoutProc,
20f90 20 6a 75 73 74 69 66 69 63 61 74 69 6f 6e 20 61   justification a
20fa0 6e 64 20 74 61 62 73 7d 20 7b 0a 20 20 20 20 2e  nd tabs} {.    .
20fb0 74 20 63 6f 6e 66 69 67 75 72 65 20 2d 77 69 64  t configure -wid
20fc0 74 68 20 34 30 0a 20 20 20 20 2e 74 20 64 65 6c  th 40.    .t del
20fd0 65 74 65 20 31 2e 30 20 65 6e 64 0a 20 20 20 20  ete 1.0 end.    
20fe0 2e 74 20 74 61 67 20 63 6f 6e 66 69 67 75 72 65  .t tag configure
20ff0 20 78 20 2d 6a 75 73 74 69 66 79 20 63 65 6e 74   x -justify cent
21000 65 72 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74  er.    .t insert
21010 20 31 2e 30 20 61 61 5c 74 62 62 5c 74 63 63 5c   1.0 aa\tbb\tcc\
21020 74 64 64 0a 20 20 20 20 2e 74 20 74 61 67 20 61  tdd.    .t tag a
21030 64 64 20 78 20 31 2e 30 20 65 6e 64 0a 20 20 20  dd x 1.0 end.   
21040 20 75 70 64 61 74 65 0a 20 20 20 20 23 20 73 68   update.    # sh
21050 6f 75 6c 64 20 62 65 3a 0a 20 20 20 20 23 20 31  ould be:.    # 1
21060 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37  2345678901234567
21070 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33  8901234567890123
21080 34 35 36 37 38 39 30 0a 20 20 20 20 23 20 20 20  4567890.    #   
21090 20 20 20 20 20 61 61 20 20 20 20 20 20 62 62 20       aa      bb 
210a0 20 20 20 20 20 63 63 20 20 20 20 20 20 64 64 0a       cc      dd.
210b0 20 20 20 20 23 20 66 69 72 73 74 20 61 2c 20 73      # first a, s
210c0 65 63 6f 6e 64 20 64 0a 20 20 20 20 6c 69 73 74  econd d.    list
210d0 20 5b 2e 74 20 62 62 6f 78 20 31 2e 30 5d 20 5b   [.t bbox 1.0] [
210e0 2e 74 20 62 62 6f 78 20 31 2e 31 30 5d 0a 7d 20  .t bbox 1.10].} 
210f0 5b 6c 69 73 74 20 5c 0a 20 20 20 20 5b 6c 69 73  [list \.    [lis
21100 74 20 5b 65 78 70 72 20 7b 28 34 30 2a 24 66 69  t [expr {(40*$fi
21110 78 65 64 57 69 64 74 68 2d 33 2a 28 24 66 69 78  xedWidth-3*($fix
21120 65 64 57 69 64 74 68 2a 36 29 2d 38 2a 24 66 69  edWidth*6)-8*$fi
21130 78 65 64 57 69 64 74 68 29 2f 32 2b 24 70 61 64  xedWidth)/2+$pad
21140 78 7d 5d 20 24 70 61 64 79 20 24 66 69 78 65 64  x}] $pady $fixed
21150 57 69 64 74 68 20 24 66 69 78 65 64 48 65 69 67  Width $fixedHeig
21160 68 74 5d 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20  ht] \.    [list 
21170 5b 65 78 70 72 20 7b 28 34 30 2a 24 66 69 78 65  [expr {(40*$fixe
21180 64 57 69 64 74 68 2d 33 2a 28 24 66 69 78 65 64  dWidth-3*($fixed
21190 57 69 64 74 68 2a 36 29 2d 38 2a 24 66 69 78 65  Width*6)-8*$fixe
211a0 64 57 69 64 74 68 29 2f 32 2b 28 33 2a 28 24 66  dWidth)/2+(3*($f
211b0 69 78 65 64 57 69 64 74 68 2a 36 29 2b 37 2a 24  ixedWidth*6)+7*$
211c0 66 69 78 65 64 57 69 64 74 68 29 2b 24 70 61 64  fixedWidth)+$pad
211d0 78 7d 5d 20 24 70 61 64 79 20 24 66 69 78 65 64  x}] $pady $fixed
211e0 57 69 64 74 68 20 24 66 69 78 65 64 48 65 69 67  Width $fixedHeig
211f0 68 74 5d 5d 0a 2e 74 20 63 6f 6e 66 69 67 75 72  ht]]..t configur
21200 65 20 2d 77 69 64 74 68 20 32 30 20 3b 20 23 20  e -width 20 ; # 
21210 64 65 66 61 75 6c 74 0a 0a 23 20 6e 65 77 20 73  default..# new s
21220 65 74 74 69 6e 67 73 0a 2e 74 20 63 6f 6e 66 69  ettings..t confi
21230 67 75 72 65 20 2d 77 69 64 74 68 20 34 30 20 2d  gure -width 40 -
21240 68 69 67 68 6c 69 67 68 74 74 68 69 63 6b 6e 65  highlightthickne
21250 73 73 20 30 20 2d 70 61 64 78 20 30 20 2d 62 64  ss 0 -padx 0 -bd
21260 20 30 0a 75 70 64 61 74 65 0a 73 65 74 20 62 77   0.update.set bw
21270 20 5b 2e 74 20 63 67 65 74 20 2d 62 6f 72 64 65   [.t cget -borde
21280 72 77 69 64 74 68 5d 0a 73 65 74 20 70 78 20 5b  rwidth].set px [
21290 2e 74 20 63 67 65 74 20 2d 70 61 64 78 5d 0a 73  .t cget -padx].s
212a0 65 74 20 70 79 20 5b 2e 74 20 63 67 65 74 20 2d  et py [.t cget -
212b0 70 61 64 79 5d 0a 73 65 74 20 68 6c 74 68 20 5b  pady].set hlth [
212c0 2e 74 20 63 67 65 74 20 2d 68 69 67 68 6c 69 67  .t cget -highlig
212d0 68 74 74 68 69 63 6b 6e 65 73 73 5d 0a 73 65 74  htthickness].set
212e0 20 70 61 64 78 20 5b 65 78 70 72 20 7b 24 62 77   padx [expr {$bw
212f0 2b 24 70 78 2b 24 68 6c 74 68 7d 5d 0a 73 65 74  +$px+$hlth}].set
21300 20 70 61 64 79 20 5b 65 78 70 72 20 7b 24 62 77   pady [expr {$bw
21310 2b 24 70 79 2b 24 68 6c 74 68 7d 5d 0a 0a 74 65  +$py+$hlth}]..te
21320 73 74 20 74 65 78 74 44 69 73 70 2d 32 35 2e 31  st textDisp-25.1
21330 20 7b 43 68 61 72 42 62 6f 78 50 72 6f 63 20 70   {CharBboxProc p
21340 72 6f 63 65 64 75 72 65 2c 20 63 68 65 63 6b 20  rocedure, check 
21350 74 61 62 20 77 69 64 74 68 7d 20 7b 0a 20 20 20  tab width} {.   
21360 20 2e 74 20 63 6f 6e 66 69 67 75 72 65 20 2d 73   .t configure -s
21370 70 61 63 65 6d 6f 64 65 20 6e 6f 6e 65 0a 20 20  pacemode none.  
21380 20 20 2e 74 20 63 6f 6e 66 69 67 75 72 65 20 2d    .t configure -
21390 77 69 64 74 68 20 34 30 20 2d 74 61 62 73 20 31  width 40 -tabs 1
213a0 30 30 0a 20 20 20 20 2e 74 20 64 65 6c 65 74 65  00.    .t delete
213b0 20 31 2e 30 20 65 6e 64 0a 20 20 20 20 2e 74 20   1.0 end.    .t 
213c0 69 6e 73 65 72 74 20 31 2e 30 20 61 62 63 5c 74  insert 1.0 abc\t
213d0 64 5c 74 66 67 68 5c 6e 0a 20 20 20 20 75 70 64  d\tfgh\n.    upd
213e0 61 74 65 0a 20 20 20 20 23 20 74 61 62 2c 20 74  ate.    # tab, t
213f0 61 62 2c 20 66 0a 20 20 20 20 6c 69 73 74 20 5b  ab, f.    list [
21400 2e 74 20 62 62 6f 78 20 31 2e 33 5d 20 5b 2e 74  .t bbox 1.3] [.t
21410 20 62 62 6f 78 20 31 2e 35 5d 20 5b 2e 74 20 62   bbox 1.5] [.t b
21420 62 6f 78 20 31 2e 36 5d 0a 7d 20 5b 6c 69 73 74  box 1.6].} [list
21430 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20 5b 65 78   \.    [list [ex
21440 70 72 20 7b 24 70 61 64 78 2b 33 2a 24 66 69 78  pr {$padx+3*$fix
21450 65 64 57 69 64 74 68 7d 5d 20 24 70 61 64 79 20  edWidth}] $pady 
21460 5b 65 78 70 72 20 7b 31 30 30 2d 33 2a 24 66 69  [expr {100-3*$fi
21470 78 65 64 57 69 64 74 68 7d 5d 20 24 66 69 78 65  xedWidth}] $fixe
21480 64 48 65 69 67 68 74 5d 20 5c 0a 20 20 20 20 5b  dHeight] \.    [
21490 6c 69 73 74 20 5b 65 78 70 72 20 7b 24 70 61 64  list [expr {$pad
214a0 78 2b 31 30 30 2b 24 66 69 78 65 64 57 69 64 74  x+100+$fixedWidt
214b0 68 7d 5d 20 24 70 61 64 79 20 5b 65 78 70 72 20  h}] $pady [expr 
214c0 7b 31 30 30 2d 24 66 69 78 65 64 57 69 64 74 68  {100-$fixedWidth
214d0 7d 5d 20 24 66 69 78 65 64 48 65 69 67 68 74 5d  }] $fixedHeight]
214e0 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20 5b 65 78   \.    [list [ex
214f0 70 72 20 7b 24 70 61 64 78 2b 32 30 30 7d 5d 20  pr {$padx+200}] 
21500 24 70 61 64 79 20 24 66 69 78 65 64 57 69 64 74  $pady $fixedWidt
21510 68 20 24 66 69 78 65 64 48 65 69 67 68 74 5d 5d  h $fixedHeight]]
21520 0a 2e 74 20 63 6f 6e 66 69 67 75 72 65 20 2d 77  ..t configure -w
21530 69 64 74 68 20 32 30 20 2d 74 61 62 73 20 7b 7d  idth 20 -tabs {}
21540 20 3b 20 23 20 64 65 66 61 75 6c 74 0a 0a 2e 74   ; # default...t
21550 20 63 6f 6e 66 69 67 75 72 65 20 2d 77 69 64 74   configure -widt
21560 68 20 34 30 20 2d 74 61 62 73 20 7b 7d 20 3b 20  h 40 -tabs {} ; 
21570 23 20 6e 65 77 20 73 65 74 74 69 6e 67 20 66 6f  # new setting fo
21580 72 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 65 73 74  r following test
21590 73 0a 0a 74 65 73 74 20 74 65 78 74 44 69 73 70  s..test textDisp
215a0 2d 32 36 2e 31 20 7b 41 64 6a 75 73 74 46 6f 72  -26.1 {AdjustFor
215b0 54 61 62 20 70 72 6f 63 65 64 75 72 65 2c 20 6e  Tab procedure, n
215c0 6f 20 74 61 62 73 7d 20 7b 0a 20 20 20 20 2e 74  o tabs} {.    .t
215d0 20 64 65 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a   delete 1.0 end.
215e0 20 20 20 20 23 20 20 20 20 20 20 20 20 20 20 20      #           
215f0 20 20 20 20 20 20 20 20 20 74 20 20 20 20 20 20           t      
21600 20 74 20 20 20 20 20 20 20 74 0a 20 20 20 20 23   t       t.    #
21610 20 20 20 20 20 20 20 20 20 20 20 20 20 31 32 33               123
21620 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39  4567890123456789
21630 30 31 32 33 34 35 36 37 38 39 30 0a 20 20 20 20  01234567890.    
21640 23 20 20 20 20 20 20 20 20 20 20 20 20 20 61 20  #             a 
21650 20 20 20 20 20 62 63 64 65 66 67 68 69 6a 20 63       bcdefghij c
21660 20 20 20 20 20 64 0a 20 20 20 20 2e 74 20 69 6e       d.    .t in
21670 73 65 72 74 20 31 2e 30 20 61 5c 74 62 63 64 65  sert 1.0 a\tbcde
21680 66 67 68 69 6a 5c 74 63 5c 74 64 0a 20 20 20 20  fghij\tc\td.    
21690 75 70 64 61 74 65 0a 20 20 20 20 6c 69 73 74 20  update.    list 
216a0 5b 6c 69 6e 64 65 78 20 5b 2e 74 20 62 62 6f 78  [lindex [.t bbox
216b0 20 31 2e 32 5d 20 30 5d 20 5b 6c 69 6e 64 65 78   1.2] 0] [lindex
216c0 20 5b 2e 74 20 62 62 6f 78 20 31 2e 31 32 5d 20   [.t bbox 1.12] 
216d0 30 5d 20 5c 0a 09 20 20 20 20 5b 6c 69 6e 64 65  0] \..    [linde
216e0 78 20 5b 2e 74 20 62 62 6f 78 20 31 2e 31 34 5d  x [.t bbox 1.14]
216f0 20 30 5d 0a 7d 20 5b 6c 69 73 74 20 5b 65 78 70   0].} [list [exp
21700 72 20 7b 24 70 61 64 78 2b 38 2a 24 66 69 78 65  r {$padx+8*$fixe
21710 64 57 69 64 74 68 7d 5d 20 5b 65 78 70 72 20 7b  dWidth}] [expr {
21720 24 70 61 64 78 2b 31 38 2a 24 66 69 78 65 64 57  $padx+18*$fixedW
21730 69 64 74 68 7d 5d 20 5b 65 78 70 72 20 7b 24 70  idth}] [expr {$p
21740 61 64 78 2b 32 34 2a 24 66 69 78 65 64 57 69 64  adx+24*$fixedWid
21750 74 68 7d 5d 5d 0a 0a 74 65 73 74 20 74 65 78 74  th}]]..test text
21760 44 69 73 70 2d 32 36 2e 31 2e 32 20 7b 41 64 6a  Disp-26.1.2 {Adj
21770 75 73 74 46 6f 72 54 61 62 20 70 72 6f 63 65 64  ustForTab proced
21780 75 72 65 2c 20 6e 6f 20 74 61 62 73 7d 20 7b 0a  ure, no tabs} {.
21790 20 20 20 20 2e 74 20 64 65 6c 65 74 65 20 31 2e      .t delete 1.
217a0 30 20 65 6e 64 0a 20 20 20 20 23 20 20 20 20 20  0 end.    #     
217b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
217c0 20 20 20 20 20 20 20 74 20 20 20 20 20 20 20 74         t       t
217d0 0a 20 20 20 20 23 20 20 20 20 20 20 20 20 20 20  .    #          
217e0 20 20 20 31 32 33 34 35 36 37 38 39 30 31 32 33     1234567890123
217f0 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39  4567890123456789
21800 30 0a 20 20 20 20 23 20 20 20 20 20 20 20 20 20  0.    #         
21810 20 20 20 20 61 20 20 20 20 20 20 62 63 64 65 66      a      bcdef
21820 67 68 69 6a 20 20 20 20 20 20 20 63 20 20 20 20  ghij       c    
21830 20 64 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74   d.    .t insert
21840 20 31 2e 30 20 61 5c 74 62 63 64 65 66 67 68 69   1.0 a\tbcdefghi
21850 6a 5c 74 63 5c 74 64 0a 20 20 20 20 2e 74 20 63  j\tc\td.    .t c
21860 6f 6e 66 69 67 75 72 65 20 2d 74 61 62 73 74 79  onfigure -tabsty
21870 6c 65 20 77 6f 72 64 70 72 6f 63 65 73 73 6f 72  le wordprocessor
21880 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20 20 20  .    update.    
21890 73 65 74 20 72 65 73 20 5b 6c 69 73 74 20 5b 6c  set res [list [l
218a0 69 6e 64 65 78 20 5b 2e 74 20 62 62 6f 78 20 31  index [.t bbox 1
218b0 2e 32 5d 20 30 5d 20 5b 6c 69 6e 64 65 78 20 5b  .2] 0] [lindex [
218c0 2e 74 20 62 62 6f 78 20 31 2e 31 32 5d 20 30 5d  .t bbox 1.12] 0]
218d0 20 5c 0a 20 20 20 20 20 20 5b 6c 69 6e 64 65 78   \.      [lindex
218e0 20 5b 2e 74 20 62 62 6f 78 20 31 2e 31 34 5d 20   [.t bbox 1.14] 
218f0 30 5d 5d 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69  0]].    .t confi
21900 67 75 72 65 20 2d 74 61 62 73 74 79 6c 65 20 74  gure -tabstyle t
21910 61 62 75 6c 61 72 0a 20 20 20 20 73 65 74 20 72  abular.    set r
21920 65 73 0a 7d 20 5b 6c 69 73 74 20 5b 65 78 70 72  es.} [list [expr
21930 20 7b 24 70 61 64 78 2b 38 2a 24 66 69 78 65 64   {$padx+8*$fixed
21940 57 69 64 74 68 7d 5d 20 5b 65 78 70 72 20 7b 24  Width}] [expr {$
21950 70 61 64 78 2b 32 34 2a 24 66 69 78 65 64 57 69  padx+24*$fixedWi
21960 64 74 68 7d 5d 20 5b 65 78 70 72 20 7b 24 70 61  dth}] [expr {$pa
21970 64 78 2b 33 32 2a 24 66 69 78 65 64 57 69 64 74  dx+32*$fixedWidt
21980 68 7d 5d 5d 0a 0a 74 65 73 74 20 74 65 78 74 44  h}]]..test textD
21990 69 73 70 2d 32 36 2e 32 20 7b 41 64 6a 75 73 74  isp-26.2 {Adjust
219a0 46 6f 72 54 61 62 20 70 72 6f 63 65 64 75 72 65  ForTab procedure
219b0 2c 20 6e 6f 74 20 65 6e 6f 75 67 68 20 74 61 62  , not enough tab
219c0 73 20 73 70 65 63 69 66 69 65 64 7d 20 7b 0a 20  s specified} {. 
219d0 20 20 20 2e 74 20 64 65 6c 65 74 65 20 31 2e 30     .t delete 1.0
219e0 20 65 6e 64 0a 20 20 20 20 2e 74 20 69 6e 73 65   end.    .t inse
219f0 72 74 20 31 2e 30 20 61 5c 74 62 5c 74 63 5c 74  rt 1.0 a\tb\tc\t
21a00 64 0a 20 20 20 20 2e 74 20 74 61 67 20 64 65 6c  d.    .t tag del
21a10 65 74 65 20 78 0a 20 20 20 20 2e 74 20 74 61 67  ete x.    .t tag
21a20 20 63 6f 6e 66 69 67 75 72 65 20 78 20 2d 74 61   configure x -ta
21a30 62 73 20 34 30 0a 20 20 20 20 2e 74 20 74 61 67  bs 40.    .t tag
21a40 20 61 64 64 20 78 20 31 2e 30 20 65 6e 64 0a 20   add x 1.0 end. 
21a50 20 20 20 75 70 64 61 74 65 0a 20 20 20 20 6c 69     update.    li
21a60 73 74 20 5b 6c 69 6e 64 65 78 20 5b 2e 74 20 62  st [lindex [.t b
21a70 62 6f 78 20 31 2e 32 5d 20 30 5d 20 5b 6c 69 6e  box 1.2] 0] [lin
21a80 64 65 78 20 5b 2e 74 20 62 62 6f 78 20 31 2e 34  dex [.t bbox 1.4
21a90 5d 20 30 5d 20 5c 0a 09 20 20 20 20 5b 6c 69 6e  ] 0] \..    [lin
21aa0 64 65 78 20 5b 2e 74 20 62 62 6f 78 20 31 2e 36  dex [.t bbox 1.6
21ab0 5d 20 30 5d 0a 7d 20 5b 6c 69 73 74 20 34 30 20  ] 0].} [list 40 
21ac0 38 30 20 31 32 30 5d 0a 0a 74 65 73 74 20 74 65  80 120]..test te
21ad0 78 74 44 69 73 70 2d 32 36 2e 33 20 7b 41 64 6a  xtDisp-26.3 {Adj
21ae0 75 73 74 46 6f 72 54 61 62 20 70 72 6f 63 65 64  ustForTab proced
21af0 75 72 65 2c 20 6e 6f 74 20 65 6e 6f 75 67 68 20  ure, not enough 
21b00 74 61 62 73 20 73 70 65 63 69 66 69 65 64 7d 20  tabs specified} 
21b10 7b 0a 20 20 20 20 2e 74 20 64 65 6c 65 74 65 20  {.    .t delete 
21b20 31 2e 30 20 65 6e 64 0a 20 20 20 20 2e 74 20 69  1.0 end.    .t i
21b30 6e 73 65 72 74 20 31 2e 30 20 61 5c 74 62 5c 74  nsert 1.0 a\tb\t
21b40 63 5c 74 64 5c 74 65 5c 6e 0a 20 20 20 20 2e 74  c\td\te\n.    .t
21b50 20 74 61 67 20 64 65 6c 65 74 65 20 78 0a 20 20   tag delete x.  
21b60 20 20 2e 74 20 74 61 67 20 63 6f 6e 66 69 67 75    .t tag configu
21b70 72 65 20 78 20 2d 74 61 62 73 20 7b 34 30 20 37  re x -tabs {40 7
21b80 30 20 72 69 67 68 74 7d 0a 20 20 20 20 2e 74 20  0 right}.    .t 
21b90 74 61 67 20 61 64 64 20 78 20 31 2e 30 20 65 6e  tag add x 1.0 en
21ba0 64 0a 20 20 20 20 23 20 72 69 67 68 74 2d 74 61  d.    # right-ta
21bb0 62 3a 20 70 6f 73 69 74 69 6f 6e 2b 63 68 61 72  b: position+char
21bc0 61 63 74 65 72 20 77 69 64 74 68 20 3d 20 74 61  acter width = ta
21bd0 62 20 70 6f 73 69 74 69 6f 6e 2e 0a 20 20 20 20  b position..    
21be0 6c 69 73 74 20 5b 6c 69 6e 64 65 78 20 5b 2e 74  list [lindex [.t
21bf0 20 62 62 6f 78 20 31 2e 32 5d 20 30 5d 20 5c 0a   bbox 1.2] 0] \.
21c00 09 20 20 20 20 5b 65 78 70 72 20 5b 6c 69 6e 64  .    [expr [lind
21c10 65 78 20 5b 2e 74 20 62 62 6f 78 20 31 2e 34 5d  ex [.t bbox 1.4]
21c20 20 30 5d 20 2b 20 5b 6c 69 6e 64 65 78 20 5b 2e   0] + [lindex [.
21c30 74 20 62 62 6f 78 20 31 2e 34 5d 20 32 5d 5d 20  t bbox 1.4] 2]] 
21c40 5c 0a 09 20 20 20 20 5b 65 78 70 72 20 5b 6c 69  \..    [expr [li
21c50 6e 64 65 78 20 5b 2e 74 20 62 62 6f 78 20 31 2e  ndex [.t bbox 1.
21c60 36 5d 20 30 5d 20 2b 20 5b 6c 69 6e 64 65 78 20  6] 0] + [lindex 
21c70 5b 2e 74 20 62 62 6f 78 20 31 2e 36 5d 20 32 5d  [.t bbox 1.6] 2]
21c80 5d 20 5c 0a 09 20 20 20 20 5b 65 78 70 72 20 5b  ] \..    [expr [
21c90 6c 69 6e 64 65 78 20 5b 2e 74 20 62 62 6f 78 20  lindex [.t bbox 
21ca0 31 2e 38 5d 20 30 5d 20 2b 20 5b 6c 69 6e 64 65  1.8] 0] + [linde
21cb0 78 20 5b 2e 74 20 62 62 6f 78 20 31 2e 38 5d 20  x [.t bbox 1.8] 
21cc0 32 5d 5d 0a 7d 20 5b 6c 69 73 74 20 34 30 20 37  2]].} [list 40 7
21cd0 30 20 31 30 30 20 31 33 30 5d 0a 0a 74 65 73 74  0 100 130]..test
21ce0 20 74 65 78 74 44 69 73 70 2d 32 36 2e 34 20 7b   textDisp-26.4 {
21cf0 41 64 6a 75 73 74 46 6f 72 54 61 62 20 70 72 6f  AdjustForTab pro
21d00 63 65 64 75 72 65 2c 20 64 69 66 66 65 72 65 6e  cedure, differen
21d10 74 20 61 6c 69 67 6e 6d 65 6e 74 73 7d 20 7b 0a  t alignments} {.
21d20 20 20 20 20 2e 74 20 64 65 6c 65 74 65 20 31 2e      .t delete 1.
21d30 30 20 65 6e 64 0a 20 20 20 20 2e 74 20 69 6e 73  0 end.    .t ins
21d40 65 72 74 20 31 2e 30 20 61 5c 74 62 63 5c 74 64  ert 1.0 a\tbc\td
21d50 65 5c 74 66 67 5c 74 68 69 0a 20 20 20 20 2e 74  e\tfg\thi.    .t
21d60 20 74 61 67 20 64 65 6c 65 74 65 20 78 0a 20 20   tag delete x.  
21d70 20 20 2e 74 20 74 61 67 20 63 6f 6e 66 69 67 75    .t tag configu
21d80 72 65 20 78 20 2d 74 61 62 73 20 7b 34 30 20 63  re x -tabs {40 c
21d90 65 6e 74 65 72 20 38 30 20 6c 65 66 74 20 31 33  enter 80 left 13
21da0 30 20 72 69 67 68 74 7d 0a 20 20 20 20 2e 74 20  0 right}.    .t 
21db0 74 61 67 20 61 64 64 20 78 20 31 2e 30 20 65 6e  tag add x 1.0 en
21dc0 64 0a 20 20 20 20 23 20 63 20 64 20 74 61 62 0a  d.    # c d tab.
21dd0 20 20 20 20 6c 69 73 74 20 5b 6c 69 6e 64 65 78      list [lindex
21de0 20 5b 2e 74 20 62 62 6f 78 20 31 2e 33 5d 20 30   [.t bbox 1.3] 0
21df0 5d 20 5b 6c 69 6e 64 65 78 20 5b 2e 74 20 62 62  ] [lindex [.t bb
21e00 6f 78 20 31 2e 35 5d 20 30 5d 20 5c 0a 09 20 20  ox 1.5] 0] \..  
21e10 20 20 5b 6c 69 6e 64 65 78 20 5b 2e 74 20 62 62    [lindex [.t bb
21e20 6f 78 20 31 2e 31 30 5d 20 30 5d 0a 7d 20 5b 6c  ox 1.10] 0].} [l
21e30 69 73 74 20 34 30 20 38 30 20 31 33 30 5d 0a 0a  ist 40 80 130]..
21e40 74 65 73 74 20 74 65 78 74 44 69 73 70 2d 32 36  test textDisp-26
21e50 2e 35 20 7b 41 64 6a 75 73 74 46 6f 72 54 61 62  .5 {AdjustForTab
21e60 20 70 72 6f 63 65 64 75 72 65 2c 20 6e 75 6d 65   procedure, nume
21e70 72 69 63 20 61 6c 69 67 6e 6d 65 6e 74 7d 20 7b  ric alignment} {
21e80 0a 20 20 20 20 2e 74 20 64 65 6c 65 74 65 20 31  .    .t delete 1
21e90 2e 30 20 65 6e 64 0a 20 20 20 20 2e 74 20 69 6e  .0 end.    .t in
21ea0 73 65 72 74 20 31 2e 30 20 61 5c 74 31 2e 32 33  sert 1.0 a\t1.23
21eb0 34 5c 6e 0a 20 20 20 20 2e 74 20 69 6e 73 65 72  4\n.    .t inser
21ec0 74 20 32 2e 30 20 61 5c 74 31 32 2e 33 34 5c 6e  t 2.0 a\t12.34\n
21ed0 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20 33  .    .t insert 3
21ee0 2e 30 20 61 5c 74 31 32 33 2e 34 5c 6e 0a 20 20  .0 a\t123.4\n.  
21ef0 20 20 2e 74 20 74 61 67 20 64 65 6c 65 74 65 20    .t tag delete 
21f00 78 0a 20 20 20 20 2e 74 20 74 61 67 20 63 6f 6e  x.    .t tag con
21f10 66 69 67 75 72 65 20 78 20 2d 74 61 62 73 20 7b  figure x -tabs {
21f20 31 32 30 20 6e 75 6d 65 72 69 63 7d 0a 20 20 20  120 numeric}.   
21f30 20 2e 74 20 74 61 67 20 61 64 64 20 78 20 31 2e   .t tag add x 1.
21f40 30 20 65 6e 64 0a 20 20 20 20 6c 69 73 74 20 5b  0 end.    list [
21f50 6c 69 6e 64 65 78 20 5b 2e 74 20 62 62 6f 78 20  lindex [.t bbox 
21f60 31 2e 33 5d 20 30 5d 20 5b 6c 69 6e 64 65 78 20  1.3] 0] [lindex 
21f70 5b 2e 74 20 62 62 6f 78 20 32 2e 34 5d 20 30 5d  [.t bbox 2.4] 0]
21f80 20 5b 6c 69 6e 64 65 78 20 5b 2e 74 20 62 62 6f   [lindex [.t bbo
21f90 78 20 33 2e 35 5d 20 30 5d 0a 7d 20 7b 31 32 30  x 3.5] 0].} {120
21fa0 20 31 32 30 20 31 32 30 7d 0a 0a 74 65 73 74 20   120 120}..test 
21fb0 74 65 78 74 44 69 73 70 2d 32 36 2e 36 20 7b 41  textDisp-26.6 {A
21fc0 64 6a 75 73 74 46 6f 72 54 61 62 20 70 72 6f 63  djustForTab proc
21fd0 65 64 75 72 65 2c 20 6e 75 6d 65 72 69 63 20 61  edure, numeric a
21fe0 6c 69 67 6e 6d 65 6e 74 7d 20 7b 0a 20 20 20 20  lignment} {.    
21ff0 2e 74 20 64 65 6c 65 74 65 20 31 2e 30 20 65 6e  .t delete 1.0 en
22000 64 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20  d.    .t insert 
22010 31 2e 30 20 61 5c 74 31 2c 34 35 36 2e 32 33 34  1.0 a\t1,456.234
22020 5c 6e 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74  \n.    .t insert
22030 20 32 2e 30 20 61 5c 74 31 32 2e 33 34 5c 6e 0a   2.0 a\t12.34\n.
22040 20 20 20 20 2e 74 20 74 61 67 20 64 65 6c 65 74      .t tag delet
22050 65 20 78 0a 20 20 20 20 2e 74 20 74 61 67 20 63  e x.    .t tag c
22060 6f 6e 66 69 67 75 72 65 20 78 20 2d 74 61 62 73  onfigure x -tabs
22070 20 7b 31 32 30 20 6e 75 6d 65 72 69 63 7d 0a 20   {120 numeric}. 
22080 20 20 20 2e 74 20 74 61 67 20 61 64 64 20 78 20     .t tag add x 
22090 31 2e 30 20 65 6e 64 0a 20 20 20 20 6c 69 73 74  1.0 end.    list
220a0 20 5b 6c 69 6e 64 65 78 20 5b 2e 74 20 62 62 6f   [lindex [.t bbo
220b0 78 20 31 2e 37 5d 20 30 5d 20 5b 6c 69 6e 64 65  x 1.7] 0] [linde
220c0 78 20 5b 2e 74 20 62 62 6f 78 20 32 2e 34 5d 20  x [.t bbox 2.4] 
220d0 30 5d 0a 7d 20 7b 31 32 30 20 31 32 30 7d 0a 0a  0].} {120 120}..
220e0 74 65 73 74 20 74 65 78 74 44 69 73 70 2d 32 36  test textDisp-26
220f0 2e 37 20 7b 41 64 6a 75 73 74 46 6f 72 54 61 62  .7 {AdjustForTab
22100 20 70 72 6f 63 65 64 75 72 65 2c 20 6e 75 6d 65   procedure, nume
22110 72 69 63 20 61 6c 69 67 6e 6d 65 6e 74 7d 20 7b  ric alignment} {
22120 0a 20 20 20 20 2e 74 20 64 65 6c 65 74 65 20 31  .    .t delete 1
22130 2e 30 20 65 6e 64 0a 20 20 20 20 2e 74 20 69 6e  .0 end.    .t in
22140 73 65 72 74 20 31 2e 30 20 61 5c 74 31 2e 34 35  sert 1.0 a\t1.45
22150 36 2e 32 33 34 2c 37 0a 20 20 20 20 2e 74 20 74  6.234,7.    .t t
22160 61 67 20 64 65 6c 65 74 65 20 78 0a 20 20 20 20  ag delete x.    
22170 2e 74 20 74 61 67 20 63 6f 6e 66 69 67 75 72 65  .t tag configure
22180 20 78 20 2d 74 61 62 73 20 7b 31 32 30 20 6e 75   x -tabs {120 nu
22190 6d 65 72 69 63 7d 0a 20 20 20 20 2e 74 20 74 61  meric}.    .t ta
221a0 67 20 61 64 64 20 78 20 31 2e 30 20 65 6e 64 0a  g add x 1.0 end.
221b0 20 20 20 20 6c 69 6e 64 65 78 20 5b 2e 74 20 62      lindex [.t b
221c0 62 6f 78 20 31 2e 31 31 5d 20 30 0a 7d 20 7b 31  box 1.11] 0.} {1
221d0 32 30 7d 0a 0a 74 65 73 74 20 74 65 78 74 44 69  20}..test textDi
221e0 73 70 2d 32 36 2e 38 20 7b 41 64 6a 75 73 74 46  sp-26.8 {AdjustF
221f0 6f 72 54 61 62 20 70 72 6f 63 65 64 75 72 65 2c  orTab procedure,
22200 20 6e 75 6d 65 72 69 63 20 61 6c 69 67 6e 6d 65   numeric alignme
22210 6e 74 7d 20 7b 0a 20 20 20 20 2e 74 20 64 65 6c  nt} {.    .t del
22220 65 74 65 20 31 2e 30 20 65 6e 64 0a 20 20 20 20  ete 1.0 end.    
22230 2e 74 20 69 6e 73 65 72 74 20 31 2e 30 20 61 5c  .t insert 1.0 a\
22240 74 74 65 73 74 0a 20 20 20 20 2e 74 20 74 61 67  ttest.    .t tag
22250 20 64 65 6c 65 74 65 20 78 0a 20 20 20 20 2e 74   delete x.    .t
22260 20 74 61 67 20 63 6f 6e 66 69 67 75 72 65 20 78   tag configure x
22270 20 2d 74 61 62 73 20 7b 31 32 30 20 6e 75 6d 65   -tabs {120 nume
22280 72 69 63 7d 0a 20 20 20 20 2e 74 20 74 61 67 20  ric}.    .t tag 
22290 61 64 64 20 78 20 31 2e 30 20 65 6e 64 0a 20 20  add x 1.0 end.  
222a0 20 20 6c 69 6e 64 65 78 20 5b 2e 74 20 62 62 6f    lindex [.t bbo
222b0 78 20 31 2e 36 5d 20 30 0a 7d 20 7b 31 32 30 7d  x 1.6] 0.} {120}
222c0 0a 0a 74 65 73 74 20 74 65 78 74 44 69 73 70 2d  ..test textDisp-
222d0 32 36 2e 39 20 7b 41 64 6a 75 73 74 46 6f 72 54  26.9 {AdjustForT
222e0 61 62 20 70 72 6f 63 65 64 75 72 65 2c 20 6e 75  ab procedure, nu
222f0 6d 65 72 69 63 20 61 6c 69 67 6e 6d 65 6e 74 7d  meric alignment}
22300 20 7b 0a 20 20 20 20 2e 74 20 64 65 6c 65 74 65   {.    .t delete
22310 20 31 2e 30 20 65 6e 64 0a 20 20 20 20 2e 74 20   1.0 end.    .t 
22320 69 6e 73 65 72 74 20 31 2e 30 20 61 5c 74 31 32  insert 1.0 a\t12
22330 33 34 0a 20 20 20 20 2e 74 20 74 61 67 20 64 65  34.    .t tag de
22340 6c 65 74 65 20 78 0a 20 20 20 20 2e 74 20 74 61  lete x.    .t ta
22350 67 20 63 6f 6e 66 69 67 75 72 65 20 78 20 2d 74  g configure x -t
22360 61 62 73 20 7b 31 32 30 20 6e 75 6d 65 72 69 63  abs {120 numeric
22370 7d 0a 20 20 20 20 2e 74 20 74 61 67 20 61 64 64  }.    .t tag add
22380 20 78 20 31 2e 30 20 65 6e 64 0a 20 20 20 20 6c   x 1.0 end.    l
22390 69 6e 64 65 78 20 5b 2e 74 20 62 62 6f 78 20 31  index [.t bbox 1
223a0 2e 36 5d 20 30 0a 7d 20 7b 31 32 30 7d 0a 0a 74  .6] 0.} {120}..t
223b0 65 73 74 20 74 65 78 74 44 69 73 70 2d 32 36 2e  est textDisp-26.
223c0 31 30 20 7b 41 64 6a 75 73 74 46 6f 72 54 61 62  10 {AdjustForTab
223d0 20 70 72 6f 63 65 64 75 72 65 2c 20 6e 75 6d 65   procedure, nume
223e0 72 69 63 20 61 6c 69 67 6e 6d 65 6e 74 7d 20 7b  ric alignment} {
223f0 0a 20 20 20 20 2e 74 20 64 65 6c 65 74 65 20 31  .    .t delete 1
22400 2e 30 20 65 6e 64 0a 20 20 20 20 2e 74 20 69 6e  .0 end.    .t in
22410 73 65 72 74 20 31 2e 30 20 61 5c 74 31 2e 32 33  sert 1.0 a\t1.23
22420 34 35 36 37 0a 20 20 20 20 2e 74 20 74 61 67 20  4567.    .t tag 
22430 64 65 6c 65 74 65 20 78 0a 20 20 20 20 2e 74 20  delete x.    .t 
22440 74 61 67 20 63 6f 6e 66 69 67 75 72 65 20 78 20  tag configure x 
22450 2d 74 61 62 73 20 7b 31 32 30 20 6e 75 6d 65 72  -tabs {120 numer
22460 69 63 7d 0a 20 20 20 20 2e 74 20 74 61 67 20 61  ic}.    .t tag a
22470 64 64 20 78 20 31 2e 30 20 65 6e 64 0a 20 20 20  dd x 1.0 end.   
22480 20 6c 69 6e 64 65 78 20 5b 2e 74 20 62 62 6f 78   lindex [.t bbox
22490 20 31 2e 33 5d 20 30 0a 7d 20 7b 31 32 30 7d 0a   1.3] 0.} {120}.
224a0 0a 74 65 73 74 20 74 65 78 74 44 69 73 70 2d 32  .test textDisp-2
224b0 36 2e 31 31 20 7b 41 64 6a 75 73 74 46 6f 72 54  6.11 {AdjustForT
224c0 61 62 20 70 72 6f 63 65 64 75 72 65 2c 20 6e 75  ab procedure, nu
224d0 6d 65 72 69 63 20 61 6c 69 67 6e 6d 65 6e 74 7d  meric alignment}
224e0 20 7b 0a 20 20 20 20 2e 74 20 64 65 6c 65 74 65   {.    .t delete
224f0 20 31 2e 30 20 65 6e 64 0a 20 20 20 20 2e 74 20   1.0 end.    .t 
22500 69 6e 73 65 72 74 20 31 2e 30 20 61 5c 74 78 3d  insert 1.0 a\tx=
22510 31 2e 32 33 34 35 36 37 0a 20 20 20 20 2e 74 20  1.234567.    .t 
22520 74 61 67 20 64 65 6c 65 74 65 20 78 0a 20 20 20  tag delete x.   
22530 20 2e 74 20 74 61 67 20 63 6f 6e 66 69 67 75 72   .t tag configur
22540 65 20 78 20 2d 74 61 62 73 20 7b 31 32 30 20 6e  e x -tabs {120 n
22550 75 6d 65 72 69 63 7d 0a 20 20 20 20 2e 74 20 74  umeric}.    .t t
22560 61 67 20 61 64 64 20 78 20 31 2e 30 20 65 6e 64  ag add x 1.0 end
22570 0a 20 20 20 20 6c 69 6e 64 65 78 20 5b 2e 74 20  .    lindex [.t 
22580 62 62 6f 78 20 31 2e 35 5d 20 30 0a 7d 20 7b 31  bbox 1.5] 0.} {1
22590 32 30 7d 0a 0a 74 65 73 74 20 74 65 78 74 44 69  20}..test textDi
225a0 73 70 2d 32 36 2e 31 32 20 7b 41 64 6a 75 73 74  sp-26.12 {Adjust
225b0 46 6f 72 54 61 62 20 70 72 6f 63 65 64 75 72 65  ForTab procedure
225c0 2c 20 61 64 6a 75 73 74 69 6e 67 20 63 68 75 6e  , adjusting chun
225d0 6b 73 7d 20 7b 0a 20 20 20 20 2e 74 20 64 65 6c  ks} {.    .t del
225e0 65 74 65 20 31 2e 30 20 65 6e 64 0a 20 20 20 20  ete 1.0 end.    
225f0 2e 74 20 69 6e 73 65 72 74 20 31 2e 30 20 61 5c  .t insert 1.0 a\
22600 74 78 31 2e 32 33 34 35 36 37 0a 20 20 20 20 2e  tx1.234567.    .
22610 74 20 74 61 67 20 64 65 6c 65 74 65 20 78 0a 20  t tag delete x. 
22620 20 20 20 2e 74 20 74 61 67 20 63 6f 6e 66 69 67     .t tag config
22630 75 72 65 20 78 20 2d 74 61 62 73 20 7b 31 32 30  ure x -tabs {120
22640 20 6e 75 6d 65 72 69 63 7d 0a 20 20 20 20 2e 74   numeric}.    .t
22650 20 74 61 67 20 61 64 64 20 78 20 31 2e 30 20 65   tag add x 1.0 e
22660 6e 64 0a 20 20 20 20 2e 74 20 74 61 67 20 61 64  nd.    .t tag ad
22670 64 20 79 20 31 2e 37 0a 20 20 20 20 2e 74 20 74  d y 1.7.    .t t
22680 61 67 20 61 64 64 20 79 20 31 2e 39 0a 20 20 20  ag add y 1.9.   
22690 20 62 75 74 74 6f 6e 20 2e 62 20 2d 74 65 78 74   button .b -text
226a0 20 22 3d 22 0a 20 20 20 20 2e 74 20 77 69 6e 64   "=".    .t wind
226b0 6f 77 20 63 72 65 61 74 65 20 31 2e 33 20 2d 77  ow create 1.3 -w
226c0 69 6e 64 6f 77 20 2e 62 0a 20 20 20 20 75 70 64  indow .b.    upd
226d0 61 74 65 0a 20 20 20 20 6c 69 6e 64 65 78 20 5b  ate.    lindex [
226e0 2e 74 20 62 62 6f 78 20 31 2e 35 5d 20 30 0a 7d  .t bbox 1.5] 0.}
226f0 20 7b 31 32 30 7d 0a 0a 74 65 73 74 20 74 65 78   {120}..test tex
22700 74 44 69 73 70 2d 32 36 2e 31 33 20 7b 41 64 6a  tDisp-26.13 {Adj
22710 75 73 74 46 6f 72 54 61 62 20 70 72 6f 63 65 64  ustForTab proced
22720 75 72 65 2c 20 6e 6f 74 20 65 6e 6f 75 67 68 20  ure, not enough 
22730 73 70 61 63 65 7d 20 7b 0a 20 20 20 20 2e 74 20  space} {.    .t 
22740 64 65 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a 20  delete 1.0 end. 
22750 20 20 20 2e 74 20 69 6e 73 65 72 74 20 31 2e 30     .t insert 1.0
22760 20 22 61 62 63 5c 74 78 79 7a 5c 74 71 72 73 5c   "abc\txyz\tqrs\
22770 74 78 79 7a 5c 74 30 22 0a 20 20 20 20 2e 74 20  txyz\t0".    .t 
22780 74 61 67 20 64 65 6c 65 74 65 20 78 0a 20 20 20  tag delete x.   
22790 20 2e 74 20 74 61 67 20 63 6f 6e 66 69 67 75 72   .t tag configur
227a0 65 20 78 20 2d 74 61 62 73 20 7b 31 30 20 33 30  e x -tabs {10 30
227b0 20 63 65 6e 74 65 72 20 35 30 20 72 69 67 68 74   center 50 right
227c0 20 31 32 30 7d 0a 20 20 20 20 2e 74 20 74 61 67   120}.    .t tag
227d0 20 61 64 64 20 78 20 31 2e 30 20 65 6e 64 0a 20   add x 1.0 end. 
227e0 20 20 20 23 20 78 20 71 20 78 20 30 0a 20 20 20     # x q x 0.   
227f0 20 6c 69 73 74 20 5b 6c 69 6e 64 65 78 20 5b 2e   list [lindex [.
22800 74 20 62 62 6f 78 20 31 2e 34 5d 20 30 5d 20 5b  t bbox 1.4] 0] [
22810 6c 69 6e 64 65 78 20 5b 2e 74 20 62 62 6f 78 20  lindex [.t bbox 
22820 31 2e 38 5d 20 30 5d 20 5c 0a 09 20 20 20 20 5b  1.8] 0] \..    [
22830 6c 69 6e 64 65 78 20 5b 2e 74 20 62 62 6f 78 20  lindex [.t bbox 
22840 31 2e 31 32 5d 20 30 5d 20 5b 6c 69 6e 64 65 78  1.12] 0] [lindex
22850 20 5b 2e 74 20 62 62 6f 78 20 31 2e 31 36 5d 20   [.t bbox 1.16] 
22860 30 5d 0a 7d 20 5b 6c 69 73 74 20 5b 65 78 70 72  0].} [list [expr
22870 20 7b 24 70 61 64 78 2b 34 2a 24 66 69 78 65 64   {$padx+4*$fixed
22880 57 69 64 74 68 7d 5d 20 5b 65 78 70 72 20 7b 24  Width}] [expr {$
22890 70 61 64 78 2b 38 2a 24 66 69 78 65 64 57 69 64  padx+8*$fixedWid
228a0 74 68 7d 5d 20 5b 65 78 70 72 20 7b 24 70 61 64  th}] [expr {$pad
228b0 78 2b 31 32 2a 24 66 69 78 65 64 57 69 64 74 68  x+12*$fixedWidth
228c0 7d 5d 20 5b 65 78 70 72 20 7b 24 70 61 64 78 2b  }] [expr {$padx+
228d0 31 32 30 7d 5d 5d 0a 0a 74 65 73 74 20 74 65 78  120}]]..test tex
228e0 74 44 69 73 70 2d 32 36 2e 31 33 2e 32 20 7b 41  tDisp-26.13.2 {A
228f0 64 6a 75 73 74 46 6f 72 54 61 62 20 70 72 6f 63  djustForTab proc
22900 65 64 75 72 65 2c 20 6e 6f 74 20 65 6e 6f 75 67  edure, not enoug
22910 68 20 73 70 61 63 65 7d 20 7b 0a 20 20 20 20 2e  h space} {.    .
22920 74 20 64 65 6c 65 74 65 20 31 2e 30 20 65 6e 64  t delete 1.0 end
22930 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20 31  .    .t insert 1
22940 2e 30 20 22 61 62 63 5c 74 78 79 7a 5c 74 71 72  .0 "abc\txyz\tqr
22950 73 5c 74 78 79 7a 5c 74 30 22 0a 20 20 20 20 2e  s\txyz\t0".    .
22960 74 20 74 61 67 20 64 65 6c 65 74 65 20 78 0a 20  t tag delete x. 
22970 20 20 20 2e 74 20 74 61 67 20 63 6f 6e 66 69 67     .t tag config
22980 75 72 65 20 78 20 2d 74 61 62 73 20 7b 31 30 20  ure x -tabs {10 
22990 33 30 20 63 65 6e 74 65 72 20 35 30 20 72 69 67  30 center 50 rig
229a0 68 74 20 31 32 30 7d 20 2d 74 61 62 73 74 79 6c  ht 120} -tabstyl
229b0 65 20 77 6f 72 64 70 72 6f 63 65 73 73 6f 72 0a  e wordprocessor.
229c0 20 20 20 20 2e 74 20 74 61 67 20 61 64 64 20 78      .t tag add x
229d0 20 31 2e 30 20 65 6e 64 0a 20 20 20 20 73 65 74   1.0 end.    set
229e0 20 72 65 73 20 5b 6c 69 73 74 20 5b 6c 69 6e 64   res [list [lind
229f0 65 78 20 5b 2e 74 20 62 62 6f 78 20 31 2e 34 5d  ex [.t bbox 1.4]
22a00 20 30 5d 20 5b 6c 69 6e 64 65 78 20 5b 2e 74 20   0] [lindex [.t 
22a10 62 62 6f 78 20 31 2e 38 5d 20 30 5d 20 5c 0a 20  bbox 1.8] 0] \. 
22a20 20 20 20 20 20 5b 6c 69 6e 64 65 78 20 5b 2e 74       [lindex [.t
22a30 20 62 62 6f 78 20 31 2e 31 32 5d 20 30 5d 20 5b   bbox 1.12] 0] [
22a40 6c 69 6e 64 65 78 20 5b 2e 74 20 62 62 6f 78 20  lindex [.t bbox 
22a50 31 2e 31 36 5d 20 30 5d 5d 0a 20 20 20 20 2e 74  1.16] 0]].    .t
22a60 20 74 61 67 20 63 6f 6e 66 69 67 75 72 65 20 78   tag configure x
22a70 20 2d 74 61 62 73 74 79 6c 65 20 74 61 62 75 6c   -tabstyle tabul
22a80 61 72 0a 20 20 20 20 73 65 74 20 72 65 73 0a 7d  ar.    set res.}
22a90 20 5b 6c 69 73 74 20 5b 65 78 70 72 20 7b 24 70   [list [expr {$p
22aa0 61 64 78 2b 34 2a 24 66 69 78 65 64 57 69 64 74  adx+4*$fixedWidt
22ab0 68 7d 5d 20 5b 65 78 70 72 20 7b 24 70 61 64 78  h}] [expr {$padx
22ac0 2b 38 2a 24 66 69 78 65 64 57 69 64 74 68 7d 5d  +8*$fixedWidth}]
22ad0 20 5b 65 78 70 72 20 7b 24 70 61 64 78 2b 31 32   [expr {$padx+12
22ae0 30 7d 5d 20 5b 65 78 70 72 20 7b 24 70 61 64 78  0}] [expr {$padx
22af0 2b 31 39 30 7d 5d 5d 0a 0a 74 65 73 74 20 74 65  +190}]]..test te
22b00 78 74 44 69 73 70 2d 32 36 2e 31 34 20 7b 41 64  xtDisp-26.14 {Ad
22b10 6a 75 73 74 46 6f 72 54 61 62 20 70 72 6f 63 65  justForTab proce
22b20 64 75 72 65 2c 20 6e 6f 74 20 65 6e 6f 75 67 68  dure, not enough
22b30 20 73 70 61 63 65 7d 20 7b 0a 20 20 20 20 2e 74   space} {.    .t
22b40 20 64 65 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a   delete 1.0 end.
22b50 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20 65 6e      .t insert en
22b60 64 20 22 61 20 5c 74 62 20 5c 74 63 20 5c 74 64  d "a \tb \tc \td
22b70 20 5c 74 65 20 5c 74 66 20 5c 74 67 5c 6e 22 0a   \te \tf \tg\n".
22b80 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20 65 6e      .t insert en
22b90 64 20 22 57 61 74 63 68 20 74 68 65 20 5c 74 58  d "Watch the \tX
22ba0 20 61 6e 64 20 74 68 65 20 5c 74 5c 74 5c 74 59   and the \t\t\tY
22bb0 5c 6e 22 0a 20 20 20 20 2e 74 20 74 61 67 20 63  \n".    .t tag c
22bc0 6f 6e 66 69 67 75 72 65 20 6d 6f 6f 70 20 2d 74  onfigure moop -t
22bd0 61 62 73 20 5b 65 78 70 72 20 7b 38 2a 24 66 69  abs [expr {8*$fi
22be0 78 65 64 57 69 64 74 68 7d 5d 0a 20 20 20 20 2e  xedWidth}].    .
22bf0 74 20 69 6e 73 65 72 74 20 65 6e 64 20 22 57 61  t insert end "Wa
22c00 74 63 68 20 74 68 65 20 5c 74 58 20 61 6e 64 20  tch the \tX and 
22c10 74 68 65 20 5c 74 5c 74 5c 74 59 5c 6e 22 20 6d  the \t\t\tY\n" m
22c20 6f 6f 70 0a 20 20 20 20 6c 69 73 74 20 5b 6c 69  oop.    list [li
22c30 6e 64 65 78 20 5b 2e 74 20 62 62 6f 78 20 32 2e  ndex [.t bbox 2.
22c40 31 31 5d 20 30 5d 20 5b 6c 69 6e 64 65 78 20 5b  11] 0] [lindex [
22c50 2e 74 20 62 62 6f 78 20 32 2e 32 34 5d 20 30 5d  .t bbox 2.24] 0]
22c60 20 5c 0a 09 20 20 20 20 5b 6c 69 6e 64 65 78 20   \..    [lindex 
22c70 5b 2e 74 20 62 62 6f 78 20 33 2e 31 31 5d 20 30  [.t bbox 3.11] 0
22c80 5d 20 5b 6c 69 6e 64 65 78 20 5b 2e 74 20 62 62  ] [lindex [.t bb
22c90 6f 78 20 33 2e 32 34 5d 20 30 5d 0a 7d 20 5b 6c  ox 3.24] 0].} [l
22ca0 69 73 74 20 5b 65 78 70 72 20 7b 24 70 61 64 78  ist [expr {$padx
22cb0 2b 31 31 2a 24 66 69 78 65 64 57 69 64 74 68 7d  +11*$fixedWidth}
22cc0 5d 20 5b 65 78 70 72 20 7b 24 70 61 64 78 2b 33  ] [expr {$padx+3
22cd0 32 2a 24 66 69 78 65 64 57 69 64 74 68 7d 5d 20  2*$fixedWidth}] 
22ce0 5b 65 78 70 72 20 7b 24 70 61 64 78 2b 31 31 2a  [expr {$padx+11*
22cf0 24 66 69 78 65 64 57 69 64 74 68 7d 5d 20 5b 65  $fixedWidth}] [e
22d00 78 70 72 20 7b 24 70 61 64 78 2b 33 32 2a 24 66  xpr {$padx+32*$f
22d10 69 78 65 64 57 69 64 74 68 7d 5d 20 5d 0a 0a 74  ixedWidth}] ]..t
22d20 65 73 74 20 74 65 78 74 44 69 73 70 2d 32 36 2e  est textDisp-26.
22d30 31 34 2e 32 20 7b 41 64 6a 75 73 74 46 6f 72 54  14.2 {AdjustForT
22d40 61 62 20 70 72 6f 63 65 64 75 72 65 2c 20 6e 6f  ab procedure, no
22d50 74 20 65 6e 6f 75 67 68 20 73 70 61 63 65 7d 20  t enough space} 
22d60 7b 0a 20 20 20 20 2e 74 20 64 65 6c 65 74 65 20  {.    .t delete 
22d70 31 2e 30 20 65 6e 64 0a 20 20 20 20 2e 74 20 63  1.0 end.    .t c
22d80 6f 6e 66 69 67 75 72 65 20 2d 74 61 62 73 74 79  onfigure -tabsty
22d90 6c 65 20 77 6f 72 64 70 72 6f 63 65 73 73 6f 72  le wordprocessor
22da0 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20 65  .    .t insert e
22db0 6e 64 20 22 61 20 5c 74 62 20 5c 74 63 20 5c 74  nd "a \tb \tc \t
22dc0 64 20 5c 74 65 20 5c 74 66 20 5c 74 67 5c 6e 22  d \te \tf \tg\n"
22dd0 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20 65  .    .t insert e
22de0 6e 64 20 22 57 61 74 63 68 20 74 68 65 20 5c 74  nd "Watch the \t
22df0 58 20 61 6e 64 20 74 68 65 20 5c 74 5c 74 5c 74  X and the \t\t\t
22e00 59 5c 6e 22 0a 20 20 20 20 2e 74 20 74 61 67 20  Y\n".    .t tag 
22e10 63 6f 6e 66 69 67 75 72 65 20 6d 6f 6f 70 20 2d  configure moop -
22e20 74 61 62 73 20 5b 65 78 70 72 20 7b 38 2a 24 66  tabs [expr {8*$f
22e30 69 78 65 64 57 69 64 74 68 7d 5d 0a 20 20 20 20  ixedWidth}].    
22e40 2e 74 20 69 6e 73 65 72 74 20 65 6e 64 20 22 57  .t insert end "W
22e50 61 74 63 68 20 74 68 65 20 5c 74 58 20 61 6e 64  atch the \tX and
22e60 20 74 68 65 20 5c 74 5c 74 5c 74 59 5c 6e 22 20   the \t\t\tY\n" 
22e70 6d 6f 6f 70 0a 20 20 20 20 73 65 74 20 72 65 73  moop.    set res
22e80 20 5b 6c 69 73 74 20 5b 6c 69 6e 64 65 78 20 5b   [list [lindex [
22e90 2e 74 20 62 62 6f 78 20 32 2e 31 31 5d 20 30 5d  .t bbox 2.11] 0]
22ea0 20 5b 6c 69 6e 64 65 78 20 5b 2e 74 20 62 62 6f   [lindex [.t bbo
22eb0 78 20 32 2e 32 34 5d 20 30 5d 20 5c 0a 20 20 20  x 2.24] 0] \.   
22ec0 20 20 20 5b 6c 69 6e 64 65 78 20 5b 2e 74 20 62     [lindex [.t b
22ed0 62 6f 78 20 33 2e 31 31 5d 20 30 5d 20 5b 6c 69  box 3.11] 0] [li
22ee0 6e 64 65 78 20 5b 2e 74 20 62 62 6f 78 20 33 2e  ndex [.t bbox 3.
22ef0 32 34 5d 20 30 5d 5d 0a 20 20 20 20 2e 74 20 63  24] 0]].    .t c
22f00 6f 6e 66 69 67 75 72 65 20 2d 74 61 62 73 74 79  onfigure -tabsty
22f10 6c 65 20 74 61 62 75 6c 61 72 0a 20 20 20 20 73  le tabular.    s
22f20 65 74 20 72 65 73 0a 7d 20 5b 6c 69 73 74 20 5b  et res.} [list [
22f30 65 78 70 72 20 7b 24 70 61 64 78 2b 31 36 2a 24  expr {$padx+16*$
22f40 66 69 78 65 64 57 69 64 74 68 7d 5d 20 5b 65 78  fixedWidth}] [ex
22f50 70 72 20 7b 24 70 61 64 78 2b 38 2a 24 66 69 78  pr {$padx+8*$fix
22f60 65 64 57 69 64 74 68 7d 5d 20 5b 65 78 70 72 20  edWidth}] [expr 
22f70 7b 24 70 61 64 78 2b 31 36 2a 24 66 69 78 65 64  {$padx+16*$fixed
22f80 57 69 64 74 68 7d 5d 20 5b 65 78 70 72 20 7b 24  Width}] [expr {$
22f90 70 61 64 78 2b 38 2a 24 66 69 78 65 64 57 69 64  padx+8*$fixedWid
22fa0 74 68 7d 5d 5d 0a 0a 2e 74 20 63 6f 6e 66 69 67  th}]]...t config
22fb0 75 72 65 20 2d 77 69 64 74 68 20 32 30 20 2d 62  ure -width 20 -b
22fc0 64 20 32 20 2d 68 69 67 68 6c 69 67 68 74 74 68  d 2 -highlightth
22fd0 69 63 6b 6e 65 73 73 20 32 20 2d 72 65 6c 69 65  ickness 2 -relie
22fe0 66 20 73 75 6e 6b 65 6e 20 2d 74 61 62 73 20 7b  f sunken -tabs {
22ff0 7d 20 5c 0a 09 2d 77 72 61 70 20 63 68 61 72 0a  } \..-wrap char.
23000 75 70 64 61 74 65 0a 73 65 74 20 62 77 20 5b 2e  update.set bw [.
23010 74 20 63 67 65 74 20 2d 62 6f 72 64 65 72 77 69  t cget -borderwi
23020 64 74 68 5d 0a 73 65 74 20 70 78 20 5b 2e 74 20  dth].set px [.t 
23030 63 67 65 74 20 2d 70 61 64 78 5d 0a 73 65 74 20  cget -padx].set 
23040 70 79 20 5b 2e 74 20 63 67 65 74 20 2d 70 61 64  py [.t cget -pad
23050 79 5d 0a 73 65 74 20 68 6c 74 68 20 5b 2e 74 20  y].set hlth [.t 
23060 63 67 65 74 20 2d 68 69 67 68 6c 69 67 68 74 74  cget -highlightt
23070 68 69 63 6b 6e 65 73 73 5d 0a 73 65 74 20 70 61  hickness].set pa
23080 64 78 20 5b 65 78 70 72 20 7b 24 62 77 2b 24 70  dx [expr {$bw+$p
23090 78 2b 24 68 6c 74 68 7d 5d 0a 73 65 74 20 70 61  x+$hlth}].set pa
230a0 64 79 20 5b 65 78 70 72 20 7b 24 62 77 2b 24 70  dy [expr {$bw+$p
230b0 79 2b 24 68 6c 74 68 7d 5d 0a 0a 74 65 73 74 20  y+$hlth}]..test 
230c0 74 65 78 74 44 69 73 70 2d 32 37 2e 31 20 7b 53  textDisp-27.1 {S
230d0 69 7a 65 4f 66 54 61 62 20 70 72 6f 63 65 64 75  izeOfTab procedu
230e0 72 65 2c 20 6f 6c 64 2d 73 74 79 6c 65 20 74 61  re, old-style ta
230f0 62 73 7d 20 7b 0a 20 20 20 20 2e 74 20 64 65 6c  bs} {.    .t del
23100 65 74 65 20 31 2e 30 20 65 6e 64 0a 20 20 20 20  ete 1.0 end.    
23110 2e 74 20 69 6e 73 65 72 74 20 31 2e 30 20 61 5c  .t insert 1.0 a\
23120 74 62 63 64 65 66 67 68 69 6a 5c 74 63 5c 74 64  tbcdefghij\tc\td
23130 0a 20 20 20 20 6c 69 73 74 20 5b 2e 74 20 62 62  .    list [.t bb
23140 6f 78 20 31 2e 32 5d 20 5b 2e 74 20 62 62 6f 78  ox 1.2] [.t bbox
23150 20 31 2e 31 30 5d 20 5b 2e 74 20 62 62 6f 78 20   1.10] [.t bbox 
23160 31 2e 31 32 5d 0a 7d 20 5b 6c 69 73 74 20 5c 0a  1.12].} [list \.
23170 20 20 20 20 5b 6c 69 73 74 20 5b 65 78 70 72 20      [list [expr 
23180 7b 24 70 61 64 78 2b 38 2a 24 66 69 78 65 64 57  {$padx+8*$fixedW
23190 69 64 74 68 7d 5d 20 24 70 61 64 79 20 24 66 69  idth}] $pady $fi
231a0 78 65 64 57 69 64 74 68 20 24 66 69 78 65 64 48  xedWidth $fixedH
231b0 65 69 67 68 74 5d 20 5c 0a 20 20 20 20 5b 6c 69  eight] \.    [li
231c0 73 74 20 5b 65 78 70 72 20 7b 24 70 61 64 78 2b  st [expr {$padx+
231d0 31 36 2a 24 66 69 78 65 64 57 69 64 74 68 7d 5d  16*$fixedWidth}]
231e0 20 24 70 61 64 79 20 24 66 69 78 65 64 57 69 64   $pady $fixedWid
231f0 74 68 20 24 66 69 78 65 64 48 65 69 67 68 74 5d  th $fixedHeight]
23200 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20 5b 65 78   \.    [list [ex
23210 70 72 20 7b 24 70 61 64 78 2b 31 38 2a 24 66 69  pr {$padx+18*$fi
23220 78 65 64 57 69 64 74 68 7d 5d 20 24 70 61 64 79  xedWidth}] $pady
23230 20 24 66 69 78 65 64 57 69 64 74 68 20 24 66 69   $fixedWidth $fi
23240 78 65 64 48 65 69 67 68 74 5d 5d 0a 0a 74 65 73  xedHeight]]..tes
23250 74 20 74 65 78 74 44 69 73 70 2d 32 37 2e 31 2e  t textDisp-27.1.
23260 31 20 7b 53 69 7a 65 4f 66 54 61 62 20 70 72 6f  1 {SizeOfTab pro
23270 63 65 64 75 72 65 2c 20 6f 6c 64 2d 73 74 79 6c  cedure, old-styl
23280 65 20 74 61 62 73 7d 20 7b 0a 20 20 20 20 2e 74  e tabs} {.    .t
23290 20 64 65 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a   delete 1.0 end.
232a0 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20 31 2e      .t insert 1.
232b0 30 20 61 5c 74 62 63 64 65 66 67 68 69 6a 5c 74  0 a\tbcdefghij\t
232c0 63 5c 74 64 0a 20 20 20 20 2e 74 20 63 6f 6e 66  c\td.    .t conf
232d0 69 67 75 72 65 20 2d 74 61 62 73 74 79 6c 65 20  igure -tabstyle 
232e0 77 6f 72 64 70 72 6f 63 65 73 73 6f 72 0a 20 20  wordprocessor.  
232f0 20 20 73 65 74 20 72 65 73 20 5b 6c 69 73 74 20    set res [list 
23300 5b 2e 74 20 62 62 6f 78 20 31 2e 32 5d 20 5b 2e  [.t bbox 1.2] [.
23310 74 20 62 62 6f 78 20 31 2e 31 30 5d 20 5b 2e 74  t bbox 1.10] [.t
23320 20 62 62 6f 78 20 31 2e 31 32 5d 5d 0a 20 20 20   bbox 1.12]].   
23330 20 2e 74 20 63 6f 6e 66 69 67 75 72 65 20 2d 74   .t configure -t
23340 61 62 73 74 79 6c 65 20 74 61 62 75 6c 61 72 0a  abstyle tabular.
23350 20 20 20 20 73 65 74 20 72 65 73 0a 7d 20 5b 6c      set res.} [l
23360 69 73 74 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20  ist \.    [list 
23370 5b 65 78 70 72 20 7b 24 70 61 64 78 2b 38 2a 24  [expr {$padx+8*$
23380 66 69 78 65 64 57 69 64 74 68 7d 5d 20 24 70 61  fixedWidth}] $pa
23390 64 79 20 24 66 69 78 65 64 57 69 64 74 68 20 24  dy $fixedWidth $
233a0 66 69 78 65 64 48 65 69 67 68 74 5d 20 5c 0a 20  fixedHeight] \. 
233b0 20 20 20 5b 6c 69 73 74 20 5b 65 78 70 72 20 7b     [list [expr {
233c0 24 70 61 64 78 2b 31 36 2a 24 66 69 78 65 64 57  $padx+16*$fixedW
233d0 69 64 74 68 7d 5d 20 24 70 61 64 79 20 24 66 69  idth}] $pady $fi
233e0 78 65 64 57 69 64 74 68 20 24 66 69 78 65 64 48  xedWidth $fixedH
233f0 65 69 67 68 74 5d 20 5c 0a 20 20 20 20 5b 6c 69  eight] \.    [li
23400 73 74 20 24 70 61 64 78 20 5b 65 78 70 72 20 7b  st $padx [expr {
23410 24 70 61 64 79 2b 24 66 69 78 65 64 48 65 69 67  $pady+$fixedHeig
23420 68 74 7d 5d 20 24 66 69 78 65 64 57 69 64 74 68  ht}] $fixedWidth
23430 20 24 66 69 78 65 64 48 65 69 67 68 74 5d 5d 0a   $fixedHeight]].
23440 0a 74 65 73 74 20 74 65 78 74 44 69 73 70 2d 32  .test textDisp-2
23450 37 2e 32 20 7b 53 69 7a 65 4f 66 54 61 62 20 70  7.2 {SizeOfTab p
23460 72 6f 63 65 64 75 72 65 2c 20 63 68 6f 6f 73 69  rocedure, choosi
23470 6e 67 20 74 61 62 58 20 61 6e 64 20 61 6c 69 67  ng tabX and alig
23480 6e 6d 65 6e 74 7d 20 7b 0a 20 20 20 20 2e 74 20  nment} {.    .t 
23490 64 65 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a 20  delete 1.0 end. 
234a0 20 20 20 2e 74 20 69 6e 73 65 72 74 20 31 2e 30     .t insert 1.0
234b0 20 61 5c 74 62 63 64 0a 20 20 20 20 2e 74 20 74   a\tbcd.    .t t
234c0 61 67 20 64 65 6c 65 74 65 20 78 0a 20 20 20 20  ag delete x.    
234d0 2e 74 20 74 61 67 20 63 6f 6e 66 69 67 75 72 65  .t tag configure
234e0 20 78 20 2d 74 61 62 73 20 31 32 30 0a 20 20 20   x -tabs 120.   
234f0 20 2e 74 20 74 61 67 20 61 64 64 20 78 20 31 2e   .t tag add x 1.
23500 30 20 65 6e 64 0a 20 20 20 20 6c 69 73 74 20 5b  0 end.    list [
23510 2e 74 20 62 62 6f 78 20 31 2e 33 5d 20 5b 2e 74  .t bbox 1.3] [.t
23520 20 62 62 6f 78 20 31 2e 34 5d 0a 7d 20 5b 6c 69   bbox 1.4].} [li
23530 73 74 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20 5b  st \.    [list [
23540 65 78 70 72 20 7b 24 70 61 64 78 2b 31 32 30 2b  expr {$padx+120+
23550 24 66 69 78 65 64 57 69 64 74 68 7d 5d 20 24 70  $fixedWidth}] $p
23560 61 64 79 20 5c 0a 20 20 20 20 20 20 20 20 5b 65  ady \.        [e
23570 78 70 72 20 7b 24 66 69 78 65 64 57 69 64 74 68  xpr {$fixedWidth
23580 2b 28 5b 77 69 6e 66 6f 20 77 69 64 74 68 20 2e  +([winfo width .
23590 74 5d 2d 32 2a 24 70 61 64 78 2d 31 32 30 2d 32  t]-2*$padx-120-2
235a0 2a 24 66 69 78 65 64 57 69 64 74 68 29 7d 5d 20  *$fixedWidth)}] 
235b0 24 66 69 78 65 64 48 65 69 67 68 74 5d 20 5c 0a  $fixedHeight] \.
235c0 20 20 20 20 5b 6c 69 73 74 20 24 70 61 64 78 20      [list $padx 
235d0 5b 65 78 70 72 20 7b 24 70 61 64 79 2b 24 66 69  [expr {$pady+$fi
235e0 78 65 64 48 65 69 67 68 74 7d 5d 20 24 66 69 78  xedHeight}] $fix
235f0 65 64 57 69 64 74 68 20 24 66 69 78 65 64 48 65  edWidth $fixedHe
23600 69 67 68 74 5d 5d 0a 0a 74 65 73 74 20 74 65 78  ight]]..test tex
23610 74 44 69 73 70 2d 32 37 2e 33 20 7b 53 69 7a 65  tDisp-27.3 {Size
23620 4f 66 54 61 62 20 70 72 6f 63 65 64 75 72 65 2c  OfTab procedure,
23630 20 63 68 6f 6f 73 69 6e 67 20 74 61 62 58 20 61   choosing tabX a
23640 6e 64 20 61 6c 69 67 6e 6d 65 6e 74 7d 20 7b 0a  nd alignment} {.
23650 20 20 20 20 2e 74 20 64 65 6c 65 74 65 20 31 2e      .t delete 1.
23660 30 20 65 6e 64 0a 20 20 20 20 2e 74 20 69 6e 73  0 end.    .t ins
23670 65 72 74 20 31 2e 30 20 61 5c 74 5c 74 5c 74 62  ert 1.0 a\t\t\tb
23680 63 64 0a 20 20 20 20 2e 74 20 74 61 67 20 64 65  cd.    .t tag de
23690 6c 65 74 65 20 78 0a 20 20 20 20 2e 74 20 74 61  lete x.    .t ta
236a0 67 20 63 6f 6e 66 69 67 75 72 65 20 78 20 2d 74  g configure x -t
236b0 61 62 73 20 34 30 0a 20 20 20 20 2e 74 20 74 61  abs 40.    .t ta
236c0 67 20 61 64 64 20 78 20 31 2e 30 20 65 6e 64 0a  g add x 1.0 end.
236d0 20 20 20 20 6c 69 73 74 20 5b 2e 74 20 62 62 6f      list [.t bbo
236e0 78 20 31 2e 35 5d 20 5b 2e 74 20 62 62 6f 78 20  x 1.5] [.t bbox 
236f0 31 2e 36 5d 0a 7d 20 5b 6c 69 73 74 20 5c 0a 20  1.6].} [list \. 
23700 20 20 20 5b 6c 69 73 74 20 5b 65 78 70 72 20 7b     [list [expr {
23710 24 70 61 64 78 2b 31 32 30 2b 24 66 69 78 65 64  $padx+120+$fixed
23720 57 69 64 74 68 7d 5d 20 24 70 61 64 79 20 5c 0a  Width}] $pady \.
23730 20 20 20 20 20 20 20 20 5b 65 78 70 72 20 7b 24          [expr {$
23740 66 69 78 65 64 57 69 64 74 68 2b 28 5b 77 69 6e  fixedWidth+([win
23750 66 6f 20 77 69 64 74 68 20 2e 74 5d 2d 32 2a 24  fo width .t]-2*$
23760 70 61 64 78 2d 31 32 30 2d 32 2a 24 66 69 78 65  padx-120-2*$fixe
23770 64 57 69 64 74 68 29 7d 5d 20 24 66 69 78 65 64  dWidth)}] $fixed
23780 48 65 69 67 68 74 5d 20 5c 0a 20 20 20 20 5b 6c  Height] \.    [l
23790 69 73 74 20 24 70 61 64 78 20 5b 65 78 70 72 20  ist $padx [expr 
237a0 7b 24 70 61 64 79 2b 24 66 69 78 65 64 48 65 69  {$pady+$fixedHei
237b0 67 68 74 7d 5d 20 24 66 69 78 65 64 57 69 64 74  ght}] $fixedWidt
237c0 68 20 24 66 69 78 65 64 48 65 69 67 68 74 5d 5d  h $fixedHeight]]
237d0 0a 0a 74 65 73 74 20 74 65 78 74 44 69 73 70 2d  ..test textDisp-
237e0 32 37 2e 34 20 7b 53 69 7a 65 4f 66 54 61 62 20  27.4 {SizeOfTab 
237f0 70 72 6f 63 65 64 75 72 65 2c 20 63 68 6f 6f 73  procedure, choos
23800 69 6e 67 20 74 61 62 58 20 61 6e 64 20 61 6c 69  ing tabX and ali
23810 67 6e 6d 65 6e 74 7d 20 7b 0a 20 20 20 20 2e 74  gnment} {.    .t
23820 20 64 65 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a   delete 1.0 end.
23830 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20 31 2e      .t insert 1.
23840 30 20 61 5c 74 5c 74 5c 74 62 63 64 0a 20 20 20  0 a\t\t\tbcd.   
23850 20 2e 74 20 69 6e 73 65 72 74 20 65 6e 64 20 5c   .t insert end \
23860 6e 61 5c 74 64 65 66 5c 74 67 68 69 5c 74 62 63  na\tdef\tghi\tbc
23870 64 5c 6e 0a 20 20 20 20 2e 74 20 74 61 67 20 64  d\n.    .t tag d
23880 65 6c 65 74 65 20 78 0a 20 20 20 20 23 20 32 30  elete x.    # 20
23890 2c 20 37 30 20 28 2b 35 30 29 2c 20 31 32 30 20  , 70 (+50), 120 
238a0 28 2b 35 30 29 0a 20 20 20 20 2e 74 20 74 61 67  (+50).    .t tag
238b0 20 63 6f 6e 66 69 67 75 72 65 20 78 20 2d 74 61   configure x -ta
238c0 62 73 20 7b 32 30 20 63 65 6e 74 65 72 20 37 30  bs {20 center 70
238d0 20 6c 65 66 74 7d 0a 20 20 20 20 2e 74 20 74 61   left}.    .t ta
238e0 67 20 61 64 64 20 78 20 31 2e 30 20 65 6e 64 0a  g add x 1.0 end.
238f0 20 20 20 20 6c 69 73 74 20 5b 2e 74 20 62 62 6f      list [.t bbo
23900 78 20 31 2e 35 5d 20 5b 2e 74 20 62 62 6f 78 20  x 1.5] [.t bbox 
23910 31 2e 36 5d 0a 7d 20 5b 6c 69 73 74 20 5c 0a 20  1.6].} [list \. 
23920 20 20 20 5b 6c 69 73 74 20 5b 65 78 70 72 20 7b     [list [expr {
23930 24 70 61 64 78 2b 31 32 30 2b 24 66 69 78 65 64  $padx+120+$fixed
23940 57 69 64 74 68 7d 5d 20 24 70 61 64 79 20 5c 0a  Width}] $pady \.
23950 20 20 20 20 20 20 20 20 5b 65 78 70 72 20 7b 24          [expr {$
23960 66 69 78 65 64 57 69 64 74 68 2b 28 5b 77 69 6e  fixedWidth+([win
23970 66 6f 20 77 69 64 74 68 20 2e 74 5d 2d 32 2a 24  fo width .t]-2*$
23980 70 61 64 78 2d 31 32 30 2d 32 2a 24 66 69 78 65  padx-120-2*$fixe
23990 64 57 69 64 74 68 29 7d 5d 20 24 66 69 78 65 64  dWidth)}] $fixed
239a0 48 65 69 67 68 74 5d 20 5c 0a 20 20 20 20 5b 6c  Height] \.    [l
239b0 69 73 74 20 24 70 61 64 78 20 5b 65 78 70 72 20  ist $padx [expr 
239c0 7b 24 70 61 64 79 2b 24 66 69 78 65 64 48 65 69  {$pady+$fixedHei
239d0 67 68 74 7d 5d 20 24 66 69 78 65 64 57 69 64 74  ght}] $fixedWidt
239e0 68 20 24 66 69 78 65 64 48 65 69 67 68 74 5d 5d  h $fixedHeight]]
239f0 0a 0a 23 20 54 68 65 72 65 20 61 72 65 20 64 69  ..# There are di
23a00 66 66 65 72 65 6e 63 65 73 20 62 65 74 77 65 65  fferences betwee
23a10 6e 20 57 69 6e 64 6f 77 73 20 61 6e 64 20 4c 69  n Windows and Li
23a20 6e 75 78 2f 4d 61 63 20 4f 53 20 58 20 68 65 72  nux/Mac OS X her
23a30 65 2e 0a 74 65 73 74 20 74 65 78 74 44 69 73 70  e..test textDisp
23a40 2d 32 37 2e 35 20 7b 53 69 7a 65 4f 66 54 61 62  -27.5 {SizeOfTab
23a50 20 70 72 6f 63 65 64 75 72 65 2c 20 63 65 6e 74   procedure, cent
23a60 65 72 20 61 6c 69 67 6e 6d 65 6e 74 7d 20 7b 74  er alignment} {t
23a70 65 78 74 66 6f 6e 74 73 7d 20 7b 0a 20 20 20 20  extfonts} {.    
23a80 2e 74 20 64 65 6c 65 74 65 20 31 2e 30 20 65 6e  .t delete 1.0 en
23a90 64 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20  d.    .t insert 
23aa0 31 2e 30 20 61 5c 74 78 79 7a 7a 79 61 62 63 0a  1.0 a\txyzzyabc.
23ab0 20 20 20 20 2e 74 20 74 61 67 20 64 65 6c 65 74      .t tag delet
23ac0 65 20 78 0a 20 20 20 20 2e 74 20 74 61 67 20 63  e x.    .t tag c
23ad0 6f 6e 66 69 67 75 72 65 20 78 20 2d 74 61 62 73  onfigure x -tabs
23ae0 20 7b 31 32 30 20 63 65 6e 74 65 72 7d 0a 20 20   {120 center}.  
23af0 20 20 2e 74 20 74 61 67 20 61 64 64 20 78 20 31    .t tag add x 1
23b00 2e 30 20 65 6e 64 0a 20 20 20 20 23 20 54 68 65  .0 end.    # The
23b10 20 63 61 6c 63 75 6c 61 74 69 6f 6e 20 66 6f 72   calculation for
23b20 20 74 68 65 20 63 65 6e 74 65 72 69 6e 67 20 72   the centering r
23b30 65 2d 61 64 6a 75 73 74 73 20 69 74 73 65 6c 66  e-adjusts itself
23b40 0a 20 20 20 20 23 20 72 61 74 68 65 72 20 74 68  .    # rather th
23b50 61 6e 20 73 74 69 63 6b 69 6e 67 20 74 6f 20 74  an sticking to t
23b60 68 65 20 63 65 6e 74 65 72 20 6f 66 20 74 68 65  he center of the
23b70 20 74 65 78 74 20 74 68 61 74 20 73 68 6f 75 6c   text that shoul
23b80 64 20 62 65 20 64 69 73 70 6c 61 79 65 64 2e 0a  d be displayed..
23b90 20 20 20 20 23 20 57 68 61 74 65 76 65 72 20 61      # Whatever a
23ba0 6c 67 6f 72 69 74 68 6d 20 69 74 20 69 73 20 75  lgorithm it is u
23bb0 73 69 6e 67 20 69 73 20 6e 6f 6e 2d 6f 62 76 69  sing is non-obvi
23bc0 6f 75 73 2e 0a 20 20 20 20 6c 69 73 74 20 5b 2e  ous..    list [.
23bd0 74 20 62 62 6f 78 20 31 2e 36 5d 20 5b 2e 74 20  t bbox 1.6] [.t 
23be0 62 62 6f 78 20 31 2e 37 5d 0a 7d 20 5b 6c 69 73  bbox 1.7].} [lis
23bf0 74 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20 5b 65  t \.    [list [e
23c00 78 70 72 20 7b 24 70 61 64 78 2b 31 32 30 2b 32  xpr {$padx+120+2
23c10 2a 24 66 69 78 65 64 57 69 64 74 68 2d 33 7d 5d  *$fixedWidth-3}]
23c20 20 24 70 61 64 79 20 5c 0a 20 20 20 20 20 20 20   $pady \.       
23c30 20 5b 65 78 70 72 20 7b 24 66 69 78 65 64 57 69   [expr {$fixedWi
23c40 64 74 68 2b 32 7d 5d 20 24 66 69 78 65 64 48 65  dth+2}] $fixedHe
23c50 69 67 68 74 5d 20 5c 0a 20 20 20 20 5b 6c 69 73  ight] \.    [lis
23c60 74 20 24 70 61 64 78 20 5b 65 78 70 72 20 7b 24  t $padx [expr {$
23c70 70 61 64 79 2b 24 66 69 78 65 64 48 65 69 67 68  pady+$fixedHeigh
23c80 74 7d 5d 20 24 66 69 78 65 64 57 69 64 74 68 20  t}] $fixedWidth 
23c90 24 66 69 78 65 64 48 65 69 67 68 74 5d 5d 0a 0a  $fixedHeight]]..
23ca0 74 65 73 74 20 74 65 78 74 44 69 73 70 2d 32 37  test textDisp-27
23cb0 2e 36 20 7b 53 69 7a 65 4f 66 54 61 62 20 70 72  .6 {SizeOfTab pr
23cc0 6f 63 65 64 75 72 65 2c 20 63 65 6e 74 65 72 20  ocedure, center 
23cd0 61 6c 69 67 6e 6d 65 6e 74 7d 20 7b 0a 20 20 20  alignment} {.   
23ce0 20 2e 74 20 64 65 6c 65 74 65 20 31 2e 30 20 65   .t delete 1.0 e
23cf0 6e 64 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74  nd.    .t insert
23d00 20 31 2e 30 20 61 5c 74 78 79 7a 7a 79 61 62 63   1.0 a\txyzzyabc
23d10 0a 20 20 20 20 2e 74 20 74 61 67 20 64 65 6c 65  .    .t tag dele
23d20 74 65 20 78 0a 20 20 20 20 2e 74 20 74 61 67 20  te x.    .t tag 
23d30 63 6f 6e 66 69 67 75 72 65 20 78 20 2d 74 61 62  configure x -tab
23d40 73 20 7b 31 35 30 20 63 65 6e 74 65 72 7d 0a 20  s {150 center}. 
23d50 20 20 20 2e 74 20 74 61 67 20 61 64 64 20 78 20     .t tag add x 
23d60 31 2e 30 20 65 6e 64 0a 20 20 20 20 6c 69 73 74  1.0 end.    list
23d70 20 5b 2e 74 20 62 62 6f 78 20 31 2e 36 5d 20 5b   [.t bbox 1.6] [
23d80 2e 74 20 62 62 6f 78 20 31 2e 37 5d 0a 7d 20 5b  .t bbox 1.7].} [
23d90 6c 69 73 74 20 5c 0a 20 20 20 20 5b 6c 69 73 74  list \.    [list
23da0 20 5b 65 78 70 72 20 7b 24 70 61 64 78 2b 34 2a   [expr {$padx+4*
23db0 24 66 69 78 65 64 57 69 64 74 68 7d 5d 20 5b 65  $fixedWidth}] [e
23dc0 78 70 72 20 7b 24 70 61 64 79 2b 24 66 69 78 65  xpr {$pady+$fixe
23dd0 64 48 65 69 67 68 74 7d 5d 20 24 66 69 78 65 64  dHeight}] $fixed
23de0 57 69 64 74 68 20 24 66 69 78 65 64 48 65 69 67  Width $fixedHeig
23df0 68 74 5d 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20  ht] \.    [list 
23e00 5b 65 78 70 72 20 7b 24 70 61 64 78 2b 35 2a 24  [expr {$padx+5*$
23e10 66 69 78 65 64 57 69 64 74 68 7d 5d 20 5b 65 78  fixedWidth}] [ex
23e20 70 72 20 7b 24 70 61 64 79 2b 24 66 69 78 65 64  pr {$pady+$fixed
23e30 48 65 69 67 68 74 7d 5d 20 24 66 69 78 65 64 57  Height}] $fixedW
23e40 69 64 74 68 20 24 66 69 78 65 64 48 65 69 67 68  idth $fixedHeigh
23e50 74 5d 5d 0a 0a 74 65 73 74 20 74 65 78 74 44 69  t]]..test textDi
23e60 73 70 2d 32 37 2e 37 20 7b 53 69 7a 65 4f 66 54  sp-27.7 {SizeOfT
23e70 61 62 20 70 72 6f 63 65 64 75 72 65 2c 20 63 65  ab procedure, ce
23e80 6e 74 65 72 20 61 6c 69 67 6e 6d 65 6e 74 2c 20  nter alignment, 
23e90 77 72 61 70 20 2d 6e 6f 6e 65 20 28 70 6f 74 65  wrap -none (pote
23ea0 6e 74 69 61 6c 20 6e 75 6d 65 72 69 63 61 6c 20  ntial numerical 
23eb0 70 72 6f 62 6c 65 6d 73 29 7d 20 7b 0a 20 20 20  problems)} {.   
23ec0 20 2e 74 20 64 65 6c 65 74 65 20 31 2e 30 20 65   .t delete 1.0 e
23ed0 6e 64 0a 20 20 20 20 73 65 74 20 63 6d 20 5b 77  nd.    set cm [w
23ee0 69 6e 66 6f 20 66 70 69 78 65 6c 73 20 2e 74 20  info fpixels .t 
23ef0 31 63 5d 0a 20 20 20 20 2e 74 20 63 6f 6e 66 69  1c].    .t confi
23f00 67 75 72 65 20 2d 74 61 62 73 20 7b 31 63 20 32  gure -tabs {1c 2
23f10 63 20 63 65 6e 74 65 72 20 33 63 20 34 63 20 35  c center 3c 4c 5
23f20 63 20 36 63 20 37 63 20 38 63 7d 20 2d 77 72 61  c 6c 7c 8c} -wra
23f30 70 20 6e 6f 6e 65 20 2d 77 69 64 74 68 20 34 30  p none -width 40
23f40 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20 31  .    .t insert 1
23f50 2e 30 20 61 5c 74 62 5c 74 63 5c 74 64 5c 74 65  .0 a\tb\tc\td\te
23f60 5c 6e 30 31 32 33 34 35 36 37 38 39 33 34 35 36  \n01234567893456
23f70 37 38 39 30 61 5c 74 62 62 5c 74 63 63 5c 74 64  7890a\tbb\tcc\td
23f80 64 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20 20  d.    update.   
23f90 20 73 65 74 20 72 65 73 20 5b 2e 74 20 62 62 6f   set res [.t bbo
23fa0 78 20 32 2e 32 33 5d 0a 7d 20 5b 6c 69 73 74 20  x 2.23].} [list 
23fb0 5b 65 78 70 72 20 7b 24 70 61 64 78 2b 32 33 2a  [expr {$padx+23*
23fc0 24 66 69 78 65 64 57 69 64 74 68 7d 5d 20 5b 65  $fixedWidth}] [e
23fd0 78 70 72 20 7b 24 70 61 64 79 2b 24 66 69 78 65  xpr {$pady+$fixe
23fe0 64 48 65 69 67 68 74 7d 5d 20 24 66 69 78 65 64  dHeight}] $fixed
23ff0 57 69 64 74 68 20 24 66 69 78 65 64 48 65 69 67  Width $fixedHeig
24000 68 74 5d 0a 0a 74 65 73 74 20 74 65 78 74 44 69  ht]..test textDi
24010 73 70 2d 32 37 2e 37 2e 31 20 7b 53 69 7a 65 4f  sp-27.7.1 {SizeO
24020 66 54 61 62 20 70 72 6f 63 65 64 75 72 65 2c 20  fTab procedure, 
24030 63 65 6e 74 65 72 20 61 6c 69 67 6e 6d 65 6e 74  center alignment
24040 2c 20 77 72 61 70 20 2d 6e 6f 6e 65 20 28 70 6f  , wrap -none (po
24050 74 65 6e 74 69 61 6c 20 6e 75 6d 65 72 69 63 61  tential numerica
24060 6c 20 70 72 6f 62 6c 65 6d 73 29 7d 20 2d 62 6f  l problems)} -bo
24070 64 79 20 7b 0a 20 20 20 20 2e 74 20 64 65 6c 65  dy {.    .t dele
24080 74 65 20 31 2e 30 20 65 6e 64 0a 20 20 20 20 2e  te 1.0 end.    .
24090 74 20 63 6f 6e 66 69 67 75 72 65 20 2d 74 61 62  t configure -tab
240a0 73 74 79 6c 65 20 77 6f 72 64 70 72 6f 63 65 73  style wordproces
240b0 73 6f 72 0a 20 20 20 20 73 65 74 20 63 6d 20 5b  sor.    set cm [
240c0 77 69 6e 66 6f 20 66 70 69 78 65 6c 73 20 2e 74  winfo fpixels .t
240d0 20 31 63 5d 0a 20 20 20 20 2e 74 20 63 6f 6e 66   1c].    .t conf
240e0 69 67 75 72 65 20 2d 74 61 62 73 20 7b 31 63 20  igure -tabs {1c 
240f0 32 63 20 63 65 6e 74 65 72 20 33 63 20 34 63 20  2c center 3c 4c 
24100 35 63 20 36 63 20 37 63 20 38 63 7d 20 2d 77 72  5c 6c 7c 8c} -wr
24110 61 70 20 6e 6f 6e 65 20 2d 77 69 64 74 68 20 34  ap none -width 4
24120 30 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20  0.    .t insert 
24130 31 2e 30 20 61 5c 74 62 5c 74 63 5c 74 64 5c 74  1.0 a\tb\tc\td\t
24140 65 5c 6e 30 31 32 33 34 35 36 37 38 39 33 34 35  e\n0123456789345
24150 36 37 38 39 30 61 5c 74 62 62 5c 74 63 63 5c 74  67890a\tbb\tcc\t
24160 64 64 0a 20 20 20 20 73 65 74 20 77 69 64 20 5b  dd.    set wid [
24170 65 78 70 72 20 7b 24 66 69 78 65 64 57 69 64 74  expr {$fixedWidt
24180 68 20 2a 20 31 39 7d 5d 0a 20 20 20 20 23 20 43  h * 19}].    # C
24190 61 6c 63 75 6c 61 74 65 20 74 6f 20 74 68 65 20  alculate to the 
241a0 65 6e 64 20 6f 66 20 74 68 65 20 74 61 62 20 61  end of the tab a
241b0 66 74 65 72 20 27 61 27 2c 20 61 64 64 20 6f 6e  fter 'a', add on
241c0 65 0a 20 20 20 20 23 20 6d 6f 72 65 20 66 6f 72  e.    # more for
241d0 20 27 62 62 5c 74 27 20 61 6e 64 20 77 65 27 72   'bb\t' and we'r
241e0 65 20 74 68 65 72 65 2e 0a 20 20 20 20 23 20 54  e there..    # T
241f0 6b 5f 47 65 74 50 69 78 65 6c 73 46 72 6f 6d 4f  k_GetPixelsFromO
24200 62 6a 20 75 73 65 73 20 74 68 65 20 73 74 61 6e  bj uses the stan
24210 64 61 72 64 20 27 69 6e 74 28 30 2e 35 20 2b 20  dard 'int(0.5 + 
24220 66 6c 6f 61 74 29 27 20 72 6f 75 6e 64 69 6e 67  float)' rounding
24230 2e 0a 20 20 20 20 73 65 74 20 74 63 6f 75 6e 74  ..    set tcount
24240 20 5b 65 78 70 72 20 7b 69 6e 74 28 24 77 69 64   [expr {int($wid
24250 2f 24 63 6d 29 2b 32 7d 5d 0a 20 20 20 20 73 65  /$cm)+2}].    se
24260 74 20 74 61 62 20 5b 65 78 70 72 20 7b 69 6e 74  t tab [expr {int
24270 28 30 2e 35 2b 24 74 63 6f 75 6e 74 2a 24 63 6d  (0.5+$tcount*$cm
24280 29 2b 24 70 61 64 78 7d 5d 0a 20 20 20 20 75 70  )+$padx}].    up
24290 64 61 74 65 0a 20 20 20 20 73 65 74 20 72 65 73  date.    set res
242a0 20 5b 2e 74 20 62 62 6f 78 20 32 2e 32 33 5d 0a   [.t bbox 2.23].
242b0 20 20 20 20 69 66 20 7b 20 5b 6c 69 6e 64 65 78      if { [lindex
242c0 20 24 72 65 73 20 30 5d 20 3d 3d 20 24 74 61 62   $res 0] == $tab
242d0 20 7d 20 7b 0a 20 20 20 20 20 20 6c 73 65 74 20   } {.      lset 
242e0 72 65 73 20 30 20 31 20 3b 20 23 20 67 6f 6f 64  res 0 1 ; # good
242f0 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20  .    } else {.  
24300 20 20 20 20 6c 73 65 74 20 72 65 73 20 30 20 30      lset res 0 0
24310 20 3b 20 23 20 62 61 64 0a 20 20 20 20 7d 0a 20   ; # bad.    }. 
24320 20 20 20 2e 74 20 63 6f 6e 66 69 67 75 72 65 20     .t configure 
24330 2d 74 61 62 73 74 79 6c 65 20 74 61 62 75 6c 61  -tabstyle tabula
24340 72 0a 20 20 20 20 73 65 74 20 72 65 73 0a 7d 20  r.    set res.} 
24350 2d 72 65 73 75 6c 74 20 5b 6c 69 73 74 20 31 20  -result [list 1 
24360 5b 65 78 70 72 20 7b 24 70 61 64 79 2b 24 66 69  [expr {$pady+$fi
24370 78 65 64 48 65 69 67 68 74 7d 5d 20 24 66 69 78  xedHeight}] $fix
24380 65 64 57 69 64 74 68 20 24 66 69 78 65 64 48 65  edWidth $fixedHe
24390 69 67 68 74 5d 0a 0a 74 65 73 74 20 74 65 78 74  ight]..test text
243a0 44 69 73 70 2d 32 37 2e 37 2e 32 20 7b 53 69 7a  Disp-27.7.2 {Siz
243b0 65 4f 66 54 61 62 20 70 72 6f 63 65 64 75 72 65  eOfTab procedure
243c0 2c 20 66 72 61 63 74 69 6f 6e 61 6c 20 74 61 62  , fractional tab
243d0 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 20 70   interpolation p
243e0 72 6f 62 6c 65 6d 7d 20 7b 0a 20 20 20 20 2e 74  roblem} {.    .t
243f0 20 64 65 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a   delete 1.0 end.
24400 20 20 20 20 73 65 74 20 69 6e 74 65 72 70 6f 6c      set interpol
24410 61 74 65 74 61 62 20 7b 31 63 20 32 63 7d 0a 20  atetab {1c 2c}. 
24420 20 20 20 73 65 74 20 70 72 65 63 69 73 65 74 61     set preciseta
24430 62 20 7b 7d 0a 20 20 20 20 66 6f 72 20 7b 73 65  b {}.    for {se
24440 74 20 69 20 31 7d 20 7b 24 69 20 3c 20 32 30 7d  t i 1} {$i < 20}
24450 20 7b 69 6e 63 72 20 69 7d 20 7b 0a 09 6c 61 70   {incr i} {..lap
24460 70 65 6e 64 20 70 72 65 63 69 73 65 74 61 62 20  pend precisetab 
24470 22 24 7b 69 7d 63 22 0a 20 20 20 20 7d 0a 20 20  "${i}c".    }.  
24480 20 20 2e 74 20 63 6f 6e 66 69 67 75 72 65 20 2d    .t configure -
24490 74 61 62 73 20 24 69 6e 74 65 72 70 6f 6c 61 74  tabs $interpolat
244a0 65 74 61 62 20 2d 77 72 61 70 20 6e 6f 6e 65 20  etab -wrap none 
244b0 2d 77 69 64 74 68 20 31 35 30 0a 20 20 20 20 2e  -width 150.    .
244c0 74 20 69 6e 73 65 72 74 20 31 2e 30 20 5b 73 74  t insert 1.0 [st
244d0 72 69 6e 67 20 72 65 70 65 61 74 20 22 61 5c 74  ring repeat "a\t
244e0 22 20 32 30 5d 0a 20 20 20 20 75 70 64 61 74 65  " 20].    update
244f0 0a 20 20 20 20 73 65 74 20 72 65 73 20 5b 2e 74  .    set res [.t
24500 20 62 62 6f 78 20 31 2e 32 30 5d 0a 20 20 20 20   bbox 1.20].    
24510 23 20 4e 6f 77 2c 20 54 6b 27 73 20 69 6e 74 65  # Now, Tk's inte
24520 72 70 6f 6c 61 74 65 64 20 74 61 62 73 20 73 68  rpolated tabs sh
24530 6f 75 6c 64 20 62 65 20 74 68 65 20 73 61 6d 65  ould be the same
24540 20 61 73 0a 20 20 20 20 23 20 6e 6f 6e 2d 69 6e   as.    # non-in
24550 74 65 72 70 6f 6c 61 74 65 64 2e 0a 20 20 20 20  terpolated..    
24560 2e 74 20 63 6f 6e 66 69 67 75 72 65 20 2d 74 61  .t configure -ta
24570 62 73 20 24 70 72 65 63 69 73 65 74 61 62 0a 20  bs $precisetab. 
24580 20 20 20 75 70 64 61 74 65 0a 20 20 20 20 65 78     update.    ex
24590 70 72 20 7b 5b 6c 69 6e 64 65 78 20 24 72 65 73  pr {[lindex $res
245a0 20 30 5d 20 2d 20 5b 6c 69 6e 64 65 78 20 5b 2e   0] - [lindex [.
245b0 74 20 62 62 6f 78 20 31 2e 32 30 5d 20 30 5d 7d  t bbox 1.20] 0]}
245c0 0a 7d 20 7b 30 7d 0a 0a 2e 74 20 63 6f 6e 66 69  .} {0}...t confi
245d0 67 75 72 65 20 2d 77 72 61 70 20 63 68 61 72 20  gure -wrap char 
245e0 2d 74 61 62 73 20 7b 7d 20 2d 77 69 64 74 68 20  -tabs {} -width 
245f0 32 30 0a 75 70 64 61 74 65 0a 0a 74 65 73 74 20  20.update..test 
24600 74 65 78 74 44 69 73 70 2d 32 37 2e 38 20 7b 53  textDisp-27.8 {S
24610 69 7a 65 4f 66 54 61 62 20 70 72 6f 63 65 64 75  izeOfTab procedu
24620 72 65 2c 20 72 69 67 68 74 20 61 6c 69 67 6e 6d  re, right alignm
24630 65 6e 74 7d 20 7b 0a 20 20 20 20 2e 74 20 64 65  ent} {.    .t de
24640 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a 20 20 20  lete 1.0 end.   
24650 20 2e 74 20 69 6e 73 65 72 74 20 31 2e 30 20 61   .t insert 1.0 a
24660 5c 74 5c 74 78 79 7a 7a 79 61 62 63 0a 20 20 20  \t\txyzzyabc.   
24670 20 2e 74 20 74 61 67 20 64 65 6c 65 74 65 20 78   .t tag delete x
24680 0a 20 20 20 20 23 20 74 68 65 20 31 30 30 20 74  .    # the 100 t
24690 61 62 20 73 74 6f 70 20 70 72 65 76 65 6e 74 73  ab stop prevents
246a0 20 74 68 65 20 74 65 78 74 20 66 72 6f 6d 20 66   the text from f
246b0 69 74 74 69 6e 67 20 69 6e 74 6f 0a 20 20 20 20  itting into.    
246c0 23 20 74 68 65 20 66 69 72 73 74 20 6c 69 6e 65  # the first line
246d0 2e 0a 20 20 20 20 2e 74 20 74 61 67 20 63 6f 6e  ..    .t tag con
246e0 66 69 67 75 72 65 20 78 20 2d 74 61 62 73 20 7b  figure x -tabs {
246f0 31 30 30 20 6c 65 66 74 20 31 34 30 20 72 69 67  100 left 140 rig
24700 68 74 7d 0a 20 20 20 20 2e 74 20 74 61 67 20 61  ht}.    .t tag a
24710 64 64 20 78 20 31 2e 30 20 65 6e 64 0a 20 20 20  dd x 1.0 end.   
24720 20 23 20 73 65 63 6f 6e 64 20 7a 2c 20 73 65 63   # second z, sec
24730 6f 6e 64 20 79 0a 20 20 20 20 6c 69 73 74 20 5b  ond y.    list [
24740 2e 74 20 62 62 6f 78 20 31 2e 36 5d 20 5b 2e 74  .t bbox 1.6] [.t
24750 20 62 62 6f 78 20 31 2e 37 5d 0a 7d 20 5b 6c 69   bbox 1.7].} [li
24760 73 74 20 5c 0a 20 20 20 20 5b 6c 69 73 74 20 5b  st \.    [list [
24770 65 78 70 72 20 7b 24 70 61 64 78 2b 31 34 30 2d  expr {$padx+140-
24780 24 66 69 78 65 64 57 69 64 74 68 7d 5d 20 5b 65  $fixedWidth}] [e
24790 78 70 72 20 7b 24 70 61 64 79 7d 5d 20 24 66 69  xpr {$pady}] $fi
247a0 78 65 64 57 69 64 74 68 20 24 66 69 78 65 64 48  xedWidth $fixedH
247b0 65 69 67 68 74 5d 20 5c 0a 20 20 20 20 5b 6c 69  eight] \.    [li
247c0 73 74 20 24 70 61 64 78 20 5b 65 78 70 72 20 7b  st $padx [expr {
247d0 24 70 61 64 79 2b 24 66 69 78 65 64 48 65 69 67  $pady+$fixedHeig
247e0 68 74 7d 5d 20 24 66 69 78 65 64 57 69 64 74 68  ht}] $fixedWidth
247f0 20 24 66 69 78 65 64 48 65 69 67 68 74 5d 5d 0a   $fixedHeight]].
24800 0a 74 65 73 74 20 74 65 78 74 44 69 73 70 2d 32  .test textDisp-2
24810 37 2e 39 20 7b 53 69 7a 65 4f 66 54 61 62 20 70  7.9 {SizeOfTab p
24820 72 6f 63 65 64 75 72 65 2c 20 6c 65 66 74 20 61  rocedure, left a
24830 6c 69 67 6e 6d 65 6e 74 7d 20 7b 0a 20 20 20 20  lignment} {.    
24840 2e 74 20 64 65 6c 65 74 65 20 31 2e 30 20 65 6e  .t delete 1.0 en
24850 64 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20  d.    .t insert 
24860 31 2e 30 20 61 5c 74 78 79 7a 7a 79 61 62 63 0a  1.0 a\txyzzyabc.
24870 20 20 20 20 2e 74 20 74 61 67 20 64 65 6c 65 74      .t tag delet
24880 65 20 78 0a 20 20 20 20 2e 74 20 74 61 67 20 63  e x.    .t tag c
24890 6f 6e 66 69 67 75 72 65 20 78 20 2d 74 61 62 73  onfigure x -tabs
248a0 20 7b 31 32 30 7d 0a 20 20 20 20 2e 74 20 74 61   {120}.    .t ta
248b0 67 20 61 64 64 20 78 20 31 2e 30 20 65 6e 64 0a  g add x 1.0 end.
248c0 20 20 20 20 6c 69 73 74 20 5b 2e 74 20 62 62 6f      list [.t bbo
248d0 78 20 31 2e 33 5d 20 5b 2e 74 20 62 62 6f 78 20  x 1.3] [.t bbox 
248e0 31 2e 34 5d 0a 7d 20 5b 6c 69 73 74 20 5c 0a 20  1.4].} [list \. 
248f0 20 20 20 5b 6c 69 73 74 20 5b 65 78 70 72 20 7b     [list [expr {
24900 24 70 61 64 78 2b 31 32 30 2b 24 66 69 78 65 64  $padx+120+$fixed
24910 57 69 64 74 68 7d 5d 20 24 70 61 64 79 20 5c 0a  Width}] $pady \.
24920 20 20 20 20 20 20 20 20 5b 65 78 70 72 20 7b 24          [expr {$
24930 66 69 78 65 64 57 69 64 74 68 2b 28 5b 77 69 6e  fixedWidth+([win
24940 66 6f 20 77 69 64 74 68 20 2e 74 5d 2d 32 2a 24  fo width .t]-2*$
24950 70 61 64 78 2d 31 32 30 2d 32 2a 24 66 69 78 65  padx-120-2*$fixe
24960 64 57 69 64 74 68 29 7d 5d 20 24 66 69 78 65 64  dWidth)}] $fixed
24970 48 65 69 67 68 74 5d 20 5c 0a 20 20 20 20 5b 6c  Height] \.    [l
24980 69 73 74 20 24 70 61 64 78 20 5b 65 78 70 72 20  ist $padx [expr 
24990 7b 24 70 61 64 79 2b 24 66 69 78 65 64 48 65 69  {$pady+$fixedHei
249a0 67 68 74 7d 5d 20 24 66 69 78 65 64 57 69 64 74  ght}] $fixedWidt
249b0 68 20 24 66 69 78 65 64 48 65 69 67 68 74 5d 5d  h $fixedHeight]]
249c0 0a 0a 74 65 73 74 20 74 65 78 74 44 69 73 70 2d  ..test textDisp-
249d0 32 37 2e 31 30 20 7b 53 69 7a 65 4f 66 54 61 62  27.10 {SizeOfTab
249e0 20 70 72 6f 63 65 64 75 72 65 2c 20 6e 75 6d 65   procedure, nume
249f0 72 69 63 20 61 6c 69 67 6e 6d 65 6e 74 7d 20 2d  ric alignment} -
24a00 62 6f 64 79 20 7b 0a 20 20 20 20 2e 74 20 64 65  body {.    .t de
24a10 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a 20 20 20  lete 1.0 end.   
24a20 20 2e 74 20 69 6e 73 65 72 74 20 31 2e 30 20 61   .t insert 1.0 a
24a30 5c 74 31 32 33 2e 34 0a 20 20 20 20 2e 74 20 74  \t123.4.    .t t
24a40 61 67 20 64 65 6c 65 74 65 20 78 0a 20 20 20 20  ag delete x.    
24a50 23 20 6d 61 6b 65 20 72 6f 6f 6d 20 66 6f 72 20  # make room for 
24a60 61 6c 6c 20 63 68 61 72 61 63 74 65 72 73 0a 20  all characters. 
24a70 20 20 20 2e 74 20 74 61 67 20 63 6f 6e 66 69 67     .t tag config
24a80 75 72 65 20 78 20 2d 74 61 62 73 20 5b 65 78 70  ure x -tabs [exp
24a90 72 20 7b 24 66 69 78 65 64 57 69 64 74 68 2a 31  r {$fixedWidth*1
24aa0 34 7d 5d 0a 20 20 20 20 2e 74 20 74 61 67 20 61  4}].    .t tag a
24ab0 64 64 20 78 20 31 2e 30 20 65 6e 64 0a 20 20 20  dd x 1.0 end.   
24ac0 20 73 65 74 20 72 65 73 20 5b 6c 69 73 74 20 5b   set res [list [
24ad0 2e 74 20 62 62 6f 78 20 31 2e 35 5d 5d 0a 7d 20  .t bbox 1.5]].} 
24ae0 2d 72 65 73 75 6c 74 20 5b 6c 69 73 74 20 5c 0a  -result [list \.
24af0 20 20 20 20 5b 6c 69 73 74 20 5b 65 78 70 72 20      [list [expr 
24b00 7b 31 37 2a 24 66 69 78 65 64 57 69 64 74 68 2b  {17*$fixedWidth+
24b10 24 70 61 64 78 7d 5d 20 24 70 61 64 79 20 24 66  $padx}] $pady $f
24b20 69 78 65 64 57 69 64 74 68 20 24 66 69 78 65 64  ixedWidth $fixed
24b30 48 65 69 67 68 74 5d 5d 0a 0a 74 65 73 74 20 74  Height]]..test t
24b40 65 78 74 44 69 73 70 2d 32 37 2e 31 30 2e 31 20  extDisp-27.10.1 
24b50 7b 53 69 7a 65 4f 66 54 61 62 20 70 72 6f 63 65  {SizeOfTab proce
24b60 64 75 72 65 2c 20 6e 75 6d 65 72 69 63 20 61 6c  dure, numeric al
24b70 69 67 6e 6d 65 6e 74 2c 20 77 72 61 70 70 65 64  ignment, wrapped
24b80 7d 20 2d 62 6f 64 79 20 7b 0a 20 20 20 20 2e 74  } -body {.    .t
24b90 20 64 65 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a   delete 1.0 end.
24ba0 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20 31 2e      .t insert 1.
24bb0 30 20 61 5c 74 31 32 33 2e 34 0a 20 20 20 20 2e  0 a\t123.4.    .
24bc0 74 20 74 61 67 20 64 65 6c 65 74 65 20 78 0a 20  t tag delete x. 
24bd0 20 20 20 2e 74 20 74 61 67 20 63 6f 6e 66 69 67     .t tag config
24be0 75 72 65 20 78 20 2d 74 61 62 73 20 5b 65 78 70  ure x -tabs [exp
24bf0 72 20 7b 24 66 69 78 65 64 57 69 64 74 68 2a 31  r {$fixedWidth*1
24c00 37 7d 5d 0a 20 20 20 20 2e 74 20 74 61 67 20 61  7}].    .t tag a
24c10 64 64 20 78 20 31 2e 30 20 65 6e 64 0a 20 20 20  dd x 1.0 end.   
24c20 20 73 65 74 20 72 65 73 20 5b 6c 69 73 74 20 5b   set res [list [
24c30 2e 74 20 62 62 6f 78 20 31 2e 34 5d 20 5b 2e 74  .t bbox 1.4] [.t
24c40 20 62 62 6f 78 20 31 2e 36 5d 5d 0a 7d 20 2d 72   bbox 1.6]].} -r
24c50 65 73 75 6c 74 20 5b 6c 69 73 74 20 5c 0a 20 20  esult [list \.  
24c60 20 20 5b 6c 69 73 74 20 5b 65 78 70 72 20 7b 31    [list [expr {1
24c70 39 2a 24 66 69 78 65 64 57 69 64 74 68 2b 24 70  9*$fixedWidth+$p
24c80 61 64 78 7d 5d 20 24 70 61 64 79 20 24 66 69 78  adx}] $pady $fix
24c90 65 64 57 69 64 74 68 20 24 66 69 78 65 64 48 65  edWidth $fixedHe
24ca0 69 67 68 74 5d 20 5c 0a 20 20 20 20 5b 6c 69 73  ight] \.    [lis
24cb0 74 20 5b 65 78 70 72 20 7b 24 66 69 78 65 64 57  t [expr {$fixedW
24cc0 69 64 74 68 2b 24 70 61 64 78 7d 5d 20 5b 65 78  idth+$padx}] [ex
24cd0 70 72 20 7b 24 70 61 64 79 2b 24 66 69 78 65 64  pr {$pady+$fixed
24ce0 48 65 69 67 68 74 7d 5d 20 24 66 69 78 65 64 57  Height}] $fixedW
24cf0 69 64 74 68 20 24 66 69 78 65 64 48 65 69 67 68  idth $fixedHeigh
24d00 74 5d 5d 0a 0a 23 20 77 68 61 74 20 69 73 20 74  t]]..# what is t
24d10 68 69 73 20 73 75 70 70 6f 73 65 64 20 74 6f 20  his supposed to 
24d20 62 65 20 74 65 73 74 69 6e 67 3f 0a 23 20 64 6f  be testing?.# do
24d30 65 73 20 69 74 20 74 65 73 74 20 77 68 61 74 20  es it test what 
24d40 74 68 65 20 63 6f 6d 6d 65 6e 74 20 73 61 79 73  the comment says
24d50 3f 0a 74 65 73 74 20 74 65 78 74 44 69 73 70 2d  ?.test textDisp-
24d60 32 37 2e 31 31 20 7b 53 69 7a 65 4f 66 54 61 62  27.11 {SizeOfTab
24d70 20 70 72 6f 63 65 64 75 72 65 2c 20 6d 61 6b 69   procedure, maki
24d80 6e 67 20 74 61 62 73 20 61 74 20 6c 65 61 73 74  ng tabs at least
24d90 20 61 73 20 77 69 64 65 20 61 73 20 61 20 73 70   as wide as a sp
24da0 61 63 65 7d 20 7b 74 65 78 74 66 6f 6e 74 73 7d  ace} {textfonts}
24db0 20 7b 0a 20 20 20 20 2e 74 20 64 65 6c 65 74 65   {.    .t delete
24dc0 20 31 2e 30 20 65 6e 64 0a 20 20 20 20 2e 74 20   1.0 end.    .t 
24dd0 69 6e 73 65 72 74 20 31 2e 30 20 61 62 63 5c 74  insert 1.0 abc\t
24de0 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73  defghijklmnopqrs
24df0 74 0a 20 20 20 20 2e 74 20 74 61 67 20 64 65 6c  t.    .t tag del
24e00 65 74 65 20 78 0a 20 20 20 20 2e 74 20 74 61 67  ete x.    .t tag
24e10 20 63 6f 6e 66 69 67 75 72 65 20 78 20 2d 74 61   configure x -ta
24e20 62 73 20 7b 31 32 30 7d 0a 20 20 20 20 2e 74 20  bs {120}.    .t 
24e30 74 61 67 20 61 64 64 20 78 20 31 2e 30 20 65 6e  tag add x 1.0 en
24e40 64 0a 20 20 20 20 6c 69 73 74 20 5b 2e 74 20 62  d.    list [.t b
24e50 62 6f 78 20 31 2e 35 5d 20 5b 2e 74 20 62 62 6f  box 1.5] [.t bbo
24e60 78 20 31 2e 36 5d 0a 7d 20 5b 6c 69 73 74 20 5c  x 1.6].} [list \
24e70 0a 20 20 20 20 5b 6c 69 73 74 20 31 33 31 20 24  .    [list 131 $
24e80 70 61 64 79 20 31 33 20 24 66 69 78 65 64 48 65  pady 13 $fixedHe
24e90 69 67 68 74 5d 20 5c 0a 20 20 20 20 5b 6c 69 73  ight] \.    [lis
24ea0 74 20 24 70 61 64 78 20 5b 65 78 70 72 20 7b 24  t $padx [expr {$
24eb0 70 61 64 79 2b 24 66 69 78 65 64 48 65 69 67 68  pady+$fixedHeigh
24ec0 74 7d 5d 20 24 66 69 78 65 64 57 69 64 74 68 20  t}] $fixedWidth 
24ed0 24 66 69 78 65 64 48 65 69 67 68 74 5d 5d 0a 0a  $fixedHeight]]..
24ee0 70 72 6f 63 20 62 69 7a 61 72 72 65 5f 73 63 72  proc bizarre_scr
24ef0 6f 6c 6c 20 7b 61 72 67 73 7d 20 7b 0a 20 20 20  oll {args} {.   
24f00 20 2e 74 32 2e 74 20 64 65 6c 65 74 65 20 35 2e   .t2.t delete 5.
24f10 30 20 65 6e 64 0a 7d 0a 0a 74 65 73 74 20 74 65  0 end.}..test te
24f20 78 74 44 69 73 70 2d 32 38 2e 31 20 7b 22 79 76  xtDisp-28.1 {"yv
24f30 69 65 77 22 20 6f 70 74 69 6f 6e 20 77 69 74 68  iew" option with
24f40 20 62 69 7a 61 72 72 65 20 73 63 72 6f 6c 6c 20   bizarre scroll 
24f50 63 6f 6d 6d 61 6e 64 7d 20 2d 62 6f 64 79 20 7b  command} -body {
24f60 0a 20 20 20 20 63 61 74 63 68 20 7b 64 65 73 74  .    catch {dest
24f70 72 6f 79 20 2e 74 32 7d 0a 20 20 20 20 74 6f 70  roy .t2}.    top
24f80 6c 65 76 65 6c 20 2e 74 32 0a 20 20 20 20 74 65  level .t2.    te
24f90 78 74 20 2e 74 32 2e 74 20 2d 77 69 64 74 68 20  xt .t2.t -width 
24fa0 34 30 20 2d 68 65 69 67 68 74 20 34 0a 20 20 20  40 -height 4.   
24fb0 20 2e 74 32 2e 74 20 69 6e 73 65 72 74 20 65 6e   .t2.t insert en
24fc0 64 20 22 31 5c 6e 32 5c 6e 33 5c 6e 34 5c 6e 35  d "1\n2\n3\n4\n5
24fd0 5c 6e 36 5c 6e 37 5c 6e 38 5c 6e 22 0a 20 20 20  \n6\n7\n8\n".   
24fe0 20 70 61 63 6b 20 2e 74 32 2e 74 0a 20 20 20 20   pack .t2.t.    
24ff0 77 6d 20 67 65 6f 6d 65 74 72 79 20 2e 74 32 20  wm geometry .t2 
25000 2b 30 2b 30 0a 20 20 20 20 75 70 64 61 74 65 0a  +0+0.    update.
25010 20 20 20 20 2e 74 32 2e 74 20 63 6f 6e 66 69 67      .t2.t config
25020 75 72 65 20 2d 79 73 63 72 6f 6c 6c 63 6f 6d 6d  ure -yscrollcomm
25030 61 6e 64 20 62 69 7a 61 72 72 65 5f 73 63 72 6f  and bizarre_scro
25040 6c 6c 0a 20 20 20 20 2e 74 32 2e 74 20 79 76 69  ll.    .t2.t yvi
25050 65 77 20 31 30 30 2e 30 0a 20 20 20 20 73 65 74  ew 100.0.    set
25060 20 72 65 73 75 6c 74 20 5b 2e 74 32 2e 74 20 69   result [.t2.t i
25070 6e 64 65 78 20 40 30 2c 30 5d 0a 20 20 20 20 75  ndex @0,0].    u
25080 70 64 61 74 65 0a 20 20 20 20 6c 61 70 70 65 6e  pdate.    lappen
25090 64 20 72 65 73 75 6c 74 20 5b 2e 74 32 2e 74 20  d result [.t2.t 
250a0 69 6e 64 65 78 20 40 30 2c 30 5d 0a 7d 20 2d 72  index @0,0].} -r
250b0 65 73 75 6c 74 20 7b 36 2e 30 20 32 2e 30 7d 0a  esult {6.0 2.0}.
250c0 0a 74 65 73 74 20 74 65 78 74 44 69 73 70 2d 32  .test textDisp-2
250d0 39 2e 31 20 7b 6d 69 73 63 65 6c 6c 61 6e 65 6f  9.1 {miscellaneo
250e0 75 73 3a 20 6c 69 6e 65 73 20 77 72 61 70 20 62  us: lines wrap b
250f0 75 74 20 61 72 65 20 73 74 69 6c 6c 20 74 6f 6f  ut are still too
25100 20 6c 6f 6e 67 7d 20 5c 0a 20 20 20 20 20 20 20   long} \.       
25110 20 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20 74 65   -constraints te
25120 78 74 66 6f 6e 74 73 20 2d 62 6f 64 79 20 7b 0a  xtfonts -body {.
25130 20 20 20 20 63 61 74 63 68 20 7b 64 65 73 74 72      catch {destr
25140 6f 79 20 2e 74 32 7d 0a 20 20 20 20 74 6f 70 6c  oy .t2}.    topl
25150 65 76 65 6c 20 2e 74 32 0a 20 20 20 20 77 6d 20  evel .t2.    wm 
25160 67 65 6f 6d 65 74 72 79 20 2e 74 32 20 2b 30 2b  geometry .t2 +0+
25170 30 0a 20 20 20 20 74 65 78 74 20 2e 74 32 2e 74  0.    text .t2.t
25180 20 2d 77 69 64 74 68 20 32 30 20 2d 68 65 69 67   -width 20 -heig
25190 68 74 20 31 30 20 2d 66 6f 6e 74 20 24 66 69 78  ht 10 -font $fix
251a0 65 64 46 6f 6e 74 20 5c 0a 09 20 20 20 20 2d 77  edFont \..    -w
251b0 72 61 70 20 63 68 61 72 20 2d 78 73 63 72 6f 6c  rap char -xscrol
251c0 6c 63 6f 6d 6d 61 6e 64 20 22 2e 74 32 2e 73 20  lcommand ".t2.s 
251d0 73 65 74 22 20 5c 0a 20 20 20 20 20 20 20 20 20  set" \.         
251e0 20 20 20 2d 70 61 64 78 20 30 20 2d 70 61 64 79     -padx 0 -pady
251f0 20 30 20 2d 68 69 67 68 6c 69 67 68 74 74 68 69   0 -highlightthi
25200 63 6b 6e 65 73 73 20 30 20 2d 62 6f 72 64 65 72  ckness 0 -border
25210 77 69 64 74 68 20 30 0a 20 20 20 20 70 61 63 6b  width 0.    pack
25220 20 2e 74 32 2e 74 20 2d 73 69 64 65 20 74 6f 70   .t2.t -side top
25230 0a 20 20 20 20 73 63 72 6f 6c 6c 62 61 72 20 2e  .    scrollbar .
25240 74 32 2e 73 20 2d 6f 72 69 65 6e 74 20 68 6f 72  t2.s -orient hor
25250 69 7a 6f 6e 74 61 6c 20 2d 63 6f 6d 6d 61 6e 64  izontal -command
25260 20 22 2e 74 32 2e 74 20 78 76 69 65 77 22 0a 20   ".t2.t xview". 
25270 20 20 20 70 61 63 6b 20 2e 74 32 2e 73 20 2d 73     pack .t2.s -s
25280 69 64 65 20 62 6f 74 74 6f 6d 20 2d 66 69 6c 6c  ide bottom -fill
25290 20 78 0a 20 20 20 20 2e 74 32 2e 74 20 69 6e 73   x.    .t2.t ins
252a0 65 72 74 20 65 6e 64 20 31 32 33 0a 20 20 20 20  ert end 123.    
252b0 66 72 61 6d 65 20 2e 74 32 2e 74 2e 66 20 2d 77  frame .t2.t.f -w
252c0 69 64 74 68 20 33 30 30 20 2d 68 65 69 67 68 74  idth 300 -height
252d0 20 35 30 20 5c 0a 20 20 20 20 20 20 20 20 2d 72   50 \.        -r
252e0 65 6c 69 65 66 20 72 61 69 73 65 64 0a 20 20 20  elief raised.   
252f0 20 2e 74 32 2e 74 20 77 69 6e 64 6f 77 20 63 72   .t2.t window cr
25300 65 61 74 65 20 31 2e 31 20 2d 77 69 6e 64 6f 77  eate 1.1 -window
25310 20 2e 74 32 2e 74 2e 66 0a 20 20 20 20 75 70 64   .t2.t.f.    upd
25320 61 74 65 0a 20 20 20 20 73 65 74 20 72 65 73 20  ate.    set res 
25330 5b 6c 69 73 74 20 5b 2e 74 32 2e 74 20 78 76 69  [list [.t2.t xvi
25340 65 77 5d 20 5b 77 69 6e 66 6f 20 67 65 6f 6d 20  ew] [winfo geom 
25350 2e 74 32 2e 74 2e 66 5d 20 5b 2e 74 32 2e 74 20  .t2.t.f] [.t2.t 
25360 62 62 6f 78 20 31 2e 33 5d 5d 0a 7d 20 2d 72 65  bbox 1.3]].} -re
25370 73 75 6c 74 20 5b 6c 69 73 74 20 5c 0a 20 20 20  sult [list \.   
25380 20 5b 6c 69 73 74 20 30 2e 30 20 5b 65 78 70 72   [list 0.0 [expr
25390 20 7b 32 30 2e 30 2a 24 66 69 78 65 64 57 69 64   {20.0*$fixedWid
253a0 74 68 2f 33 30 30 7d 5d 5d 20 5c 0a 20 20 20 20  th/300}]] \.    
253b0 33 30 30 78 35 30 2b 30 2b 24 66 69 78 65 64 48  300x50+0+$fixedH
253c0 65 69 67 68 74 20 5c 0a 20 20 20 20 5b 6c 69 73  eight \.    [lis
253d0 74 20 24 66 69 78 65 64 57 69 64 74 68 20 5b 65  t $fixedWidth [e
253e0 78 70 72 20 7b 24 66 69 78 65 64 48 65 69 67 68  xpr {$fixedHeigh
253f0 74 2b 35 30 7d 5d 20 24 66 69 78 65 64 57 69 64  t+50}] $fixedWid
25400 74 68 20 24 66 69 78 65 64 48 65 69 67 68 74 5d  th $fixedHeight]
25410 5d 0a 0a 74 65 73 74 20 74 65 78 74 44 69 73 70  ]..test textDisp
25420 2d 32 39 2e 32 20 7b 6d 69 73 63 65 6c 6c 61 6e  -29.2 {miscellan
25430 65 6f 75 73 3a 20 6c 69 6e 65 73 20 77 72 61 70  eous: lines wrap
25440 20 62 75 74 20 61 72 65 20 73 74 69 6c 6c 20 74   but are still t
25450 6f 6f 20 6c 6f 6e 67 7d 20 7b 74 65 78 74 66 6f  oo long} {textfo
25460 6e 74 73 7d 20 7b 0a 20 20 20 20 63 61 74 63 68  nts} {.    catch
25470 20 7b 64 65 73 74 72 6f 79 20 2e 74 32 7d 0a 20   {destroy .t2}. 
25480 20 20 20 74 6f 70 6c 65 76 65 6c 20 2e 74 32 0a     toplevel .t2.
25490 20 20 20 20 77 6d 20 67 65 6f 6d 65 74 72 79 20      wm geometry 
254a0 2e 74 32 20 2b 30 2b 30 0a 20 20 20 20 74 65 78  .t2 +0+0.    tex
254b0 74 20 2e 74 32 2e 74 20 2d 77 69 64 74 68 20 32  t .t2.t -width 2
254c0 30 20 2d 68 65 69 67 68 74 20 31 30 20 2d 66 6f  0 -height 10 -fo
254d0 6e 74 20 24 66 69 78 65 64 46 6f 6e 74 20 5c 0a  nt $fixedFont \.
254e0 09 20 20 20 20 2d 77 72 61 70 20 63 68 61 72 20  .    -wrap char 
254f0 2d 78 73 63 72 6f 6c 6c 63 6f 6d 6d 61 6e 64 20  -xscrollcommand 
25500 22 2e 74 32 2e 73 20 73 65 74 22 20 5c 0a 20 20  ".t2.s set" \.  
25510 20 20 20 20 20 20 20 20 20 20 2d 70 61 64 78 20            -padx 
25520 30 20 2d 70 61 64 79 20 30 20 2d 68 69 67 68 6c  0 -pady 0 -highl
25530 69 67 68 74 74 68 69 63 6b 6e 65 73 73 20 30 20  ightthickness 0 
25540 2d 62 6f 72 64 65 72 77 69 64 74 68 20 30 0a 20  -borderwidth 0. 
25550 20 20 20 70 61 63 6b 20 2e 74 32 2e 74 20 2d 73     pack .t2.t -s
25560 69 64 65 20 74 6f 70 0a 20 20 20 20 73 63 72 6f  ide top.    scro
25570 6c 6c 62 61 72 20 2e 74 32 2e 73 20 2d 6f 72 69  llbar .t2.s -ori
25580 65 6e 74 20 68 6f 72 69 7a 6f 6e 74 61 6c 20 2d  ent horizontal -
25590 63 6f 6d 6d 61 6e 64 20 22 2e 74 32 2e 74 20 78  command ".t2.t x
255a0 76 69 65 77 22 0a 20 20 20 20 70 61 63 6b 20 2e  view".    pack .
255b0 74 32 2e 73 20 2d 73 69 64 65 20 62 6f 74 74 6f  t2.s -side botto
255c0 6d 20 2d 66 69 6c 6c 20 78 0a 20 20 20 20 2e 74  m -fill x.    .t
255d0 32 2e 74 20 69 6e 73 65 72 74 20 65 6e 64 20 31  2.t insert end 1
255e0 32 33 0a 20 20 20 20 66 72 61 6d 65 20 2e 74 32  23.    frame .t2
255f0 2e 74 2e 66 20 2d 77 69 64 74 68 20 33 30 30 20  .t.f -width 300 
25600 2d 68 65 69 67 68 74 20 35 30 20 2d 62 64 20 32  -height 50 -bd 2
25610 20 2d 72 65 6c 69 65 66 20 72 61 69 73 65 64 0a   -relief raised.
25620 20 20 20 20 2e 74 32 2e 74 20 77 69 6e 64 6f 77      .t2.t window
25630 20 63 72 65 61 74 65 20 31 2e 31 20 2d 77 69 6e   create 1.1 -win
25640 64 6f 77 20 2e 74 32 2e 74 2e 66 0a 20 20 20 20  dow .t2.t.f.    
25650 75 70 64 61 74 65 0a 20 20 20 20 2e 74 32 2e 74  update.    .t2.t
25660 20 78 76 69 65 77 20 73 63 72 6f 6c 6c 20 31 20   xview scroll 1 
25670 75 6e 69 74 0a 20 20 20 20 75 70 64 61 74 65 0a  unit.    update.
25680 20 20 20 20 6c 69 73 74 20 5b 2e 74 32 2e 74 20      list [.t2.t 
25690 78 76 69 65 77 5d 20 5b 77 69 6e 66 6f 20 67 65  xview] [winfo ge
256a0 6f 6d 20 2e 74 32 2e 74 2e 66 5d 20 5b 2e 74 32  om .t2.t.f] [.t2
256b0 2e 74 20 62 62 6f 78 20 31 2e 33 5d 0a 7d 20 5b  .t bbox 1.3].} [
256c0 6c 69 73 74 20 5c 0a 20 20 20 20 5b 6c 69 73 74  list \.    [list
256d0 20 5b 65 78 70 72 20 7b 31 2e 30 2a 24 66 69 78   [expr {1.0*$fix
256e0 65 64 57 69 64 74 68 2f 33 30 30 7d 5d 20 5b 65  edWidth/300}] [e
256f0 78 70 72 20 7b 32 31 2e 30 2a 24 66 69 78 65 64  xpr {21.0*$fixed
25700 57 69 64 74 68 2f 33 30 30 7d 5d 5d 20 5c 0a 20  Width/300}]] \. 
25710 20 20 20 33 30 30 78 35 30 2b 5b 65 78 70 72 20     300x50+[expr 
25720 7b 30 2d 24 66 69 78 65 64 57 69 64 74 68 7d 5d  {0-$fixedWidth}]
25730 2b 24 66 69 78 65 64 48 65 69 67 68 74 20 5b 6c  +$fixedHeight [l
25740 69 73 74 20 30 20 5b 65 78 70 72 20 7b 24 66 69  ist 0 [expr {$fi
25750 78 65 64 48 65 69 67 68 74 2b 35 30 7d 5d 20 24  xedHeight+50}] $
25760 66 69 78 65 64 57 69 64 74 68 20 24 66 69 78 65  fixedWidth $fixe
25770 64 48 65 69 67 68 74 5d 5d 0a 0a 74 65 73 74 20  dHeight]]..test 
25780 74 65 78 74 44 69 73 70 2d 32 39 2e 32 2e 31 20  textDisp-29.2.1 
25790 7b 6d 69 73 63 65 6c 6c 61 6e 65 6f 75 73 3a 20  {miscellaneous: 
257a0 6c 69 6e 65 73 20 77 72 61 70 20 62 75 74 20 61  lines wrap but a
257b0 72 65 20 73 74 69 6c 6c 20 74 6f 6f 20 6c 6f 6e  re still too lon
257c0 67 7d 20 7b 74 65 78 74 66 6f 6e 74 73 7d 20 7b  g} {textfonts} {
257d0 0a 20 20 20 20 63 61 74 63 68 20 7b 64 65 73 74  .    catch {dest
257e0 72 6f 79 20 2e 74 32 7d 0a 20 20 20 20 74 6f 70  roy .t2}.    top
257f0 6c 65 76 65 6c 20 2e 74 32 0a 20 20 20 20 77 6d  level .t2.    wm
25800 20 67 65 6f 6d 65 74 72 79 20 2e 74 32 20 2b 30   geometry .t2 +0
25810 2b 30 0a 20 20 20 20 74 65 78 74 20 2e 74 32 2e  +0.    text .t2.
25820 74 20 2d 77 69 64 74 68 20 32 30 20 2d 68 65 69  t -width 20 -hei
25830 67 68 74 20 31 30 20 2d 66 6f 6e 74 20 24 66 69  ght 10 -font $fi
25840 78 65 64 46 6f 6e 74 20 5c 0a 09 20 20 20 20 2d  xedFont \..    -
25850 77 72 61 70 20 6e 6f 6e 65 20 2d 78 73 63 72 6f  wrap none -xscro
25860 6c 6c 63 6f 6d 6d 61 6e 64 20 22 2e 74 32 2e 73  llcommand ".t2.s
25870 20 73 65 74 22 0a 20 20 20 20 70 61 63 6b 20 2e   set".    pack .
25880 74 32 2e 74 20 2d 73 69 64 65 20 74 6f 70 0a 20  t2.t -side top. 
25890 20 20 20 73 63 72 6f 6c 6c 62 61 72 20 2e 74 32     scrollbar .t2
258a0 2e 73 20 2d 6f 72 69 65 6e 74 20 68 6f 72 69 7a  .s -orient horiz
258b0 6f 6e 74 61 6c 20 2d 63 6f 6d 6d 61 6e 64 20 22  ontal -command "
258c0 2e 74 32 2e 74 20 78 76 69 65 77 22 0a 20 20 20  .t2.t xview".   
258d0 20 70 61 63 6b 20 2e 74 32 2e 73 20 2d 73 69 64   pack .t2.s -sid
258e0 65 20 62 6f 74 74 6f 6d 20 2d 66 69 6c 6c 20 78  e bottom -fill x
258f0 0a 20 20 20 20 2e 74 32 2e 74 20 69 6e 73 65 72  .    .t2.t inser
25900 74 20 65 6e 64 20 31 5c 6e 0a 20 20 20 20 2e 74  t end 1\n.    .t
25910 32 2e 74 20 69 6e 73 65 72 74 20 65 6e 64 20 5b  2.t insert end [
25920 73 74 72 69 6e 67 20 72 65 70 65 61 74 20 22 61  string repeat "a
25930 62 63 22 20 33 30 5d 0a 20 20 20 20 75 70 64 61  bc" 30].    upda
25940 74 65 0a 20 20 20 20 2e 74 32 2e 74 20 78 76 69  te.    .t2.t xvi
25950 65 77 20 73 63 72 6f 6c 6c 20 35 20 75 6e 69 74  ew scroll 5 unit
25960 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20 20 20  .    update.    
25970 2e 74 32 2e 74 20 78 76 69 65 77 0a 7d 20 5b 6c  .t2.t xview.} [l
25980 69 73 74 20 5b 65 78 70 72 20 7b 35 2e 30 2f 39  ist [expr {5.0/9
25990 30 7d 5d 20 5b 65 78 70 72 20 7b 32 35 2e 30 2f  0}] [expr {25.0/
259a0 39 30 7d 5d 5d 0a 0a 74 65 73 74 20 74 65 78 74  90}]]..test text
259b0 44 69 73 70 2d 32 39 2e 32 2e 32 20 7b 6d 69 73  Disp-29.2.2 {mis
259c0 63 65 6c 6c 61 6e 65 6f 75 73 3a 20 6c 69 6e 65  cellaneous: line
259d0 73 20 77 72 61 70 20 62 75 74 20 61 72 65 20 73  s wrap but are s
259e0 74 69 6c 6c 20 74 6f 6f 20 6c 6f 6e 67 7d 20 7b  till too long} {
259f0 74 65 78 74 66 6f 6e 74 73 7d 20 7b 0a 20 20 20  textfonts} {.   
25a00 20 63 61 74 63 68 20 7b 64 65 73 74 72 6f 79 20   catch {destroy 
25a10 2e 74 32 7d 0a 20 20 20 20 74 6f 70 6c 65 76 65  .t2}.    topleve
25a20 6c 20 2e 74 32 0a 20 20 20 20 77 6d 20 67 65 6f  l .t2.    wm geo
25a30 6d 65 74 72 79 20 2e 74 32 20 2b 30 2b 30 0a 20  metry .t2 +0+0. 
25a40 20 20 20 74 65 78 74 20 2e 74 32 2e 74 20 2d 77     text .t2.t -w
25a50 69 64 74 68 20 32 30 20 2d 68 65 69 67 68 74 20  idth 20 -height 
25a60 31 30 20 2d 66 6f 6e 74 20 24 66 69 78 65 64 46  10 -font $fixedF
25a70 6f 6e 74 20 5c 0a 09 20 20 20 20 2d 77 72 61 70  ont \..    -wrap
25a80 20 63 68 61 72 20 2d 78 73 63 72 6f 6c 6c 63 6f   char -xscrollco
25a90 6d 6d 61 6e 64 20 22 2e 74 32 2e 73 20 73 65 74  mmand ".t2.s set
25aa0 22 0a 20 20 20 20 70 61 63 6b 20 2e 74 32 2e 74  ".    pack .t2.t
25ab0 20 2d 73 69 64 65 20 74 6f 70 0a 20 20 20 20 73   -side top.    s
25ac0 63 72 6f 6c 6c 62 61 72 20 2e 74 32 2e 73 20 2d  crollbar .t2.s -
25ad0 6f 72 69 65 6e 74 20 68 6f 72 69 7a 6f 6e 74 61  orient horizonta
25ae0 6c 20 2d 63 6f 6d 6d 61 6e 64 20 22 2e 74 32 2e  l -command ".t2.
25af0 74 20 78 76 69 65 77 22 0a 20 20 20 20 70 61 63  t xview".    pac
25b00 6b 20 2e 74 32 2e 73 20 2d 73 69 64 65 20 62 6f  k .t2.s -side bo
25b10 74 74 6f 6d 20 2d 66 69 6c 6c 20 78 0a 20 20 20  ttom -fill x.   
25b20 20 2e 74 32 2e 74 20 69 6e 73 65 72 74 20 65 6e   .t2.t insert en
25b30 64 20 31 32 33 0a 20 20 20 20 66 72 61 6d 65 20  d 123.    frame 
25b40 2e 74 32 2e 74 2e 66 20 2d 77 69 64 74 68 20 33  .t2.t.f -width 3
25b50 30 30 20 2d 68 65 69 67 68 74 20 35 30 20 2d 62  00 -height 50 -b
25b60 64 20 32 20 2d 72 65 6c 69 65 66 20 72 61 69 73  d 2 -relief rais
25b70 65 64 0a 20 20 20 20 2e 74 32 2e 74 20 77 69 6e  ed.    .t2.t win
25b80 64 6f 77 20 63 72 65 61 74 65 20 31 2e 31 20 2d  dow create 1.1 -
25b90 77 69 6e 64 6f 77 20 2e 74 32 2e 74 2e 66 0a 20  window .t2.t.f. 
25ba0 20 20 20 75 70 64 61 74 65 0a 20 20 20 20 2e 74     update.    .t
25bb0 32 2e 74 20 78 76 69 65 77 20 73 63 72 6f 6c 6c  2.t xview scroll
25bc0 20 32 20 75 6e 69 74 0a 20 20 20 20 75 70 64 61   2 unit.    upda
25bd0 74 65 0a 20 20 20 20 6c 69 73 74 20 5b 2e 74 32  te.    list [.t2
25be0 2e 74 20 78 76 69 65 77 5d 20 5b 77 69 6e 66 6f  .t xview] [winfo
25bf0 20 67 65 6f 6d 20 2e 74 32 2e 74 2e 66 5d 20 5b   geom .t2.t.f] [
25c00 2e 74 32 2e 74 20 62 62 6f 78 20 31 2e 33 5d 0a  .t2.t bbox 1.3].
25c10 7d 20 5b 6c 69 73 74 20 5b 6c 69 73 74 20 5b 65  } [list [list [e
25c20 78 70 72 20 7b 32 2e 30 2a 24 66 69 78 65 64 57  xpr {2.0*$fixedW
25c30 69 64 74 68 2f 33 30 30 7d 5d 20 5b 65 78 70 72  idth/300}] [expr
25c40 20 7b 32 32 2e 30 2a 24 66 69 78 65 64 57 69 64   {22.0*$fixedWid
25c50 74 68 2f 33 30 30 7d 5d 5d 20 33 30 30 78 35 30  th/300}]] 300x50
25c60 2b 5b 65 78 70 72 20 7b 24 74 77 62 77 20 2b 20  +[expr {$twbw + 
25c70 24 74 77 68 74 20 2b 20 31 20 2d 20 32 2a 24 66  $twht + 1 - 2*$f
25c80 69 78 65 64 57 69 64 74 68 7d 5d 2b 5b 65 78 70  ixedWidth}]+[exp
25c90 72 20 7b 24 74 77 62 77 20 2b 20 24 74 77 68 74  r {$twbw + $twht
25ca0 20 2b 20 24 66 69 78 65 64 48 65 69 67 68 74 20   + $fixedHeight 
25cb0 2b 20 31 7d 5d 20 7b 7d 5d 0a 0a 74 65 73 74 20  + 1}] {}]..test 
25cc0 74 65 78 74 44 69 73 70 2d 32 39 2e 32 2e 33 20  textDisp-29.2.3 
25cd0 7b 6d 69 73 63 65 6c 6c 61 6e 65 6f 75 73 3a 20  {miscellaneous: 
25ce0 6c 69 6e 65 73 20 77 72 61 70 20 62 75 74 20 61  lines wrap but a
25cf0 72 65 20 73 74 69 6c 6c 20 74 6f 6f 20 6c 6f 6e  re still too lon
25d00 67 7d 20 7b 74 65 78 74 66 6f 6e 74 73 7d 20 7b  g} {textfonts} {
25d10 0a 20 20 20 20 63 61 74 63 68 20 7b 64 65 73 74  .    catch {dest
25d20 72 6f 79 20 2e 74 32 7d 0a 20 20 20 20 74 6f 70  roy .t2}.    top
25d30 6c 65 76 65 6c 20 2e 74 32 0a 20 20 20 20 77 6d  level .t2.    wm
25d40 20 67 65 6f 6d 65 74 72 79 20 2e 74 32 20 2b 30   geometry .t2 +0
25d50 2b 30 0a 20 20 20 20 74 65 78 74 20 2e 74 32 2e  +0.    text .t2.
25d60 74 20 2d 77 69 64 74 68 20 32 30 20 2d 68 65 69  t -width 20 -hei
25d70 67 68 74 20 31 30 20 2d 66 6f 6e 74 20 24 66 69  ght 10 -font $fi
25d80 78 65 64 46 6f 6e 74 20 5c 0a 09 20 20 20 20 2d  xedFont \..    -
25d90 77 72 61 70 20 63 68 61 72 20 2d 78 73 63 72 6f  wrap char -xscro
25da0 6c 6c 63 6f 6d 6d 61 6e 64 20 22 2e 74 32 2e 73  llcommand ".t2.s
25db0 20 73 65 74 22 0a 20 20 20 20 70 61 63 6b 20 2e   set".    pack .
25dc0 74 32 2e 74 20 2d 73 69 64 65 20 74 6f 70 0a 20  t2.t -side top. 
25dd0 20 20 20 73 63 72 6f 6c 6c 62 61 72 20 2e 74 32     scrollbar .t2
25de0 2e 73 20 2d 6f 72 69 65 6e 74 20 68 6f 72 69 7a  .s -orient horiz
25df0 6f 6e 74 61 6c 20 2d 63 6f 6d 6d 61 6e 64 20 22  ontal -command "
25e00 2e 74 32 2e 74 20 78 76 69 65 77 22 0a 20 20 20  .t2.t xview".   
25e10 20 70 61 63 6b 20 2e 74 32 2e 73 20 2d 73 69 64   pack .t2.s -sid
25e20 65 20 62 6f 74 74 6f 6d 20 2d 66 69 6c 6c 20 78  e bottom -fill x
25e30 0a 20 20 20 20 2e 74 32 2e 74 20 69 6e 73 65 72  .    .t2.t inser
25e40 74 20 65 6e 64 20 31 32 33 0a 20 20 20 20 66 72  t end 123.    fr
25e50 61 6d 65 20 2e 74 32 2e 74 2e 66 20 2d 77 69 64  ame .t2.t.f -wid
25e60 74 68 20 33 30 30 20 2d 68 65 69 67 68 74 20 35  th 300 -height 5
25e70 30 20 2d 62 64 20 32 20 2d 72 65 6c 69 65 66 20  0 -bd 2 -relief 
25e80 72 61 69 73 65 64 0a 20 20 20 20 2e 74 32 2e 74  raised.    .t2.t
25e90 20 77 69 6e 64 6f 77 20 63 72 65 61 74 65 20 31   window create 1
25ea0 2e 31 20 2d 77 69 6e 64 6f 77 20 2e 74 32 2e 74  .1 -window .t2.t
25eb0 2e 66 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20  .f.    update.  
25ec0 20 20 2e 74 32 2e 74 20 78 76 69 65 77 20 73 63    .t2.t xview sc
25ed0 72 6f 6c 6c 20 37 20 70 69 78 65 6c 73 0a 20 20  roll 7 pixels.  
25ee0 20 20 75 70 64 61 74 65 0a 20 20 20 20 6c 69 73    update.    lis
25ef0 74 20 5b 2e 74 32 2e 74 20 78 76 69 65 77 5d 20  t [.t2.t xview] 
25f00 5b 77 69 6e 66 6f 20 67 65 6f 6d 20 2e 74 32 2e  [winfo geom .t2.
25f10 74 2e 66 5d 20 5b 2e 74 32 2e 74 20 62 62 6f 78  t.f] [.t2.t bbox
25f20 20 31 2e 33 5d 0a 7d 20 5b 6c 69 73 74 20 5b 6c   1.3].} [list [l
25f30 69 73 74 20 5b 65 78 70 72 20 7b 37 2e 30 2f 33  ist [expr {7.0/3
25f40 30 30 7d 5d 20 5b 65 78 70 72 20 7b 28 32 30 2e  00}] [expr {(20.
25f50 30 2a 24 66 69 78 65 64 57 69 64 74 68 20 2b 20  0*$fixedWidth + 
25f60 37 29 2f 33 30 30 7d 5d 5d 20 33 30 30 78 35 30  7)/300}]] 300x50
25f70 2b 5b 65 78 70 72 20 7b 24 74 77 62 77 20 2b 20  +[expr {$twbw + 
25f80 24 74 77 68 74 20 2b 20 31 20 2d 20 37 7d 5d 2b  $twht + 1 - 7}]+
25f90 5b 65 78 70 72 20 7b 24 74 77 62 77 20 2b 20 24  [expr {$twbw + $
25fa0 74 77 68 74 20 2b 20 24 66 69 78 65 64 48 65 69  twht + $fixedHei
25fb0 67 68 74 20 2b 20 31 7d 5d 20 5b 6c 69 73 74 20  ght + 1}] [list 
25fc0 5b 65 78 70 72 20 7b 24 74 77 62 77 20 2b 20 24  [expr {$twbw + $
25fd0 74 77 68 74 20 2b 20 24 66 69 78 65 64 57 69 64  twht + $fixedWid
25fe0 74 68 20 2b 20 31 20 2d 20 37 7d 5d 20 5b 65 78  th + 1 - 7}] [ex
25ff0 70 72 20 7b 24 74 77 62 77 20 2b 20 24 74 77 68  pr {$twbw + $twh
26000 74 20 2b 20 24 66 69 78 65 64 48 65 69 67 68 74  t + $fixedHeight
26010 20 2b 20 35 30 20 2b 20 31 7d 5d 20 24 66 69 78   + 50 + 1}] $fix
26020 65 64 57 69 64 74 68 20 24 66 69 78 65 64 48 65  edWidth $fixedHe
26030 69 67 68 74 5d 5d 0a 74 65 73 74 20 74 65 78 74  ight]].test text
26040 44 69 73 70 2d 32 39 2e 32 2e 34 20 7b 6d 69 73  Disp-29.2.4 {mis
26050 63 65 6c 6c 61 6e 65 6f 75 73 3a 20 6c 69 6e 65  cellaneous: line
26060 73 20 77 72 61 70 20 62 75 74 20 61 72 65 20 73  s wrap but are s
26070 74 69 6c 6c 20 74 6f 6f 20 6c 6f 6e 67 7d 20 7b  till too long} {
26080 74 65 78 74 66 6f 6e 74 73 7d 20 7b 0a 20 20 20  textfonts} {.   
26090 20 63 61 74 63 68 20 7b 64 65 73 74 72 6f 79 20   catch {destroy 
260a0 2e 74 32 7d 0a 20 20 20 20 74 6f 70 6c 65 76 65  .t2}.    topleve
260b0 6c 20 2e 74 32 0a 20 20 20 20 77 6d 20 67 65 6f  l .t2.    wm geo
260c0 6d 65 74 72 79 20 2e 74 32 20 2b 30 2b 30 0a 20  metry .t2 +0+0. 
260d0 20 20 20 74 65 78 74 20 2e 74 32 2e 74 20 2d 77     text .t2.t -w
260e0 69 64 74 68 20 32 30 20 2d 68 65 69 67 68 74 20  idth 20 -height 
260f0 31 30 20 2d 66 6f 6e 74 20 24 66 69 78 65 64 46  10 -font $fixedF
26100 6f 6e 74 20 5c 0a 09 20 20 20 20 2d 77 72 61 70  ont \..    -wrap
26110 20 63 68 61 72 20 2d 78 73 63 72 6f 6c 6c 63 6f   char -xscrollco
26120 6d 6d 61 6e 64 20 22 2e 74 32 2e 73 20 73 65 74  mmand ".t2.s set
26130 22 0a 20 20 20 20 70 61 63 6b 20 2e 74 32 2e 74  ".    pack .t2.t
26140 20 2d 73 69 64 65 20 74 6f 70 0a 20 20 20 20 73   -side top.    s
26150 63 72 6f 6c 6c 62 61 72 20 2e 74 32 2e 73 20 2d  crollbar .t2.s -
26160 6f 72 69 65 6e 74 20 68 6f 72 69 7a 6f 6e 74 61  orient horizonta
26170 6c 20 2d 63 6f 6d 6d 61 6e 64 20 22 2e 74 32 2e  l -command ".t2.
26180 74 20 78 76 69 65 77 22 0a 20 20 20 20 70 61 63  t xview".    pac
26190 6b 20 2e 74 32 2e 73 20 2d 73 69 64 65 20 62 6f  k .t2.s -side bo
261a0 74 74 6f 6d 20 2d 66 69 6c 6c 20 78 0a 20 20 20  ttom -fill x.   
261b0 20 2e 74 32 2e 74 20 69 6e 73 65 72 74 20 65 6e   .t2.t insert en
261c0 64 20 31 32 33 0a 20 20 20 20 66 72 61 6d 65 20  d 123.    frame 
261d0 2e 74 32 2e 74 2e 66 20 2d 77 69 64 74 68 20 33  .t2.t.f -width 3
261e0 30 30 20 2d 68 65 69 67 68 74 20 35 30 20 2d 62  00 -height 50 -b
261f0 64 20 32 20 2d 72 65 6c 69 65 66 20 72 61 69 73  d 2 -relief rais
26200 65 64 0a 20 20 20 20 2e 74 32 2e 74 20 77 69 6e  ed.    .t2.t win
26210 64 6f 77 20 63 72 65 61 74 65 20 31 2e 31 20 2d  dow create 1.1 -
26220 77 69 6e 64 6f 77 20 2e 74 32 2e 74 2e 66 0a 20  window .t2.t.f. 
26230 20 20 20 75 70 64 61 74 65 0a 20 20 20 20 2e 74     update.    .t
26240 32 2e 74 20 78 76 69 65 77 20 73 63 72 6f 6c 6c  2.t xview scroll
26250 20 31 37 20 70 69 78 65 6c 73 0a 20 20 20 20 75   17 pixels.    u
26260 70 64 61 74 65 0a 20 20 20 20 6c 69 73 74 20 5b  pdate.    list [
26270 2e 74 32 2e 74 20 78 76 69 65 77 5d 20 5b 77 69  .t2.t xview] [wi
26280 6e 66 6f 20 67 65 6f 6d 20 2e 74 32 2e 74 2e 66  nfo geom .t2.t.f
26290 5d 20 5b 2e 74 32 2e 74 20 62 62 6f 78 20 31 2e  ] [.t2.t bbox 1.
262a0 33 5d 0a 7d 20 5b 6c 69 73 74 20 5b 6c 69 73 74  3].} [list [list
262b0 20 5b 65 78 70 72 20 7b 31 37 2e 30 2f 33 30 30   [expr {17.0/300
262c0 7d 5d 20 5b 65 78 70 72 20 7b 28 32 30 2e 30 2a  }] [expr {(20.0*
262d0 24 66 69 78 65 64 57 69 64 74 68 20 2b 20 31 37  $fixedWidth + 17
262e0 29 2f 33 30 30 7d 5d 5d 20 33 30 30 78 35 30 2b  )/300}]] 300x50+
262f0 5b 65 78 70 72 20 7b 24 74 77 62 77 20 2b 20 24  [expr {$twbw + $
26300 74 77 68 74 20 2b 20 31 20 2d 20 31 37 7d 5d 2b  twht + 1 - 17}]+
26310 5b 65 78 70 72 20 7b 24 74 77 62 77 20 2b 20 24  [expr {$twbw + $
26320 74 77 68 74 20 2b 20 24 66 69 78 65 64 48 65 69  twht + $fixedHei
26330 67 68 74 20 2b 20 31 7d 5d 20 7b 7d 5d 0a 74 65  ght + 1}] {}].te
26340 73 74 20 74 65 78 74 44 69 73 70 2d 32 39 2e 32  st textDisp-29.2
26350 2e 35 20 7b 6d 69 73 63 65 6c 6c 61 6e 65 6f 75  .5 {miscellaneou
26360 73 3a 20 63 61 6e 20 73 68 6f 77 20 6c 61 73 74  s: can show last
26370 20 63 68 61 72 61 63 74 65 72 7d 20 7b 0a 20 20   character} {.  
26380 20 20 63 61 74 63 68 20 7b 64 65 73 74 72 6f 79    catch {destroy
26390 20 2e 74 32 7d 0a 20 20 20 20 74 6f 70 6c 65 76   .t2}.    toplev
263a0 65 6c 20 2e 74 32 0a 20 20 20 20 77 6d 20 67 65  el .t2.    wm ge
263b0 6f 6d 65 74 72 79 20 2e 74 32 20 31 32 31 78 31  ometry .t2 121x1
263c0 34 31 2b 32 30 30 2b 32 30 30 0a 20 20 20 20 74  41+200+200.    t
263d0 65 78 74 20 2e 74 32 2e 74 20 2d 77 69 64 74 68  ext .t2.t -width
263e0 20 35 20 2d 68 65 69 67 68 74 20 35 20 2d 66 6f   5 -height 5 -fo
263f0 6e 74 20 7b 41 72 69 61 6c 20 31 30 7d 20 5c 0a  nt {Arial 10} \.
26400 20 20 20 20 20 20 2d 77 72 61 70 20 6e 6f 6e 65        -wrap none
26410 20 2d 78 73 63 72 6f 6c 6c 63 6f 6d 6d 61 6e 64   -xscrollcommand
26420 20 22 2e 74 32 2e 73 20 73 65 74 22 20 5c 0a 20   ".t2.s set" \. 
26430 20 20 20 20 20 2d 62 64 20 32 20 2d 68 69 67 68       -bd 2 -high
26440 6c 69 67 68 74 74 68 69 63 6b 6e 65 73 73 20 30  lightthickness 0
26450 20 2d 70 61 64 78 20 31 0a 20 20 20 20 2e 74 32   -padx 1.    .t2
26460 2e 74 20 69 6e 73 65 72 74 20 65 6e 64 20 22 57  .t insert end "W
26470 57 57 57 57 57 57 57 57 57 57 57 69 22 0a 20 20  WWWWWWWWWWWi".  
26480 20 20 73 63 72 6f 6c 6c 62 61 72 20 2e 74 32 2e    scrollbar .t2.
26490 73 20 2d 6f 72 69 65 6e 74 20 68 6f 72 69 7a 6f  s -orient horizo
264a0 6e 74 61 6c 20 2d 63 6f 6d 6d 61 6e 64 20 22 2e  ntal -command ".
264b0 74 32 2e 74 20 78 76 69 65 77 22 0a 20 20 20 20  t2.t xview".    
264c0 67 72 69 64 20 2e 74 32 2e 74 20 2d 72 6f 77 20  grid .t2.t -row 
264d0 30 20 2d 63 6f 6c 75 6d 6e 20 30 20 2d 73 74 69  0 -column 0 -sti
264e0 63 6b 79 20 6e 73 65 77 0a 20 20 20 20 67 72 69  cky nsew.    gri
264f0 64 20 2e 74 32 2e 73 20 2d 72 6f 77 20 31 20 2d  d .t2.s -row 1 -
26500 63 6f 6c 75 6d 6e 20 30 20 2d 73 74 69 63 6b 79  column 0 -sticky
26510 20 65 77 0a 20 20 20 20 67 72 69 64 20 63 6f 6c   ew.    grid col
26520 75 6d 6e 63 6f 6e 66 69 67 75 72 65 20 2e 74 32  umnconfigure .t2
26530 20 30 20 2d 77 65 69 67 68 74 20 31 0a 20 20 20   0 -weight 1.   
26540 20 67 72 69 64 20 72 6f 77 63 6f 6e 66 69 67 75   grid rowconfigu
26550 72 65 20 2e 74 32 20 30 20 2d 77 65 69 67 68 74  re .t2 0 -weight
26560 20 31 0a 20 20 20 20 67 72 69 64 20 72 6f 77 63   1.    grid rowc
26570 6f 6e 66 69 67 75 72 65 20 2e 74 32 20 31 20 2d  onfigure .t2 1 -
26580 77 65 69 67 68 74 20 30 0a 20 20 20 20 75 70 64  weight 0.    upd
26590 61 74 65 20 3b 20 75 70 64 61 74 65 0a 20 20 20  ate ; update.   
265a0 20 73 65 74 20 78 76 20 5b 2e 74 32 2e 74 20 78   set xv [.t2.t x
265b0 76 69 65 77 5d 0a 20 20 20 20 73 65 74 20 78 64  view].    set xd
265c0 20 5b 65 78 70 72 20 7b 5b 6c 69 6e 64 65 78 20   [expr {[lindex 
265d0 24 78 76 20 31 5d 20 2d 20 5b 6c 69 6e 64 65 78  $xv 1] - [lindex
265e0 20 24 78 76 20 30 5d 7d 5d 0a 20 20 20 20 2e 74   $xv 0]}].    .t
265f0 32 2e 74 20 78 76 69 65 77 20 6d 6f 76 65 74 6f  2.t xview moveto
26600 20 5b 65 78 70 72 20 7b 31 2e 30 2d 24 78 64 7d   [expr {1.0-$xd}
26610 5d 0a 20 20 20 20 73 65 74 20 69 57 69 64 74 68  ].    set iWidth
26620 20 5b 6c 69 6e 64 65 78 20 5b 2e 74 32 2e 74 20   [lindex [.t2.t 
26630 62 62 6f 78 20 65 6e 64 2d 32 63 5d 20 32 5d 0a  bbox end-2c] 2].
26640 20 20 20 20 2e 74 32 2e 74 20 78 76 69 65 77 20      .t2.t xview 
26650 73 63 72 6f 6c 6c 20 32 20 75 6e 69 74 73 0a 20  scroll 2 units. 
26660 20 20 20 73 65 74 20 69 57 69 64 74 68 32 20 5b     set iWidth2 [
26670 6c 69 6e 64 65 78 20 5b 2e 74 32 2e 74 20 62 62  lindex [.t2.t bb
26680 6f 78 20 65 6e 64 2d 32 63 5d 20 32 5d 0a 0a 20  ox end-2c] 2].. 
26690 20 20 20 69 66 20 7b 28 24 69 57 69 64 74 68 20     if {($iWidth 
266a0 3d 3d 20 24 69 57 69 64 74 68 32 29 20 26 26 20  == $iWidth2) && 
266b0 24 69 57 69 64 74 68 20 3e 3d 20 32 7d 20 7b 0a  $iWidth >= 2} {.
266c0 09 73 65 74 20 72 65 73 75 6c 74 20 22 63 6f 72  .set result "cor
266d0 72 65 63 74 22 0a 20 20 20 20 7d 20 65 6c 73 65  rect".    } else
266e0 20 7b 0a 09 73 65 74 20 72 65 73 75 6c 74 20 22   {..set result "
266f0 6c 61 73 74 20 63 68 61 72 61 63 74 65 72 20 69  last character i
26700 73 20 6e 6f 74 20 63 6f 6d 70 6c 65 74 65 6c 79  s not completely
26710 20 76 69 73 69 62 6c 65 20 77 68 65 6e 20 69 74   visible when it
26720 20 73 68 6f 75 6c 64 20 62 65 22 0a 20 20 20 20   should be".    
26730 7d 0a 7d 20 7b 63 6f 72 72 65 63 74 7d 0a 74 65  }.} {correct}.te
26740 73 74 20 74 65 78 74 44 69 73 70 2d 32 39 2e 33  st textDisp-29.3
26750 20 7b 6d 69 73 63 65 6c 6c 61 6e 65 6f 75 73 3a   {miscellaneous:
26760 20 6c 69 6e 65 73 20 77 72 61 70 20 62 75 74 20   lines wrap but 
26770 61 72 65 20 73 74 69 6c 6c 20 74 6f 6f 20 6c 6f  are still too lo
26780 6e 67 7d 20 7b 74 65 78 74 66 6f 6e 74 73 7d 20  ng} {textfonts} 
26790 7b 0a 20 20 20 20 63 61 74 63 68 20 7b 64 65 73  {.    catch {des
267a0 74 72 6f 79 20 2e 74 32 7d 0a 20 20 20 20 74 6f  troy .t2}.    to
267b0 70 6c 65 76 65 6c 20 2e 74 32 0a 20 20 20 20 77  plevel .t2.    w
267c0 6d 20 67 65 6f 6d 65 74 72 79 20 2e 74 32 20 2b  m geometry .t2 +
267d0 30 2b 30 0a 20 20 20 20 74 65 78 74 20 2e 74 32  0+0.    text .t2
267e0 2e 74 20 2d 77 69 64 74 68 20 32 30 20 2d 68 65  .t -width 20 -he
267f0 69 67 68 74 20 31 30 20 2d 66 6f 6e 74 20 24 66  ight 10 -font $f
26800 69 78 65 64 46 6f 6e 74 20 5c 0a 09 20 20 20 20  ixedFont \..    
26810 2d 77 72 61 70 20 63 68 61 72 20 2d 78 73 63 72  -wrap char -xscr
26820 6f 6c 6c 63 6f 6d 6d 61 6e 64 20 22 2e 74 32 2e  ollcommand ".t2.
26830 73 20 73 65 74 22 0a 20 20 20 20 70 61 63 6b 20  s set".    pack 
26840 2e 74 32 2e 74 20 2d 73 69 64 65 20 74 6f 70 0a  .t2.t -side top.
26850 20 20 20 20 73 63 72 6f 6c 6c 62 61 72 20 2e 74      scrollbar .t
26860 32 2e 73 20 2d 6f 72 69 65 6e 74 20 68 6f 72 69  2.s -orient hori
26870 7a 6f 6e 74 61 6c 20 2d 63 6f 6d 6d 61 6e 64 20  zontal -command 
26880 22 2e 74 32 2e 74 20 78 76 69 65 77 22 0a 20 20  ".t2.t xview".  
26890 20 20 70 61 63 6b 20 2e 74 32 2e 73 20 2d 73 69    pack .t2.s -si
268a0 64 65 20 62 6f 74 74 6f 6d 20 2d 66 69 6c 6c 20  de bottom -fill 
268b0 78 0a 20 20 20 20 2e 74 32 2e 74 20 69 6e 73 65  x.    .t2.t inse
268c0 72 74 20 65 6e 64 20 31 32 33 0a 20 20 20 20 66  rt end 123.    f
268d0 72 61 6d 65 20 2e 74 32 2e 74 2e 66 20 2d 77 69  rame .t2.t.f -wi
268e0 64 74 68 20 33 30 30 20 2d 68 65 69 67 68 74 20  dth 300 -height 
268f0 35 30 20 2d 62 64 20 32 20 2d 72 65 6c 69 65 66  50 -bd 2 -relief
26900 20 72 61 69 73 65 64 0a 20 20 20 20 2e 74 32 2e   raised.    .t2.
26910 74 20 77 69 6e 64 6f 77 20 63 72 65 61 74 65 20  t window create 
26920 31 2e 31 20 2d 77 69 6e 64 6f 77 20 2e 74 32 2e  1.1 -window .t2.
26930 74 2e 66 0a 20 20 20 20 75 70 64 61 74 65 0a 20  t.f.    update. 
26940 20 20 20 2e 74 32 2e 74 20 78 76 69 65 77 20 73     .t2.t xview s
26950 63 72 6f 6c 6c 20 32 30 30 20 75 6e 69 74 73 0a  croll 200 units.
26960 20 20 20 20 75 70 64 61 74 65 0a 20 20 20 20 6c      update.    l
26970 69 73 74 20 5b 2e 74 32 2e 74 20 78 76 69 65 77  ist [.t2.t xview
26980 5d 20 5b 77 69 6e 66 6f 20 67 65 6f 6d 20 2e 74  ] [winfo geom .t
26990 32 2e 74 2e 66 5d 20 5b 2e 74 32 2e 74 20 62 62  2.t.f] [.t2.t bb
269a0 6f 78 20 31 2e 33 5d 0a 7d 20 5b 6c 69 73 74 20  ox 1.3].} [list 
269b0 5b 6c 69 73 74 20 5b 65 78 70 72 20 7b 31 36 2e  [list [expr {16.
269c0 30 2f 33 30 7d 5d 20 31 2e 30 5d 20 33 30 30 78  0/30}] 1.0] 300x
269d0 35 30 2b 2d 31 35 35 2b 5b 65 78 70 72 20 7b 24  50+-155+[expr {$
269e0 66 69 78 65 64 44 69 66 66 20 2b 20 31 38 7d 5d  fixedDiff + 18}]
269f0 20 7b 7d 5d 0a 0a 74 65 73 74 20 74 65 78 74 44   {}]..test textD
26a00 69 73 70 2d 33 30 2e 31 20 7b 65 6c 69 64 64 65  isp-30.1 {elidde
26a10 6e 20 74 65 78 74 20 6a 6f 69 6e 69 6e 67 20 6d  n text joining m
26a20 75 6c 74 69 70 6c 65 20 6c 6f 67 69 63 61 6c 20  ultiple logical 
26a30 6c 69 6e 65 73 7d 20 7b 0a 20 20 20 20 2e 74 32  lines} {.    .t2
26a40 2e 74 20 64 65 6c 65 74 65 20 31 2e 30 20 65 6e  .t delete 1.0 en
26a50 64 0a 20 20 20 20 2e 74 32 2e 74 20 69 6e 73 65  d.    .t2.t inse
26a60 72 74 20 31 2e 30 20 22 31 31 31 31 5c 6e 32 32  rt 1.0 "1111\n22
26a70 32 32 5c 6e 33 33 33 33 22 0a 20 20 20 20 2e 74  22\n3333".    .t
26a80 32 2e 74 20 74 61 67 20 63 6f 6e 66 69 67 75 72  2.t tag configur
26a90 65 20 65 6c 69 64 64 65 6e 20 2d 65 6c 69 64 65  e elidden -elide
26aa0 20 31 20 2d 62 61 63 6b 67 72 6f 75 6e 64 20 72   1 -background r
26ab0 65 64 0a 20 20 20 20 2e 74 32 2e 74 20 74 61 67  ed.    .t2.t tag
26ac0 20 61 64 64 20 65 6c 69 64 64 65 6e 20 31 2e 32   add elidden 1.2
26ad0 20 33 2e 32 0a 20 20 20 20 2e 74 32 2e 74 20 63   3.2.    .t2.t c
26ae0 6f 75 6e 74 20 2d 64 69 73 70 6c 61 79 6c 69 6e  ount -displaylin
26af0 65 73 20 31 2e 30 20 65 6e 64 0a 7d 20 7b 31 7d  es 1.0 end.} {1}
26b00 0a 74 65 73 74 20 74 65 78 74 44 69 73 70 2d 33  .test textDisp-3
26b10 30 2e 32 20 7b 65 6c 69 64 64 65 6e 20 74 65 78  0.2 {elidden tex
26b20 74 20 6a 6f 69 6e 69 6e 67 20 6d 75 6c 74 69 70  t joining multip
26b30 6c 65 20 6c 6f 67 69 63 61 6c 20 6c 69 6e 65 73  le logical lines
26b40 7d 20 7b 0a 20 20 20 20 2e 74 32 2e 74 20 64 65  } {.    .t2.t de
26b50 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a 20 20 20  lete 1.0 end.   
26b60 20 2e 74 32 2e 74 20 69 6e 73 65 72 74 20 31 2e   .t2.t insert 1.
26b70 30 20 22 31 31 31 31 5c 6e 32 32 32 32 5c 6e 33  0 "1111\n2222\n3
26b80 33 33 33 22 0a 20 20 20 20 2e 74 32 2e 74 20 74  333".    .t2.t t
26b90 61 67 20 63 6f 6e 66 69 67 75 72 65 20 65 6c 69  ag configure eli
26ba0 64 64 65 6e 20 2d 65 6c 69 64 65 20 31 20 2d 62  dden -elide 1 -b
26bb0 61 63 6b 67 72 6f 75 6e 64 20 72 65 64 0a 20 20  ackground red.  
26bc0 20 20 2e 74 32 2e 74 20 74 61 67 20 61 64 64 20    .t2.t tag add 
26bd0 65 6c 69 64 64 65 6e 20 31 2e 32 20 32 2e 32 0a  elidden 1.2 2.2.
26be0 20 20 20 20 2e 74 32 2e 74 20 63 6f 75 6e 74 20      .t2.t count 
26bf0 2d 64 69 73 70 6c 61 79 6c 69 6e 65 73 20 31 2e  -displaylines 1.
26c00 30 20 65 6e 64 0a 7d 20 7b 32 7d 0a 63 61 74 63  0 end.} {2}.catc
26c10 68 20 7b 64 65 73 74 72 6f 79 20 2e 74 32 7d 0a  h {destroy .t2}.
26c20 0a 2e 74 20 63 6f 6e 66 69 67 75 72 65 20 2d 68  ..t configure -h
26c30 65 69 67 68 74 20 31 0a 75 70 64 61 74 65 0a 0a  eight 1.update..
26c40 74 65 73 74 20 74 65 78 74 44 69 73 70 2d 33 31  test textDisp-31
26c50 2e 31 20 7b 6c 69 6e 65 20 65 6d 62 65 64 64 65  .1 {line embedde
26c60 64 20 77 69 6e 64 6f 77 20 68 65 69 67 68 74 20  d window height 
26c70 75 70 64 61 74 65 7d 20 7b 0a 20 20 20 20 73 65  update} {.    se
26c80 74 20 72 65 73 20 7b 7d 0a 20 20 20 20 2e 74 20  t res {}.    .t 
26c90 64 65 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a 20  delete 1.0 end. 
26ca0 20 20 20 2e 74 20 69 6e 73 65 72 74 20 65 6e 64     .t insert end
26cb0 20 22 61 62 63 64 5c 6e 65 66 67 68 5c 6e 69 6a   "abcd\nefgh\nij
26cc0 6b 6c 5c 6e 6d 6e 6f 70 5c 6e 71 72 73 74 5c 6e  kl\nmnop\nqrst\n
26cd0 75 76 77 78 5c 6e 79 78 22 0a 20 20 20 20 66 72  uvwx\nyx".    fr
26ce0 61 6d 65 20 2e 74 2e 66 20 2d 62 61 63 6b 67 72  ame .t.f -backgr
26cf0 6f 75 6e 64 20 72 65 64 20 2d 77 69 64 74 68 20  ound red -width 
26d00 31 30 30 20 2d 68 65 69 67 68 74 20 31 30 30 0a  100 -height 100.
26d10 20 20 20 20 2e 74 20 77 69 6e 64 6f 77 20 63 72      .t window cr
26d20 65 61 74 65 20 33 2e 30 20 2d 77 69 6e 64 6f 77  eate 3.0 -window
26d30 20 2e 74 2e 66 0a 20 20 20 20 6c 61 70 70 65 6e   .t.f.    lappen
26d40 64 20 72 65 73 20 5b 2e 74 20 63 6f 75 6e 74 20  d res [.t count 
26d50 2d 75 70 64 61 74 65 20 2d 79 70 69 78 65 6c 73  -update -ypixels
26d60 20 31 2e 30 20 65 6e 64 5d 0a 20 20 20 20 2e 74   1.0 end].    .t
26d70 2e 66 20 63 6f 6e 66 69 67 75 72 65 20 2d 68 65  .f configure -he
26d80 69 67 68 74 20 31 30 0a 20 20 20 20 6c 61 70 70  ight 10.    lapp
26d90 65 6e 64 20 72 65 73 20 5b 2e 74 20 63 6f 75 6e  end res [.t coun
26da0 74 20 2d 79 70 69 78 65 6c 73 20 31 2e 30 20 65  t -ypixels 1.0 e
26db0 6e 64 5d 0a 20 20 20 20 6c 61 70 70 65 6e 64 20  nd].    lappend 
26dc0 72 65 73 20 5b 2e 74 20 63 6f 75 6e 74 20 2d 75  res [.t count -u
26dd0 70 64 61 74 65 20 2d 79 70 69 78 65 6c 73 20 31  pdate -ypixels 1
26de0 2e 30 20 65 6e 64 5d 0a 20 20 20 20 73 65 74 20  .0 end].    set 
26df0 72 65 73 0a 7d 20 5b 6c 69 73 74 20 5b 65 78 70  res.} [list [exp
26e00 72 20 7b 31 30 30 20 2b 20 24 66 69 78 65 64 48  r {100 + $fixedH
26e10 65 69 67 68 74 20 2a 20 36 7d 5d 20 5b 65 78 70  eight * 6}] [exp
26e20 72 20 7b 31 30 30 20 2b 20 24 66 69 78 65 64 48  r {100 + $fixedH
26e30 65 69 67 68 74 20 2a 20 36 7d 5d 20 5b 65 78 70  eight * 6}] [exp
26e40 72 20 7b 24 66 69 78 65 64 48 65 69 67 68 74 20  r {$fixedHeight 
26e50 2a 20 37 7d 5d 5d 0a 0a 74 65 73 74 20 74 65 78  * 7}]]..test tex
26e60 74 44 69 73 70 2d 33 31 2e 32 20 7b 6c 69 6e 65  tDisp-31.2 {line
26e70 20 75 70 64 61 74 65 20 69 6e 64 65 78 20 73 68   update index sh
26e80 69 66 74 69 6e 67 7d 20 7b 0a 20 20 20 20 73 65  ifting} {.    se
26e90 74 20 72 65 73 20 7b 7d 0a 20 20 20 20 2e 74 20  t res {}.    .t 
26ea0 64 65 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a 20  delete 1.0 end. 
26eb0 20 20 20 2e 74 20 69 6e 73 65 72 74 20 65 6e 64     .t insert end
26ec0 20 22 61 62 63 64 5c 6e 65 66 67 68 5c 6e 69 6a   "abcd\nefgh\nij
26ed0 6b 6c 5c 6e 6d 6e 6f 70 5c 6e 71 72 73 74 5c 6e  kl\nmnop\nqrst\n
26ee0 75 76 77 78 5c 6e 79 78 22 0a 20 20 20 20 66 72  uvwx\nyx".    fr
26ef0 61 6d 65 20 2e 74 2e 66 20 2d 62 61 63 6b 67 72  ame .t.f -backgr
26f00 6f 75 6e 64 20 72 65 64 20 2d 77 69 64 74 68 20  ound red -width 
26f10 31 30 30 20 2d 68 65 69 67 68 74 20 31 30 30 0a  100 -height 100.
26f20 20 20 20 20 2e 74 20 77 69 6e 64 6f 77 20 63 72      .t window cr
26f30 65 61 74 65 20 33 2e 30 20 2d 77 69 6e 64 6f 77  eate 3.0 -window
26f40 20 2e 74 2e 66 0a 20 20 20 20 2e 74 2e 66 20 63   .t.f.    .t.f c
26f50 6f 6e 66 69 67 75 72 65 20 2d 68 65 69 67 68 74  onfigure -height
26f60 20 31 30 30 0a 20 20 20 20 75 70 64 61 74 65 0a   100.    update.
26f70 20 20 20 20 6c 61 70 70 65 6e 64 20 72 65 73 20      lappend res 
26f80 5b 2e 74 20 63 6f 75 6e 74 20 2d 75 70 64 61 74  [.t count -updat
26f90 65 20 2d 79 70 69 78 65 6c 73 20 31 2e 30 20 65  e -ypixels 1.0 e
26fa0 6e 64 5d 0a 20 20 20 20 2e 74 2e 66 20 63 6f 6e  nd].    .t.f con
26fb0 66 69 67 75 72 65 20 2d 68 65 69 67 68 74 20 31  figure -height 1
26fc0 30 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20  0.    .t insert 
26fd0 31 2e 30 20 22 61 62 63 5c 6e 22 0a 20 20 20 20  1.0 "abc\n".    
26fe0 2e 74 20 69 6e 73 65 72 74 20 31 2e 30 20 22 61  .t insert 1.0 "a
26ff0 62 63 5c 6e 22 0a 20 20 20 20 6c 61 70 70 65 6e  bc\n".    lappen
27000 64 20 72 65 73 20 5b 2e 74 20 63 6f 75 6e 74 20  d res [.t count 
27010 2d 79 70 69 78 65 6c 73 20 31 2e 30 20 65 6e 64  -ypixels 1.0 end
27020 5d 0a 20 20 20 20 6c 61 70 70 65 6e 64 20 72 65  ].    lappend re
27030 73 20 5b 2e 74 20 63 6f 75 6e 74 20 2d 75 70 64  s [.t count -upd
27040 61 74 65 20 2d 79 70 69 78 65 6c 73 20 31 2e 30  ate -ypixels 1.0
27050 20 65 6e 64 5d 0a 20 20 20 20 2e 74 2e 66 20 63   end].    .t.f c
27060 6f 6e 66 69 67 75 72 65 20 2d 68 65 69 67 68 74  onfigure -height
27070 20 31 30 30 0a 20 20 20 20 2e 74 20 64 65 6c 65   100.    .t dele
27080 74 65 20 31 2e 30 20 33 2e 30 0a 20 20 20 20 6c  te 1.0 3.0.    l
27090 61 70 70 65 6e 64 20 72 65 73 20 5b 2e 74 20 63  append res [.t c
270a0 6f 75 6e 74 20 2d 79 70 69 78 65 6c 73 20 31 2e  ount -ypixels 1.
270b0 30 20 65 6e 64 5d 0a 20 20 20 20 6c 61 70 70 65  0 end].    lappe
270c0 6e 64 20 72 65 73 20 5b 2e 74 20 63 6f 75 6e 74  nd res [.t count
270d0 20 2d 75 70 64 61 74 65 20 2d 79 70 69 78 65 6c   -update -ypixel
270e0 73 20 31 2e 30 20 65 6e 64 5d 0a 20 20 20 20 73  s 1.0 end].    s
270f0 65 74 20 72 65 73 0a 7d 20 5b 6c 69 73 74 20 5b  et res.} [list [
27100 65 78 70 72 20 7b 31 30 30 20 2b 20 24 66 69 78  expr {100 + $fix
27110 65 64 48 65 69 67 68 74 20 2a 20 36 7d 5d 20 5b  edHeight * 6}] [
27120 65 78 70 72 20 7b 31 30 30 20 2b 20 24 66 69 78  expr {100 + $fix
27130 65 64 48 65 69 67 68 74 20 2a 20 38 7d 5d 20 5b  edHeight * 8}] [
27140 65 78 70 72 20 7b 24 66 69 78 65 64 48 65 69 67  expr {$fixedHeig
27150 68 74 20 2a 20 39 7d 5d 20 5b 65 78 70 72 20 7b  ht * 9}] [expr {
27160 24 66 69 78 65 64 48 65 69 67 68 74 20 2a 20 37  $fixedHeight * 7
27170 7d 5d 20 5b 65 78 70 72 20 7b 31 30 30 20 2b 20  }] [expr {100 + 
27180 24 66 69 78 65 64 48 65 69 67 68 74 20 2a 20 36  $fixedHeight * 6
27190 7d 5d 5d 0a 0a 74 65 73 74 20 74 65 78 74 44 69  }]]..test textDi
271a0 73 70 2d 33 31 2e 33 20 7b 6c 69 6e 65 20 75 70  sp-31.3 {line up
271b0 64 61 74 65 20 69 6e 64 65 78 20 73 68 69 66 74  date index shift
271c0 69 6e 67 7d 20 2d 62 6f 64 79 20 7b 0a 20 20 20  ing} -body {.   
271d0 20 23 20 53 68 6f 75 6c 64 20 64 6f 20 65 78 61   # Should do exa
271e0 63 74 6c 79 20 74 68 65 20 73 61 6d 65 20 61 73  ctly the same as
271f0 20 74 68 65 20 61 62 6f 76 65 2c 20 61 73 20 6c   the above, as l
27200 6f 6e 67 0a 20 20 20 20 23 20 61 73 20 77 65 20  ong.    # as we 
27210 61 72 65 20 63 6f 72 72 65 63 74 6c 79 20 74 61  are correctly ta
27220 67 67 69 6e 67 20 74 68 65 20 63 6f 72 72 65 63  gging the correc
27230 74 20 6c 69 6e 65 73 20 66 6f 72 0a 20 20 20 20  t lines for.    
27240 23 20 72 65 63 61 6c 63 75 6c 61 74 69 6f 6e 2e  # recalculation.
27250 20 20 54 68 65 20 27 75 70 64 61 74 65 27 20 61    The 'update' a
27260 6e 64 20 27 64 65 6c 61 79 27 20 6d 75 73 74 20  nd 'delay' must 
27270 62 65 0a 20 20 20 20 23 20 6c 6f 6e 67 20 65 6e  be.    # long en
27280 6f 75 67 68 20 74 6f 20 65 6e 73 75 72 65 20 61  ough to ensure a
27290 6c 6c 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 20  ll asynchronous 
272a0 75 70 64 61 74 65 73 0a 20 20 20 20 23 20 68 61  updates.    # ha
272b0 76 65 20 62 65 65 6e 20 70 65 72 66 6f 72 6d 65  ve been performe
272c0 64 2e 0a 20 20 20 20 73 65 74 20 72 65 73 20 7b  d..    set res {
272d0 7d 0a 20 20 20 20 2e 74 20 64 65 6c 65 74 65 20  }.    .t delete 
272e0 31 2e 30 20 65 6e 64 0a 20 20 20 20 2e 74 20 69  1.0 end.    .t i
272f0 6e 73 65 72 74 20 65 6e 64 20 22 61 62 63 64 5c  nsert end "abcd\
27300 6e 65 66 67 68 5c 6e 69 6a 6b 6c 5c 6e 6d 6e 6f  nefgh\nijkl\nmno
27310 70 5c 6e 71 72 73 74 5c 6e 75 76 77 78 5c 6e 79  p\nqrst\nuvwx\ny
27320 78 22 0a 20 20 20 20 66 72 61 6d 65 20 2e 74 2e  x".    frame .t.
27330 66 20 2d 62 61 63 6b 67 72 6f 75 6e 64 20 72 65  f -background re
27340 64 20 2d 77 69 64 74 68 20 31 30 30 20 2d 68 65  d -width 100 -he
27350 69 67 68 74 20 31 30 30 0a 20 20 20 20 2e 74 20  ight 100.    .t 
27360 77 69 6e 64 6f 77 20 63 72 65 61 74 65 20 33 2e  window create 3.
27370 30 20 2d 77 69 6e 64 6f 77 20 2e 74 2e 66 0a 20  0 -window .t.f. 
27380 20 20 20 2e 74 2e 66 20 63 6f 6e 66 69 67 75 72     .t.f configur
27390 65 20 2d 68 65 69 67 68 74 20 31 30 30 0a 20 20  e -height 100.  
273a0 20 20 75 70 64 61 74 65 0a 20 20 20 20 6c 61 70    update.    lap
273b0 70 65 6e 64 20 72 65 73 20 5b 2e 74 20 63 6f 75  pend res [.t cou
273c0 6e 74 20 2d 75 70 64 61 74 65 20 2d 79 70 69 78  nt -update -ypix
273d0 65 6c 73 20 31 2e 30 20 65 6e 64 5d 0a 20 20 20  els 1.0 end].   
273e0 20 2e 74 2e 66 20 63 6f 6e 66 69 67 75 72 65 20   .t.f configure 
273f0 2d 68 65 69 67 68 74 20 31 30 0a 20 20 20 20 2e  -height 10.    .
27400 74 20 69 6e 73 65 72 74 20 31 2e 30 20 22 61 62  t insert 1.0 "ab
27410 63 5c 6e 22 0a 20 20 20 20 2e 74 20 69 6e 73 65  c\n".    .t inse
27420 72 74 20 31 2e 30 20 22 61 62 63 5c 6e 22 0a 20  rt 1.0 "abc\n". 
27430 20 20 20 6c 61 70 70 65 6e 64 20 72 65 73 20 5b     lappend res [
27440 2e 74 20 63 6f 75 6e 74 20 2d 79 70 69 78 65 6c  .t count -ypixel
27450 73 20 31 2e 30 20 65 6e 64 5d 0a 20 20 20 20 75  s 1.0 end].    u
27460 70 64 61 74 65 20 3b 20 61 66 74 65 72 20 31 30  pdate ; after 10
27470 30 30 20 3b 20 75 70 64 61 74 65 0a 20 20 20 20  00 ; update.    
27480 6c 61 70 70 65 6e 64 20 72 65 73 20 5b 2e 74 20  lappend res [.t 
27490 63 6f 75 6e 74 20 2d 79 70 69 78 65 6c 73 20 31  count -ypixels 1
274a0 2e 30 20 65 6e 64 5d 0a 20 20 20 20 2e 74 2e 66  .0 end].    .t.f
274b0 20 63 6f 6e 66 69 67 75 72 65 20 2d 68 65 69 67   configure -heig
274c0 68 74 20 31 30 30 0a 20 20 20 20 2e 74 20 64 65  ht 100.    .t de
274d0 6c 65 74 65 20 31 2e 30 20 33 2e 30 0a 20 20 20  lete 1.0 3.0.   
274e0 20 6c 61 70 70 65 6e 64 20 72 65 73 20 5b 2e 74   lappend res [.t
274f0 20 63 6f 75 6e 74 20 2d 79 70 69 78 65 6c 73 20   count -ypixels 
27500 31 2e 30 20 65 6e 64 5d 0a 20 20 20 20 75 70 64  1.0 end].    upd
27510 61 74 65 20 3b 20 61 66 74 65 72 20 31 30 30 30  ate ; after 1000
27520 20 3b 20 75 70 64 61 74 65 0a 20 20 20 20 6c 61   ; update.    la
27530 70 70 65 6e 64 20 72 65 73 20 5b 2e 74 20 63 6f  ppend res [.t co
27540 75 6e 74 20 2d 79 70 69 78 65 6c 73 20 31 2e 30  unt -ypixels 1.0
27550 20 65 6e 64 5d 0a 20 20 20 20 73 65 74 20 72 65   end].    set re
27560 73 0a 7d 20 2d 72 65 73 75 6c 74 20 5b 6c 69 73  s.} -result [lis
27570 74 20 5b 65 78 70 72 20 7b 31 30 30 20 2b 20 24  t [expr {100 + $
27580 66 69 78 65 64 48 65 69 67 68 74 20 2a 20 36 7d  fixedHeight * 6}
27590 5d 20 5b 65 78 70 72 20 7b 31 30 30 20 2b 20 24  ] [expr {100 + $
275a0 66 69 78 65 64 48 65 69 67 68 74 20 2a 20 38 7d  fixedHeight * 8}
275b0 5d 20 5b 65 78 70 72 20 7b 24 66 69 78 65 64 48  ] [expr {$fixedH
275c0 65 69 67 68 74 20 2a 20 39 7d 5d 20 5b 65 78 70  eight * 9}] [exp
275d0 72 20 7b 24 66 69 78 65 64 48 65 69 67 68 74 20  r {$fixedHeight 
275e0 2a 20 37 7d 5d 20 5b 65 78 70 72 20 7b 31 30 30  * 7}] [expr {100
275f0 20 2b 20 24 66 69 78 65 64 48 65 69 67 68 74 20   + $fixedHeight 
27600 2a 20 36 7d 5d 5d 0a 0a 74 65 73 74 20 74 65 78  * 6}]]..test tex
27610 74 44 69 73 70 2d 33 31 2e 34 20 7b 6c 69 6e 65  tDisp-31.4 {line
27620 20 65 6d 62 65 64 64 65 64 20 69 6d 61 67 65 20   embedded image 
27630 68 65 69 67 68 74 20 75 70 64 61 74 65 7d 20 7b  height update} {
27640 0a 20 20 20 20 73 65 74 20 72 65 73 20 7b 7d 0a  .    set res {}.
27650 20 20 20 20 69 6d 61 67 65 20 63 72 65 61 74 65      image create
27660 20 70 68 6f 74 6f 20 74 65 78 74 65 73 74 20 2d   photo textest -
27670 68 65 69 67 68 74 20 31 30 30 20 2d 77 69 64 74  height 100 -widt
27680 68 20 31 30 0a 20 20 20 20 2e 74 20 64 65 6c 65  h 10.    .t dele
27690 74 65 20 33 2e 30 0a 20 20 20 20 2e 74 20 69 6d  te 3.0.    .t im
276a0 61 67 65 20 63 72 65 61 74 65 20 33 2e 30 20 2d  age create 3.0 -
276b0 69 6d 61 67 65 20 74 65 78 74 65 73 74 0a 20 20  image textest.  
276c0 20 20 75 70 64 61 74 65 0a 20 20 20 20 6c 61 70    update.    lap
276d0 70 65 6e 64 20 72 65 73 20 5b 2e 74 20 63 6f 75  pend res [.t cou
276e0 6e 74 20 2d 75 70 64 61 74 65 20 2d 79 70 69 78  nt -update -ypix
276f0 65 6c 73 20 31 2e 30 20 65 6e 64 5d 0a 20 20 20  els 1.0 end].   
27700 20 74 65 78 74 65 73 74 20 63 6f 6e 66 69 67 75   textest configu
27710 72 65 20 2d 68 65 69 67 68 74 20 31 30 0a 20 20  re -height 10.  
27720 20 20 6c 61 70 70 65 6e 64 20 72 65 73 20 5b 2e    lappend res [.
27730 74 20 63 6f 75 6e 74 20 2d 79 70 69 78 65 6c 73  t count -ypixels
27740 20 31 2e 30 20 65 6e 64 5d 0a 20 20 20 20 6c 61   1.0 end].    la
27750 70 70 65 6e 64 20 72 65 73 20 5b 2e 74 20 63 6f  ppend res [.t co
27760 75 6e 74 20 2d 75 70 64 61 74 65 20 2d 79 70 69  unt -update -ypi
27770 78 65 6c 73 20 31 2e 30 20 65 6e 64 5d 0a 20 20  xels 1.0 end].  
27780 20 20 73 65 74 20 72 65 73 0a 7d 20 5b 6c 69 73    set res.} [lis
27790 74 20 5b 65 78 70 72 20 7b 31 30 30 20 2b 20 24  t [expr {100 + $
277a0 66 69 78 65 64 48 65 69 67 68 74 20 2a 20 36 7d  fixedHeight * 6}
277b0 5d 20 5b 65 78 70 72 20 7b 31 30 30 20 2b 20 24  ] [expr {100 + $
277c0 66 69 78 65 64 48 65 69 67 68 74 20 2a 20 36 7d  fixedHeight * 6}
277d0 5d 20 5b 65 78 70 72 20 7b 24 66 69 78 65 64 48  ] [expr {$fixedH
277e0 65 69 67 68 74 20 2a 20 37 7d 5d 5d 0a 0a 74 65  eight * 7}]]..te
277f0 73 74 20 74 65 78 74 44 69 73 70 2d 33 31 2e 35  st textDisp-31.5
27800 20 7b 6c 69 6e 65 20 75 70 64 61 74 65 20 69 6e   {line update in
27810 64 65 78 20 73 68 69 66 74 69 6e 67 7d 20 7b 0a  dex shifting} {.
27820 20 20 20 20 73 65 74 20 72 65 73 20 7b 7d 0a 20      set res {}. 
27830 20 20 20 74 65 78 74 65 73 74 20 63 6f 6e 66 69     textest confi
27840 67 75 72 65 20 2d 68 65 69 67 68 74 20 31 30 30  gure -height 100
27850 0a 20 20 20 20 75 70 64 61 74 65 20 3b 20 61 66  .    update ; af
27860 74 65 72 20 31 30 30 30 20 3b 20 75 70 64 61 74  ter 1000 ; updat
27870 65 0a 20 20 20 20 6c 61 70 70 65 6e 64 20 72 65  e.    lappend re
27880 73 20 5b 2e 74 20 63 6f 75 6e 74 20 2d 75 70 64  s [.t count -upd
27890 61 74 65 20 2d 79 70 69 78 65 6c 73 20 31 2e 30  ate -ypixels 1.0
278a0 20 65 6e 64 5d 0a 20 20 20 20 74 65 78 74 65 73   end].    textes
278b0 74 20 63 6f 6e 66 69 67 75 72 65 20 2d 68 65 69  t configure -hei
278c0 67 68 74 20 31 30 0a 20 20 20 20 2e 74 20 69 6e  ght 10.    .t in
278d0 73 65 72 74 20 31 2e 30 20 22 61 62 63 5c 6e 22  sert 1.0 "abc\n"
278e0 0a 20 20 20 20 2e 74 20 69 6e 73 65 72 74 20 31  .    .t insert 1
278f0 2e 30 20 22 61 62 63 5c 6e 22 0a 20 20 20 20 6c  .0 "abc\n".    l
27900 61 70 70 65 6e 64 20 72 65 73 20 5b 2e 74 20 63  append res [.t c
27910 6f 75 6e 74 20 2d 79 70 69 78 65 6c 73 20 31 2e  ount -ypixels 1.
27920 30 20 65 6e 64 5d 0a 20 20 20 20 6c 61 70 70 65  0 end].    lappe
27930 6e 64 20 72 65 73 20 5b 2e 74 20 63 6f 75 6e 74  nd res [.t count
27940 20 2d 75 70 64 61 74 65 20 2d 79 70 69 78 65 6c   -update -ypixel
27950 73 20 31 2e 30 20 65 6e 64 5d 0a 20 20 20 20 74  s 1.0 end].    t
27960 65 78 74 65 73 74 20 63 6f 6e 66 69 67 75 72 65  extest configure
27970 20 2d 68 65 69 67 68 74 20 31 30 30 0a 20 20 20   -height 100.   
27980 20 2e 74 20 64 65 6c 65 74 65 20 31 2e 30 20 33   .t delete 1.0 3
27990 2e 30 0a 20 20 20 20 6c 61 70 70 65 6e 64 20 72  .0.    lappend r
279a0 65 73 20 5b 2e 74 20 63 6f 75 6e 74 20 2d 79 70  es [.t count -yp
279b0 69 78 65 6c 73 20 31 2e 30 20 65 6e 64 5d 0a 20  ixels 1.0 end]. 
279c0 20 20 20 6c 61 70 70 65 6e 64 20 72 65 73 20 5b     lappend res [
279d0 2e 74 20 63 6f 75 6e 74 20 2d 75 70 64 61 74 65  .t count -update
279e0 20 2d 79 70 69 78 65 6c 73 20 31 2e 30 20 65 6e   -ypixels 1.0 en
279f0 64 5d 0a 20 20 20 20 73 65 74 20 72 65 73 0a 7d  d].    set res.}
27a00 20 5b 6c 69 73 74 20 5b 65 78 70 72 20 7b 31 30   [list [expr {10
27a10 30 20 2b 20 24 66 69 78 65 64 48 65 69 67 68 74  0 + $fixedHeight
27a20 20 2a 20 36 7d 5d 20 5b 65 78 70 72 20 7b 31 30   * 6}] [expr {10
27a30 30 20 2b 20 24 66 69 78 65 64 48 65 69 67 68 74  0 + $fixedHeight
27a40 20 2a 20 38 7d 5d 20 5b 65 78 70 72 20 7b 24 66   * 8}] [expr {$f
27a50 69 78 65 64 48 65 69 67 68 74 20 2a 20 39 7d 5d  ixedHeight * 9}]
27a60 20 5b 65 78 70 72 20 7b 24 66 69 78 65 64 48 65   [expr {$fixedHe
27a70 69 67 68 74 20 2a 20 37 7d 5d 20 5b 65 78 70 72  ight * 7}] [expr
27a80 20 7b 31 30 30 20 2b 20 24 66 69 78 65 64 48 65   {100 + $fixedHe
27a90 69 67 68 74 20 2a 20 36 7d 5d 5d 0a 0a 74 65 73  ight * 6}]]..tes
27aa0 74 20 74 65 78 74 44 69 73 70 2d 33 31 2e 36 20  t textDisp-31.6 
27ab0 7b 6c 69 6e 65 20 75 70 64 61 74 65 20 69 6e 64  {line update ind
27ac0 65 78 20 73 68 69 66 74 69 6e 67 7d 20 7b 0a 20  ex shifting} {. 
27ad0 20 20 20 23 20 53 68 6f 75 6c 64 20 64 6f 20 65     # Should do e
27ae0 78 61 63 74 6c 79 20 74 68 65 20 73 61 6d 65 20  xactly the same 
27af0 61 73 20 74 68 65 20 61 62 6f 76 65 2c 20 61 73  as the above, as
27b00 20 6c 6f 6e 67 0a 20 20 20 20 23 20 61 73 20 77   long.    # as w
27b10 65 20 61 72 65 20 63 6f 72 72 65 63 74 6c 79 20  e are correctly 
27b20 74 61 67 67 69 6e 67 20 74 68 65 20 63 6f 72 72  tagging the corr
27b30 65 63 74 20 6c 69 6e 65 73 20 66 6f 72 0a 20 20  ect lines for.  
27b40 20 20 23 20 72 65 63 61 6c 63 75 6c 61 74 69 6f    # recalculatio
27b50 6e 2e 20 20 54 68 65 20 27 75 70 64 61 74 65 27  n.  The 'update'
27b60 20 61 6e 64 20 27 64 65 6c 61 79 27 20 6d 75 73   and 'delay' mus
27b70 74 20 62 65 0a 20 20 20 20 23 20 6c 6f 6e 67 20  t be.    # long 
27b80 65 6e 6f 75 67 68 20 74 6f 20 65 6e 73 75 72 65  enough to ensure
27b90 20 61 6c 6c 20 61 73 79 6e 63 68 72 6f 6e 6f 75   all asynchronou
27ba0 73 20 75 70 64 61 74 65 73 0a 20 20 20 20 23 20  s updates.    # 
27bb0 68 61 76 65 20 62 65 65 6e 20 70 65 72 66 6f 72  have been perfor
27bc0 6d 65 64 2e 0a 20 20 20 20 73 65 74 20 72 65 73  med..    set res
27bd0 20 7b 7d 0a 20 20 20 20 74 65 78 74 65 73 74 20   {}.    textest 
27be0 63 6f 6e 66 69 67 75 72 65 20 2d 68 65 69 67 68  configure -heigh
27bf0 74 20 31 30 30 0a 20 20 20 20 75 70 64 61 74 65  t 100.    update
27c00 20 3b 20 61 66 74 65 72 20 31 30 30 30 20 3b 20   ; after 1000 ; 
27c10 75 70 64 61 74 65 0a 20 20 20 20 6c 61 70 70 65  update.    lappe
27c20 6e 64 20 72 65 73 20 5b 2e 74 20 63 6f 75 6e 74  nd res [.t count
27c30 20 2d 75 70 64 61 74 65 20 2d 79 70 69 78 65 6c   -update -ypixel
27c40 73 20 31 2e 30 20 65 6e 64 5d 0a 20 20 20 20 74  s 1.0 end].    t
27c50 65 78 74 65 73 74 20 63 6f 6e 66 69 67 75 72 65  extest configure
27c60 20 2d 68 65 69 67 68 74 20 31 30 0a 20 20 20 20   -height 10.    
27c70 2e 74 20 69 6e 73 65 72 74 20 31 2e 30 20 22 61  .t insert 1.0 "a
27c80 62 63 5c 6e 22 0a 20 20 20 20 2e 74 20 69 6e 73  bc\n".    .t ins
27c90 65 72 74 20 31 2e 30 20 22 61 62 63 5c 6e 22 0a  ert 1.0 "abc\n".
27ca0 20 20 20 20 6c 61 70 70 65 6e 64 20 72 65 73 20      lappend res 
27cb0 5b 2e 74 20 63 6f 75 6e 74 20 2d 79 70 69 78 65  [.t count -ypixe
27cc0 6c 73 20 31 2e 30 20 65 6e 64 5d 0a 20 20 20 20  ls 1.0 end].    
27cd0 75 70 64 61 74 65 20 3b 20 61 66 74 65 72 20 31  update ; after 1
27ce0 30 30 30 20 3b 20 75 70 64 61 74 65 0a 20 20 20  000 ; update.   
27cf0 20 6c 61 70 70 65 6e 64 20 72 65 73 20 5b 2e 74   lappend res [.t
27d00 20 63 6f 75 6e 74 20 2d 79 70 69 78 65 6c 73 20   count -ypixels 
27d10 31 2e 30 20 65 6e 64 5d 0a 20 20 20 20 74 65 78  1.0 end].    tex
27d20 74 65 73 74 20 63 6f 6e 66 69 67 75 72 65 20 2d  test configure -
27d30 68 65 69 67 68 74 20 31 30 30 0a 20 20 20 20 2e  height 100.    .
27d40 74 20 64 65 6c 65 74 65 20 31 2e 30 20 33 2e 30  t delete 1.0 3.0
27d50 0a 20 20 20 20 6c 61 70 70 65 6e 64 20 72 65 73  .    lappend res
27d60 20 5b 2e 74 20 63 6f 75 6e 74 20 2d 79 70 69 78   [.t count -ypix
27d70 65 6c 73 20 31 2e 30 20 65 6e 64 5d 0a 20 20 20  els 1.0 end].   
27d80 20 75 70 64 61 74 65 20 3b 20 61 66 74 65 72 20   update ; after 
27d90 31 30 30 30 20 3b 20 75 70 64 61 74 65 0a 20 20  1000 ; update.  
27da0 20 20 6c 61 70 70 65 6e 64 20 72 65 73 20 5b 2e    lappend res [.
27db0 74 20 63 6f 75 6e 74 20 2d 79 70 69 78 65 6c 73  t count -ypixels
27dc0 20 31 2e 30 20 65 6e 64 5d 0a 20 20 20 20 73 65   1.0 end].    se
27dd0 74 20 72 65 73 0a 7d 20 5b 6c 69 73 74 20 5b 65  t res.} [list [e
27de0 78 70 72 20 7b 31 30 30 20 2b 20 24 66 69 78 65  xpr {100 + $fixe
27df0 64 48 65 69 67 68 74 20 2a 20 36 7d 5d 20 5b 65  dHeight * 6}] [e
27e00 78 70 72 20 7b 31 30 30 20 2b 20 24 66 69 78 65  xpr {100 + $fixe
27e10 64 48 65 69 67 68 74 20 2a 20 38 7d 5d 20 5b 65  dHeight * 8}] [e
27e20 78 70 72 20 7b 24 66 69 78 65 64 48 65 69 67 68  xpr {$fixedHeigh
27e30 74 20 2a 20 39 7d 5d 20 5b 65 78 70 72 20 7b 24  t * 9}] [expr {$
27e40 66 69 78 65 64 48 65 69 67 68 74 20 2a 20 37 7d  fixedHeight * 7}
27e50 5d 20 5b 65 78 70 72 20 7b 31 30 30 20 2b 20 24  ] [expr {100 + $
27e60 66 69 78 65 64 48 65 69 67 68 74 20 2a 20 36 7d  fixedHeight * 6}
27e70 5d 5d 0a 0a 74 65 73 74 20 74 65 78 74 44 69 73  ]]..test textDis
27e80 70 2d 33 31 2e 37 20 7b 6c 69 6e 65 20 75 70 64  p-31.7 {line upd
27e90 61 74 65 20 69 6e 64 65 78 20 73 68 69 66 74 69  ate index shifti
27ea0 6e 67 2c 20 65 6c 69 64 65 64 7d 20 2d 62 6f 64  ng, elided} -bod
27eb0 79 20 7b 0a 20 20 20 20 23 20 54 68 65 20 27 75  y {.    # The 'u
27ec0 70 64 61 74 65 27 20 61 6e 64 20 27 64 65 6c 61  pdate' and 'dela
27ed0 79 27 20 6d 75 73 74 20 62 65 20 6c 6f 6e 67 20  y' must be long 
27ee0 65 6e 6f 75 67 68 20 74 6f 20 65 6e 73 75 72 65  enough to ensure
27ef0 20 61 6c 6c 0a 20 20 20 20 23 20 61 73 79 6e 63   all.    # async
27f00 68 72 6f 6e 6f 75 73 20 75 70 64 61 74 65 73 20  hronous updates 
27f10 68 61 76 65 20 62 65 65 6e 20 70 65 72 66 6f 72  have been perfor
27f20 6d 65 64 2e 0a 20 20 20 20 73 65 74 20 72 65 73  med..    set res
27f30 20 7b 7d 0a 20 20 20 20 2e 74 20 64 65 6c 65 74   {}.    .t delet
27f40 65 20 31 2e 30 20 65 6e 64 0a 20 20 20 20 6c 61  e 1.0 end.    la
27f50 70 70 65 6e 64 20 72 65 73 20 5b 2e 74 20 63 6f  ppend res [.t co
27f60 75 6e 74 20 2d 75 70 64 61 74 65 20 2d 79 70 69  unt -update -ypi
27f70 78 65 6c 73 20 31 2e 30 20 65 6e 64 5d 0a 20 20  xels 1.0 end].  
27f80 20 20 2e 74 20 69 6e 73 65 72 74 20 31 2e 30 20    .t insert 1.0 
27f90 22 61 62 63 5c 6e 61 62 63 22 0a 20 20 20 20 2e  "abc\nabc".    .
27fa0 74 20 69 6e 73 65 72 74 20 31 2e 30 20 22 61 62  t insert 1.0 "ab
27fb0 63 5c 6e 22 0a 20 20 20 20 6c 61 70 70 65 6e 64  c\n".    lappend
27fc0 20 72 65 73 20 5b 2e 74 20 63 6f 75 6e 74 20 2d   res [.t count -
27fd0 75 70 64 61 74 65 20 2d 79 70 69 78 65 6c 73 20  update -ypixels 
27fe0 31 2e 30 20 65 6e 64 5d 0a 20 20 20 20 2e 74 20  1.0 end].    .t 
27ff0 74 61 67 20 63 6f 6e 66 69 67 75 72 65 20 65 6c  tag configure el
28000 69 64 65 20 2d 65 6c 69 64 65 20 31 0a 20 20 20  ide -elide 1.   
28010 20 2e 74 20 74 61 67 20 61 64 64 20 65 6c 69 64   .t tag add elid
28020 65 20 31 2e 33 20 32 2e 31 0a 20 20 20 20 6c 61  e 1.3 2.1.    la
28030 70 70 65 6e 64 20 72 65 73 20 5b 2e 74 20 63 6f  ppend res [.t co
28040 75 6e 74 20 2d 79 70 69 78 65 6c 73 20 31 2e 30  unt -ypixels 1.0
28050 20 65 6e 64 5d 0a 20 20 20 20 75 70 64 61 74 65   end].    update
28060 20 3b 20 61 66 74 65 72 20 31 30 30 30 20 3b 20   ; after 1000 ; 
28070 75 70 64 61 74 65 0a 20 20 20 20 6c 61 70 70 65  update.    lappe
28080 6e 64 20 72 65 73 20 5b 2e 74 20 63 6f 75 6e 74  nd res [.t count
28090 20 2d 79 70 69 78 65 6c 73 20 31 2e 30 20 65 6e   -ypixels 1.0 en
280a0 64 5d 0a 20 20 20 20 2e 74 20 64 65 6c 65 74 65  d].    .t delete
280b0 20 31 2e 30 20 33 2e 30 0a 20 20 20 20 6c 61 70   1.0 3.0.    lap
280c0 70 65 6e 64 20 72 65 73 20 5b 2e 74 20 63 6f 75  pend res [.t cou
280d0 6e 74 20 2d 79 70 69 78 65 6c 73 20 31 2e 30 20  nt -ypixels 1.0 
280e0 65 6e 64 5d 0a 20 20 20 20 75 70 64 61 74 65 20  end].    update 
280f0 3b 20 61 66 74 65 72 20 31 30 30 30 20 3b 20 75  ; after 1000 ; u
28100 70 64 61 74 65 0a 20 20 20 20 6c 61 70 70 65 6e  pdate.    lappen
28110 64 20 72 65 73 20 5b 2e 74 20 63 6f 75 6e 74 20  d res [.t count 
28120 2d 79 70 69 78 65 6c 73 20 31 2e 30 20 65 6e 64  -ypixels 1.0 end
28130 5d 0a 20 20 20 20 73 65 74 20 72 65 73 0a 7d 20  ].    set res.} 
28140 2d 72 65 73 75 6c 74 20 5b 6c 69 73 74 20 5b 65  -result [list [e
28150 78 70 72 20 7b 24 66 69 78 65 64 48 65 69 67 68  xpr {$fixedHeigh
28160 74 20 2a 20 31 7d 5d 20 5b 65 78 70 72 20 7b 24  t * 1}] [expr {$
28170 66 69 78 65 64 48 65 69 67 68 74 20 2a 20 33 7d  fixedHeight * 3}
28180 5d 20 5b 65 78 70 72 20 7b 24 66 69 78 65 64 48  ] [expr {$fixedH
28190 65 69 67 68 74 20 2a 20 33 7d 5d 20 5b 65 78 70  eight * 3}] [exp
281a0 72 20 7b 24 66 69 78 65 64 48 65 69 67 68 74 20  r {$fixedHeight 
281b0 2a 20 32 7d 5d 20 5b 65 78 70 72 20 7b 24 66 69  * 2}] [expr {$fi
281c0 78 65 64 48 65 69 67 68 74 20 2a 20 31 7d 5d 20  xedHeight * 1}] 
281d0 5b 65 78 70 72 20 7b 24 66 69 78 65 64 48 65 69  [expr {$fixedHei
281e0 67 68 74 20 2a 20 31 7d 5d 5d 0a 0a 74 65 73 74  ght * 1}]]..test
281f0 20 74 65 78 74 44 69 73 70 2d 33 32 2e 30 20 7b   textDisp-32.0 {
28200 65 76 65 72 79 74 68 69 6e 67 20 65 6c 69 64 65  everything elide
28210 64 7d 20 7b 0a 20 20 20 20 23 20 4d 75 73 74 20  d} {.    # Must 
28220 6e 6f 74 20 63 72 61 73 68 0a 20 20 20 20 70 61  not crash.    pa
28230 63 6b 20 5b 74 65 78 74 20 2e 74 74 5d 0a 20 20  ck [text .tt].  
28240 20 20 2e 74 74 20 69 6e 73 65 72 74 20 30 2e 30    .tt insert 0.0
28250 20 48 45 4c 4c 4f 0a 20 20 20 20 2e 74 74 20 74   HELLO.    .tt t
28260 61 67 20 63 6f 6e 66 69 67 75 72 65 20 48 49 44  ag configure HID
28270 45 20 2d 65 6c 69 64 65 20 31 0a 20 20 20 20 2e  E -elide 1.    .
28280 74 74 20 74 61 67 20 61 64 64 20 48 49 44 45 20  tt tag add HIDE 
28290 30 2e 30 20 65 6e 64 0a 20 20 20 20 75 70 64 61  0.0 end.    upda
282a0 74 65 20 3b 20 75 70 64 61 74 65 20 3b 20 75 70  te ; update ; up
282b0 64 61 74 65 20 3b 20 75 70 64 61 74 65 0a 20 20  date ; update.  
282c0 20 20 64 65 73 74 72 6f 79 20 2e 74 74 0a 7d 20    destroy .tt.} 
282d0 7b 7d 0a 74 65 73 74 20 74 65 78 74 44 69 73 70  {}.test textDisp
282e0 2d 33 32 2e 31 20 7b 65 76 65 72 79 74 68 69 6e  -32.1 {everythin
282f0 67 20 65 6c 69 64 65 64 7d 20 7b 0a 20 20 20 20  g elided} {.    
28300 23 20 4d 75 73 74 20 6e 6f 74 20 63 72 61 73 68  # Must not crash
28310 0a 20 20 20 20 70 61 63 6b 20 5b 74 65 78 74 20  .    pack [text 
28320 2e 74 74 5d 0a 20 20 20 20 75 70 64 61 74 65 0a  .tt].    update.
28330 20 20 20 20 2e 74 74 20 69 6e 73 65 72 74 20 30      .tt insert 0
28340 2e 30 20 48 45 4c 4c 4f 0a 20 20 20 20 75 70 64  .0 HELLO.    upd
28350 61 74 65 0a 20 20 20 20 2e 74 74 20 74 61 67 20  ate.    .tt tag 
28360 63 6f 6e 66 69 67 75 72 65 20 48 49 44 45 20 2d  configure HIDE -
28370 65 6c 69 64 65 20 31 0a 20 20 20 20 75 70 64 61  elide 1.    upda
28380 74 65 0a 20 20 20 20 2e 74 74 20 74 61 67 20 61  te.    .tt tag a
28390 64 64 20 48 49 44 45 20 30 2e 30 20 65 6e 64 0a  dd HIDE 0.0 end.
283a0 20 20 20 20 75 70 64 61 74 65 20 3b 20 75 70 64      update ; upd
283b0 61 74 65 20 3b 20 75 70 64 61 74 65 20 3b 20 75  ate ; update ; u
283c0 70 64 61 74 65 0a 20 20 20 20 64 65 73 74 72 6f  pdate.    destro
283d0 79 20 2e 74 74 0a 7d 20 7b 7d 0a 74 65 73 74 20  y .tt.} {}.test 
283e0 74 65 78 74 44 69 73 70 2d 33 32 2e 32 20 7b 65  textDisp-32.2 {e
283f0 6c 69 64 65 20 61 6e 64 20 74 61 67 73 7d 20 2d  lide and tags} -
28400 63 6f 6e 73 74 72 61 69 6e 74 73 20 74 65 78 74  constraints text
28410 66 6f 6e 74 73 20 2d 62 6f 64 79 20 7b 0a 20 20  fonts -body {.  
28420 20 20 70 61 63 6b 20 5b 74 65 78 74 20 2e 74 74    pack [text .tt
28430 20 2d 68 65 69 67 68 74 20 33 30 20 2d 77 69 64   -height 30 -wid
28440 74 68 20 31 30 30 20 2d 62 64 20 30 20 5c 0a 20  th 100 -bd 0 \. 
28450 20 20 20 20 20 2d 68 69 67 68 6c 69 67 68 74 74       -highlightt
28460 68 69 63 6b 6e 65 73 73 20 30 20 2d 70 61 64 78  hickness 0 -padx
28470 20 30 5d 0a 20 20 20 20 2e 74 74 20 69 6e 73 65   0].    .tt inse
28480 72 74 20 65 6e 64 20 5c 0a 20 20 20 20 20 20 7b  rt end \.      {
28490 74 65 73 74 20 74 65 78 74 20 75 73 69 6e 67 20  test text using 
284a0 74 61 67 73 20 31 20 61 6e 64 20 33 20 7d 20 5c  tags 1 and 3 } \
284b0 0a 20 20 20 20 20 20 7b 74 65 73 74 74 61 67 31  .      {testtag1
284c0 20 74 65 73 74 74 61 67 33 7d 20 5c 0a 20 20 20   testtag3} \.   
284d0 20 20 20 7b 5b 74 68 69 73 20 62 69 74 20 68 65     {[this bit he
284e0 72 65 20 75 73 65 73 20 74 61 67 73 20 32 20 61  re uses tags 2 a
284f0 6e 64 20 33 5d 7d 20 5c 0a 20 20 20 20 20 20 7b  nd 3]} \.      {
28500 74 65 73 74 74 61 67 32 20 74 65 73 74 74 61 67  testtag2 testtag
28510 33 7d 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20  3}.    update.  
28520 20 20 23 20 69 6e 64 65 6e 74 20 6c 65 66 74 20    # indent left 
28530 6d 61 72 67 69 6e 20 6f 66 20 74 61 67 20 31 20  margin of tag 1 
28540 62 79 20 32 30 20 70 69 78 65 6c 73 0a 20 20 20  by 20 pixels.   
28550 20 23 20 74 65 78 74 20 73 68 6f 75 6c 64 20 62   # text should b
28560 65 20 69 6e 64 65 6e 74 65 64 0a 20 20 20 20 2e  e indented.    .
28570 74 74 20 74 61 67 20 63 6f 6e 66 69 67 75 72 65  tt tag configure
28580 20 74 65 73 74 74 61 67 31 20 2d 6c 6d 61 72 67   testtag1 -lmarg
28590 69 6e 31 20 32 30 20 3b 20 75 70 64 61 74 65 0a  in1 20 ; update.
285a0 20 20 20 20 23 31 0a 20 20 20 20 73 65 74 20 72      #1.    set r
285b0 65 73 20 7b 7d 0a 20 20 20 20 6c 61 70 70 65 6e  es {}.    lappen
285c0 64 20 72 65 73 20 5b 6c 69 73 74 20 5b 2e 74 74  d res [list [.tt
285d0 20 69 6e 64 65 78 20 22 31 2e 30 20 2b 20 30 20   index "1.0 + 0 
285e0 64 69 73 70 6c 61 79 63 68 61 72 73 22 5d 20 5c  displaychars"] \
285f0 0a 20 20 20 20 20 20 5b 6c 69 6e 64 65 78 20 5b  .      [lindex [
28600 2e 74 74 20 62 62 6f 78 20 31 2e 30 5d 20 30 5d  .tt bbox 1.0] 0]
28610 20 5c 0a 20 20 20 20 20 20 5b 6c 69 6e 64 65 78   \.      [lindex
28620 20 5b 2e 74 74 20 62 62 6f 78 20 22 31 2e 30 20   [.tt bbox "1.0 
28630 2b 20 30 20 64 69 73 70 6c 61 79 63 68 61 72 73  + 0 displaychars
28640 22 5d 20 30 5d 5d 0a 20 20 20 20 23 20 68 69 64  "] 0]].    # hid
28650 65 20 74 61 67 20 31 2c 20 72 65 6d 61 69 6e 69  e tag 1, remaini
28660 6e 67 20 74 65 78 74 20 73 68 6f 75 6c 64 20 6e  ng text should n
28670 6f 74 20 62 65 20 69 6e 64 65 6e 74 65 64 2c 20  ot be indented, 
28680 73 69 6e 63 65 0a 20 20 20 20 23 20 74 68 65 20  since.    # the 
28690 69 6e 64 65 6e 74 65 64 20 74 61 67 20 61 6e 64  indented tag and
286a0 20 63 68 61 72 61 63 74 65 72 20 69 73 20 68 69   character is hi
286b0 64 64 65 6e 2e 0a 20 20 20 20 2e 74 74 20 74 61  dden..    .tt ta
286c0 67 20 63 6f 6e 66 69 67 75 72 65 20 74 65 73 74  g configure test
286d0 74 61 67 31 20 2d 65 6c 69 64 65 20 31 20 3b 20  tag1 -elide 1 ; 
286e0 75 70 64 61 74 65 0a 20 20 20 20 23 32 0a 20 20  update.    #2.  
286f0 20 20 6c 61 70 70 65 6e 64 20 72 65 73 20 5b 6c    lappend res [l
28700 69 73 74 20 5b 2e 74 74 20 69 6e 64 65 78 20 22  ist [.tt index "
28710 31 2e 30 20 2b 20 30 20 64 69 73 70 6c 61 79 63  1.0 + 0 displayc
28720 68 61 72 73 22 5d 20 5c 0a 20 20 20 20 20 20 5b  hars"] \.      [
28730 6c 69 6e 64 65 78 20 5b 2e 74 74 20 62 62 6f 78  lindex [.tt bbox
28740 20 31 2e 30 5d 20 30 5d 20 5c 0a 20 20 20 20 20   1.0] 0] \.     
28750 20 5b 6c 69 6e 64 65 78 20 5b 2e 74 74 20 62 62   [lindex [.tt bb
28760 6f 78 20 22 31 2e 30 20 2b 20 30 20 64 69 73 70  ox "1.0 + 0 disp
28770 6c 61 79 63 68 61 72 73 22 5d 20 30 5d 5d 0a 20  laychars"] 0]]. 
28780 20 20 20 23 20 72 65 73 65 74 0a 20 20 20 20 2e     # reset.    .
28790 74 74 20 74 61 67 20 63 6f 6e 66 69 67 75 72 65  tt tag configure
287a0 20 74 65 73 74 74 61 67 31 20 2d 6c 6d 61 72 67   testtag1 -lmarg
287b0 69 6e 31 20 30 0a 20 20 20 20 2e 74 74 20 74 61  in1 0.    .tt ta
287c0 67 20 63 6f 6e 66 69 67 75 72 65 20 74 65 73 74  g configure test
287d0 74 61 67 31 20 2d 65 6c 69 64 65 20 30 0a 20 20  tag1 -elide 0.  
287e0 20 20 23 20 69 6e 64 65 6e 74 20 6c 65 66 74 20    # indent left 
287f0 6d 61 72 67 69 6e 20 6f 66 20 74 61 67 20 32 20  margin of tag 2 
28800 62 79 20 32 30 20 70 69 78 65 6c 73 0a 20 20 20  by 20 pixels.   
28810 20 23 20 74 65 78 74 20 73 68 6f 75 6c 64 20 6e   # text should n
28820 6f 74 20 62 65 20 69 6e 64 65 6e 74 65 64 2c 20  ot be indented, 
28830 73 69 6e 63 65 20 74 61 67 31 20 68 61 73 20 6c  since tag1 has l
28840 6d 61 72 67 69 6e 31 20 6f 66 20 30 2e 0a 20 20  margin1 of 0..  
28850 20 20 2e 74 74 20 74 61 67 20 63 6f 6e 66 69 67    .tt tag config
28860 75 72 65 20 74 65 73 74 74 61 67 32 20 2d 6c 6d  ure testtag2 -lm
28870 61 72 67 69 6e 31 20 32 30 20 3b 20 75 70 64 61  argin1 20 ; upda
28880 74 65 0a 20 20 20 20 23 33 0a 20 20 20 20 6c 61  te.    #3.    la
28890 70 70 65 6e 64 20 72 65 73 20 5b 6c 69 73 74 20  ppend res [list 
288a0 5b 2e 74 74 20 69 6e 64 65 78 20 22 31 2e 30 20  [.tt index "1.0 
288b0 2b 20 30 20 64 69 73 70 6c 61 79 63 68 61 72 73  + 0 displaychars
288c0 22 5d 20 5c 0a 20 20 20 20 20 20 5b 6c 69 6e 64  "] \.      [lind
288d0 65 78 20 5b 2e 74 74 20 62 62 6f 78 20 31 2e 30  ex [.tt bbox 1.0
288e0 5d 20 30 5d 20 5c 0a 20 20 20 20 20 20 5b 6c 69  ] 0] \.      [li
288f0 6e 64 65 78 20 5b 2e 74 74 20 62 62 6f 78 20 22  ndex [.tt bbox "
28900 31 2e 30 20 2b 20 30 20 64 69 73 70 6c 61 79 63  1.0 + 0 displayc
28910 68 61 72 73 22 5d 20 30 5d 5d 0a 20 20 20 20 23  hars"] 0]].    #
28920 20 68 69 64 65 20 74 61 67 20 31 2c 20 72 65 6d   hide tag 1, rem
28930 61 69 6e 69 6e 67 20 74 65 78 74 20 73 68 6f 75  aining text shou
28940 6c 64 20 6e 6f 77 20 62 65 20 69 6e 64 65 6e 74  ld now be indent
28950 65 64 2c 20 62 75 74 0a 20 20 20 20 23 20 74 68  ed, but.    # th
28960 65 20 62 62 6f 78 20 6f 66 20 31 2e 30 20 73 68  e bbox of 1.0 sh
28970 6f 75 6c 64 20 68 61 76 65 20 7a 65 72 6f 20 77  ould have zero w
28980 69 64 74 68 20 61 6e 64 20 7a 65 72 6f 20 69 6e  idth and zero in
28990 64 65 6e 74 2c 0a 20 20 20 20 23 20 73 69 6e 63  dent,.    # sinc
289a0 65 20 69 74 20 69 73 20 65 6c 69 64 65 64 20 61  e it is elided a
289b0 74 20 74 68 61 74 20 70 6f 73 69 74 69 6f 6e 2e  t that position.
289c0 0a 20 20 20 20 2e 74 74 20 74 61 67 20 63 6f 6e  .    .tt tag con
289d0 66 69 67 75 72 65 20 74 65 73 74 74 61 67 31 20  figure testtag1 
289e0 2d 65 6c 69 64 65 20 31 20 3b 20 75 70 64 61 74  -elide 1 ; updat
289f0 65 0a 20 20 20 20 23 34 0a 20 20 20 20 6c 61 70  e.    #4.    lap
28a00 70 65 6e 64 20 72 65 73 20 5b 6c 69 73 74 20 5b  pend res [list [
28a10 2e 74 74 20 69 6e 64 65 78 20 22 31 2e 30 20 2b  .tt index "1.0 +
28a20 20 30 20 64 69 73 70 6c 61 79 63 68 61 72 73 22   0 displaychars"
28a30 5d 20 5c 0a 20 20 20 20 20 20 5b 6c 69 6e 64 65  ] \.      [linde
28a40 78 20 5b 2e 74 74 20 62 62 6f 78 20 31 2e 30 5d  x [.tt bbox 1.0]
28a50 20 30 5d 20 5c 0a 20 20 20 20 20 20 5b 6c 69 6e   0] \.      [lin
28a60 64 65 78 20 5b 2e 74 74 20 62 62 6f 78 20 22 31  dex [.tt bbox "1
28a70 2e 30 20 2b 20 30 20 64 69 73 70 6c 61 79 63 68  .0 + 0 displaych
28a80 61 72 73 22 5d 20 30 5d 5d 0a 20 20 20 20 23 20  ars"] 0]].    # 
28a90 72 65 73 65 74 0a 20 20 20 20 2e 74 74 20 74 61  reset.    .tt ta
28aa0 67 20 63 6f 6e 66 69 67 75 72 65 20 74 65 73 74  g configure test
28ab0 74 61 67 32 20 2d 6c 6d 61 72 67 69 6e 31 20 7b  tag2 -lmargin1 {
28ac0 7d 0a 20 20 20 20 2e 74 74 20 74 61 67 20 63 6f  }.    .tt tag co
28ad0 6e 66 69 67 75 72 65 20 74 65 73 74 74 61 67 31  nfigure testtag1
28ae0 20 2d 65 6c 69 64 65 20 30 0a 20 20 20 20 23 20   -elide 0.    # 
28af0 69 6e 64 65 6e 74 20 6c 65 66 74 20 6d 61 72 67  indent left marg
28b00 69 6e 20 6f 66 20 74 61 67 20 33 20 62 79 20 32  in of tag 3 by 2
28b10 30 20 70 69 78 65 6c 73 0a 20 20 20 20 23 20 74  0 pixels.    # t
28b20 65 78 74 20 73 68 6f 75 6c 64 20 62 65 20 69 6e  ext should be in
28b30 64 65 6e 74 65 64 2c 20 73 69 6e 63 65 20 74 68  dented, since th
28b40 69 73 20 74 61 67 20 74 61 6b 65 73 0a 20 20 20  is tag takes.   
28b50 20 23 20 70 72 65 63 65 64 65 6e 63 65 20 6f 76   # precedence ov
28b60 65 72 20 74 65 73 74 74 61 67 31 2c 20 61 6e 64  er testtag1, and
28b70 20 69 73 20 61 70 70 6c 69 65 64 20 74 6f 20 74   is applied to t
28b80 68 65 0a 20 20 20 20 23 20 73 74 61 72 74 20 6f  he.    # start o
28b90 66 20 74 68 65 20 74 65 78 74 2e 0a 20 20 20 20  f the text..    
28ba0 2e 74 74 20 74 61 67 20 63 6f 6e 66 69 67 75 72  .tt tag configur
28bb0 65 20 74 65 73 74 74 61 67 33 20 2d 6c 6d 61 72  e testtag3 -lmar
28bc0 67 69 6e 31 20 32 30 20 3b 20 75 70 64 61 74 65  gin1 20 ; update
28bd0 0a 20 20 20 20 23 35 0a 20 20 20 20 6c 61 70 70  .    #5.    lapp
28be0 65 6e 64 20 72 65 73 20 5b 6c 69 73 74 20 5b 2e  end res [list [.
28bf0 74 74 20 69 6e 64 65 78 20 22 31 2e 30 20 2b 20  tt index "1.0 + 
28c00 30 20 64 69 73 70 6c 61 79 63 68 61 72 73 22 5d  0 displaychars"]
28c10 20 5c 0a 20 20 20 20 20 20 5b 6c 69 6e 64 65 78   \.      [lindex
28c20 20 5b 2e 74 74 20 62 62 6f 78 20 31 2e 30 5d 20   [.tt bbox 1.0] 
28c30 30 5d 20 5c 0a 20 20 20 20 20 20 5b 6c 69 6e 64  0] \.      [lind
28c40 65 78 20 5b 2e 74 74 20 62 62 6f 78 20 22 31 2e  ex [.tt bbox "1.
28c50 30 20 2b 20 30 20 64 69 73 70 6c 61 79 63 68 61  0 + 0 displaycha
28c60 72 73 22 5d 20 30 5d 5d 0a 20 20 20 20 23 20 68  rs"] 0]].    # h
28c70 69 64 65 20 74 61 67 20 31 2c 20 72 65 6d 61 69  ide tag 1, remai
28c80 6e 69 6e 67 20 74 65 78 74 20 73 68 6f 75 6c 64  ning text should
28c90 20 73 74 69 6c 6c 20 62 65 20 69 6e 64 65 6e 74   still be indent
28ca0 65 64 2c 0a 20 20 20 20 23 20 73 69 6e 63 65 20  ed,.    # since 
28cb0 69 74 20 73 74 69 6c 6c 20 68 61 73 20 74 65 73  it still has tes
28cc0 74 74 61 67 33 20 6f 6e 20 69 74 2e 20 20 41 67  ttag3 on it.  Ag
28cd0 61 69 6e 20 74 68 65 0a 20 20 20 20 23 20 62 62  ain the.    # bb
28ce0 6f 78 20 6f 66 20 31 2e 30 20 73 68 6f 75 6c 64  ox of 1.0 should
28cf0 20 68 61 76 65 20 30 2e 0a 20 20 20 20 2e 74 74   have 0..    .tt
28d00 20 74 61 67 20 63 6f 6e 66 69 67 75 72 65 20 74   tag configure t
28d10 65 73 74 74 61 67 31 20 2d 65 6c 69 64 65 20 31  esttag1 -elide 1
28d20 20 3b 20 75 70 64 61 74 65 0a 20 20 20 20 23 36   ; update.    #6
28d30 0a 20 20 20 20 6c 61 70 70 65 6e 64 20 72 65 73  .    lappend res
28d40 20 5b 6c 69 73 74 20 5b 2e 74 74 20 69 6e 64 65   [list [.tt inde
28d50 78 20 22 31 2e 30 20 2b 20 30 20 64 69 73 70 6c  x "1.0 + 0 displ
28d60 61 79 63 68 61 72 73 22 5d 20 5c 0a 20 20 20 20  aychars"] \.    
28d70 20 20 5b 6c 69 6e 64 65 78 20 5b 2e 74 74 20 62    [lindex [.tt b
28d80 62 6f 78 20 31 2e 30 5d 20 30 5d 20 5c 0a 20 20  box 1.0] 0] \.  
28d90 20 20 20 20 5b 6c 69 6e 64 65 78 20 5b 2e 74 74      [lindex [.tt
28da0 20 62 62 6f 78 20 22 31 2e 30 20 2b 20 30 20 64   bbox "1.0 + 0 d
28db0 69 73 70 6c 61 79 63 68 61 72 73 22 5d 20 30 5d  isplaychars"] 0]
28dc0 5d 0a 20 20 20 20 2e 74 74 20 74 61 67 20 63 6f  ].    .tt tag co
28dd0 6e 66 69 67 75 72 65 20 74 65 73 74 74 61 67 33  nfigure testtag3
28de0 20 2d 6c 6d 61 72 67 69 6e 31 20 7b 7d 20 2d 65   -lmargin1 {} -e
28df0 6c 69 64 65 20 30 0a 20 20 20 20 2e 74 74 20 74  lide 0.    .tt t
28e00 61 67 20 63 6f 6e 66 69 67 75 72 65 20 74 65 73  ag configure tes
28e10 74 74 61 67 31 20 2d 65 6c 69 64 65 20 31 20 2d  ttag1 -elide 1 -
28e20 6c 6d 61 72 67 69 6e 31 20 32 30 0a 20 20 20 20  lmargin1 20.    
28e30 23 37 0a 20 20 20 20 6c 61 70 70 65 6e 64 20 72  #7.    lappend r
28e40 65 73 20 5b 6c 69 73 74 20 5b 2e 74 74 20 69 6e  es [list [.tt in
28e50 64 65 78 20 22 31 2e 30 20 2b 20 30 20 64 69 73  dex "1.0 + 0 dis
28e60 70 6c 61 79 63 68 61 72 73 22 5d 20 5c 0a 20 20  playchars"] \.  
28e70 20 20 20 20 5b 6c 69 6e 64 65 78 20 5b 2e 74 74      [lindex [.tt
28e80 20 62 62 6f 78 20 31 2e 30 5d 20 30 5d 20 5c 0a   bbox 1.0] 0] \.
28e90 20 20 20 20 20 20 5b 6c 69 6e 64 65 78 20 5b 2e        [lindex [.
28ea0 74 74 20 62 62 6f 78 20 22 31 2e 30 20 2b 20 30  tt bbox "1.0 + 0
28eb0 20 64 69 73 70 6c 61 79 63 68 61 72 73 22 5d 20   displaychars"] 
28ec0 30 5d 5d 0a 20 20 20 20 64 65 73 74 72 6f 79 20  0]].    destroy 
28ed0 2e 74 74 0a 20 20 20 20 73 65 74 20 72 65 73 0a  .tt.    set res.
28ee0 7d 20 2d 72 65 73 75 6c 74 20 7b 7b 31 2e 30 20  } -result {{1.0 
28ef0 32 30 20 32 30 7d 20 7b 31 2e 32 39 20 30 20 30  20 20} {1.29 0 0
28f00 7d 20 7b 31 2e 30 20 30 20 30 7d 20 7b 31 2e 32  } {1.0 0 0} {1.2
28f10 39 20 30 20 32 30 7d 5c 0a 20 20 7b 31 2e 30 20  9 0 20}\.  {1.0 
28f20 32 30 20 32 30 7d 20 7b 31 2e 32 39 20 30 20 32  20 20} {1.29 0 2
28f30 30 7d 20 7b 31 2e 30 20 32 30 20 32 30 7d 7d 0a  0} {1.0 20 20}}.
28f40 74 65 73 74 20 74 65 78 74 44 69 73 70 2d 33 32  test textDisp-32
28f50 2e 33 20 22 4e 55 4c 4c 20 75 6e 64 69 73 70 6c  .3 "NULL undispl
28f60 61 79 50 72 6f 63 20 70 72 6f 62 6c 65 6d 73 3a  ayProc problems:
28f70 20 23 31 37 39 31 30 35 32 22 20 2d 73 65 74 75   #1791052" -setu
28f80 70 20 7b 0a 20 20 20 20 73 65 74 20 69 6d 67 20  p {.    set img 
28f90 5b 69 6d 61 67 65 20 63 72 65 61 74 65 20 70 68  [image create ph
28fa0 6f 74 6f 20 2d 64 61 74 61 20 7b 0a 09 52 30 6c  oto -data {..R0l
28fb0 47 4f 44 6c 68 45 67 41 53 41 4e 55 41 41 41 41  GODlhEgASANUAAAA
28fc0 41 41 50 2f 2f 2f 2f 2f 69 48 50 2f 6d 49 50 72  AAP/////iHP/mIPr
28fd0 57 44 50 72 61 45 50 2f 65 47 50 66 4f 41 50 62  WDPraEP/eGPfOAPb
28fe0 4b 41 50 62 4f 42 50 72 53 0a 09 43 50 2f 61 46  KAPbOBPrS..CP/aF
28ff0 50 62 47 41 50 4c 43 41 50 4c 47 41 4e 36 32 41  PbGAPLCAPLGAN62A
29000 4e 61 75 41 4d 79 6c 41 50 62 43 41 50 57 2f 41  NauAMylAPbCAPW/A
29010 50 4b 2b 41 4e 36 75 41 4c 4b 4e 41 50 4b 32 41  PK+AN6uALKNAPK2A
29020 50 4b 35 41 4e 61 6c 0a 09 41 4f 79 7a 41 72 47  PK5ANal..AOyzArG
29030 48 42 5a 70 33 42 2b 36 75 41 48 46 56 42 46 56  HBZp3B+6uAHFVBFV
29040 41 43 4f 36 71 41 4f 71 71 41 4f 61 6c 41 4d 47  ACO6qAOqqAOalAMG
29050 4d 41 62 46 2b 41 6d 31 51 42 47 35 51 42 65 75  MAbF+Am1QBG5QBeu
29060 69 41 4f 61 64 0a 09 41 4d 36 4e 41 4a 39 76 42  iAOad..AM6NAJ9vB
29070 57 31 4d 42 46 6c 41 43 46 51 39 43 56 6c 42 43  W1MBFlACFQ9CVlBC
29080 75 61 5a 41 4f 4b 56 41 4e 79 56 41 5a 6c 70 42  uaZAOKVANyVAZlpB
29090 4d 79 46 41 4b 5a 74 42 4a 56 68 42 45 41 55 45  MyFAKZtBJVhBEAUE
290a0 50 2f 2f 0a 09 2f 77 41 41 41 41 41 41 41 41 41  P//../wAAAAAAAAA
290b0 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
290c0 41 41 41 41 41 41 43 48 35 42 41 45 41 41 44 63  AAAAAACH5BAEAADc
290d0 41 4c 41 41 41 41 41 41 53 41 42 49 41 41 41 61  ALAAAAAASABIAAAa
290e0 2b 0a 09 77 4a 74 77 2b 43 6b 61 68 30 69 69 5a  +..wJtw+Ckah0iiZ
290f0 77 4e 68 4f 44 4b 6b 30 69 63 70 2f 48 41 53 68  wNhODKk0icp/HASh
29100 45 4b 42 6f 45 42 67 56 46 4f 6b 4b 30 49 77 32  EKBoEBgVFOkK0Iw2
29110 47 79 43 73 2b 42 41 47 62 47 49 6c 72 49 74 0a  GyCs+BAGbGIlrIt.
29120 09 45 4a 6a 58 42 59 67 4c 36 58 33 7a 4a 4d 78  .EJjXBYgL6X3zJMx
29130 31 5a 32 64 33 45 79 45 6d 4e 78 39 78 61 59 47  1Z2d3EyEmNx9xaYG
29140 43 64 77 67 61 4e 45 55 50 42 59 74 30 64 6f 34  CdwgaNEUPBYt0do4
29150 58 4b 55 55 4f 6c 41 4f 43 6e 6d 63 44 0a 09 43  XKUUOlAOCnmcD..C
29160 77 63 58 4d 5a 73 45 41 67 4f 71 71 36 6f 4c 42  wcXMZsEAgOqq6oLB
29170 59 2b 6d 48 78 55 4b 42 71 79 73 43 77 51 53 49  Y+mHxUKBqysCwQSI
29180 44 4e 46 4a 41 69 64 74 67 4b 6a 46 79 65 52 66  DNFJAidtgKjFyeRf
29190 52 51 48 42 32 69 70 41 6d 5a 73 0a 09 49 44 41  RQHB2ipAmZs..IDA
291a0 72 56 53 54 49 79 6f 49 32 62 42 30 6f 78 6b 49  rVSTIyoI2bB0oxkI
291b0 73 49 78 63 4e 79 65 49 58 49 43 68 37 53 52 38  sIxcNyeIXICh7SR8
291c0 79 49 68 6f 58 46 78 6f 67 4a 7a 45 31 59 65 67  yIhoXFxogJzE1Yeg
291d0 72 4e 43 6b 6f 4c 7a 4d 30 0a 09 4b 2f 52 55 69  rNCkoLzM0..K/RUi
291e0 45 59 2b 74 4b 41 53 42 41 41 37 0a 20 20 20 20  EY+tKASBAA7.    
291f0 7d 5d 0a 20 20 20 20 64 65 73 74 72 6f 79 20 2e  }].    destroy .
29200 74 74 0a 7d 20 2d 62 6f 64 79 20 7b 0a 20 20 20  tt.} -body {.   
29210 20 74 65 78 74 20 2e 74 74 0a 20 20 20 20 2e 74   text .tt.    .t
29220 74 20 74 61 67 20 63 6f 6e 66 69 67 75 72 65 20  t tag configure 
29230 65 6d 6f 74 69 63 6f 6e 20 2d 65 6c 69 64 65 20  emoticon -elide 
29240 31 0a 20 20 20 20 2e 74 74 20 69 6e 73 65 72 74  1.    .tt insert
29250 20 65 6e 64 20 58 0a 20 20 20 20 2e 74 74 20 6d   end X.    .tt m
29260 61 72 6b 20 73 65 74 20 4d 53 47 4c 45 46 54 20  ark set MSGLEFT 
29270 22 65 6e 64 20 2d 20 31 20 63 68 61 72 22 0a 20  "end - 1 char". 
29280 20 20 20 2e 74 74 20 6d 61 72 6b 20 67 72 61 76     .tt mark grav
29290 69 74 79 20 4d 53 47 4c 45 46 54 20 6c 65 66 74  ity MSGLEFT left
292a0 0a 20 20 20 20 2e 74 74 20 69 6e 73 65 72 74 20  .    .tt insert 
292b0 65 6e 64 20 22 3a 29 22 20 65 6d 6f 74 69 63 6f  end ":)" emotico
292c0 6e 0a 20 20 20 20 2e 74 74 20 69 6d 61 67 65 20  n.    .tt image 
292d0 63 72 65 61 74 65 20 65 6e 64 20 2d 69 6d 61 67  create end -imag
292e0 65 20 24 69 6d 67 0a 20 20 20 20 70 61 63 6b 20  e $img.    pack 
292f0 2e 74 74 0a 20 20 20 20 75 70 64 61 74 65 3b 20  .tt.    update; 
29300 75 70 64 61 74 65 3b 20 75 70 64 61 74 65 0a 7d  update; update.}
29310 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 20 20 20 20   -cleanup {.    
29320 69 6d 61 67 65 20 64 65 6c 65 74 65 20 24 69 6d  image delete $im
29330 67 0a 20 20 20 20 64 65 73 74 72 6f 79 20 2e 74  g.    destroy .t
29340 74 0a 7d 0a 0a 74 65 73 74 20 74 65 78 74 44 69  t.}..test textDi
29350 73 70 2d 33 33 2e 30 20 7b 6f 6e 65 20 6c 69 6e  sp-33.0 {one lin
29360 65 20 6c 6f 6e 67 65 72 20 74 68 61 6e 20 66 69  e longer than fi
29370 74 73 20 69 6e 20 74 68 65 20 77 69 64 67 65 74  ts in the widget
29380 7d 20 7b 0a 20 20 20 20 70 61 63 6b 20 5b 74 65  } {.    pack [te
29390 78 74 20 2e 74 74 20 2d 77 72 61 70 20 63 68 61  xt .tt -wrap cha
293a0 72 5d 0a 20 20 20 20 2e 74 74 20 69 6e 73 65 72  r].    .tt inser
293b0 74 20 31 2e 30 20 5b 73 74 72 69 6e 67 20 72 65  t 1.0 [string re
293c0 70 65 61 74 20 22 6d 6f 72 65 20 77 72 61 70 20  peat "more wrap 
293d0 2b 20 22 20 33 30 30 5d 0a 20 20 20 20 75 70 64  + " 300].    upd
293e0 61 74 65 20 3b 20 75 70 64 61 74 65 20 3b 20 75  ate ; update ; u
293f0 70 64 61 74 65 0a 20 20 20 20 2e 74 74 20 73 65  pdate.    .tt se
29400 65 20 31 2e 30 0a 20 20 20 20 6c 69 6e 64 65 78  e 1.0.    lindex
29410 20 5b 2e 74 74 20 79 76 69 65 77 5d 20 30 0a 7d   [.tt yview] 0.}
29420 20 7b 30 2e 30 7d 0a 74 65 73 74 20 74 65 78 74   {0.0}.test text
29430 44 69 73 70 2d 33 33 2e 31 20 7b 6f 6e 65 20 6c  Disp-33.1 {one l
29440 69 6e 65 20 6c 6f 6e 67 65 72 20 74 68 61 6e 20  ine longer than 
29450 66 69 74 73 20 69 6e 20 74 68 65 20 77 69 64 67  fits in the widg
29460 65 74 7d 20 7b 0a 20 20 20 20 64 65 73 74 72 6f  et} {.    destro
29470 79 20 2e 74 74 0a 20 20 20 20 70 61 63 6b 20 5b  y .tt.    pack [
29480 74 65 78 74 20 2e 74 74 20 2d 77 72 61 70 20 63  text .tt -wrap c
29490 68 61 72 5d 0a 20 20 20 20 2e 74 74 20 69 6e 73  har].    .tt ins
294a0 65 72 74 20 31 2e 30 20 5b 73 74 72 69 6e 67 20  ert 1.0 [string 
294b0 72 65 70 65 61 74 20 22 6d 6f 72 65 20 77 72 61  repeat "more wra
294c0 70 20 2b 20 22 20 33 30 30 5d 0a 20 20 20 20 75  p + " 300].    u
294d0 70 64 61 74 65 20 3b 20 75 70 64 61 74 65 20 3b  pdate ; update ;
294e0 20 75 70 64 61 74 65 0a 20 20 20 20 2e 74 74 20   update.    .tt 
294f0 79 76 69 65 77 20 22 31 2e 30 20 2b 31 20 64 69  yview "1.0 +1 di
29500 73 70 6c 61 79 6c 69 6e 65 73 22 0a 20 20 20 20  splaylines".    
29510 69 66 20 7b 5b 6c 69 6e 64 65 78 20 5b 2e 74 74  if {[lindex [.tt
29520 20 79 76 69 65 77 5d 20 30 5d 20 3e 20 30 2e 31   yview] 0] > 0.1
29530 7d 20 7b 0a 09 73 65 74 20 72 65 73 75 6c 74 20  } {..set result 
29540 22 77 69 6e 64 6f 77 20 73 68 6f 75 6c 64 20 62  "window should b
29550 65 20 73 63 72 6f 6c 6c 65 64 20 74 6f 20 74 68  e scrolled to th
29560 65 20 74 6f 70 22 0a 20 20 20 20 7d 20 65 6c 73  e top".    } els
29570 65 20 7b 0a 09 73 65 74 20 72 65 73 75 6c 74 20  e {..set result 
29580 22 6f 6b 22 0a 20 20 20 20 7d 0a 7d 20 7b 6f 6b  "ok".    }.} {ok
29590 7d 0a 23 20 54 65 73 74 20 63 61 73 65 20 33 33  }.# Test case 33
295a0 2e 32 20 68 61 73 20 62 65 65 6e 20 72 65 6d 6f  .2 has been remo
295b0 76 65 64 2e 20 54 68 65 20 70 72 6f 62 6c 65 6d  ved. The problem
295c0 20 69 73 20 74 68 61 74 20 74 68 65 20 72 65 76   is that the rev
295d0 69 73 65 64 0a 23 20 69 6d 70 6c 65 6d 65 6e 74  ised.# implement
295e0 61 74 69 6f 6e 20 69 73 20 61 6c 73 6f 20 75 70  ation is also up
295f0 64 61 74 69 6e 67 20 74 68 65 20 6c 69 6e 65 20  dating the line 
29600 68 65 69 67 68 74 73 20 77 68 69 6c 65 20 63 6f  heights while co
29610 6d 70 75 74 69 6e 67 0a 23 20 74 68 65 20 64 69  mputing.# the di
29620 73 70 6c 61 79 20 6c 69 6e 65 73 20 66 6f 72 20  splay lines for 
29630 64 69 73 70 6c 61 79 69 6e 67 20 74 68 65 20 63  displaying the c
29640 6f 6e 74 65 6e 74 2c 20 73 6f 20 77 65 20 63 61  ontent, so we ca
29650 6e 6e 6f 74 0a 23 20 64 69 73 74 69 6e 67 75 69  nnot.# distingui
29660 73 68 20 61 6e 79 6d 6f 72 65 20 62 65 74 77 65  sh anymore betwe
29670 65 6e 20 74 68 65 20 64 69 73 70 6c 61 79 20 70  en the display p
29680 72 6f 63 65 73 73 20 61 6e 64 20 74 68 65 20 6c  rocess and the l
29690 69 6e 65 0a 23 20 68 65 69 67 68 74 20 63 61 6c  ine.# height cal
296a0 63 75 6c 61 74 69 6f 6e 2e 0a 23 74 65 73 74 20  culation..#test 
296b0 74 65 78 74 44 69 73 70 2d 33 33 2e 32 20 7b 6f  textDisp-33.2 {o
296c0 6e 65 20 6c 69 6e 65 20 6c 6f 6e 67 65 72 20 74  ne line longer t
296d0 68 61 6e 20 66 69 74 73 20 69 6e 20 74 68 65 20  han fits in the 
296e0 77 69 64 67 65 74 7d 20 7b 0a 23 20 20 20 20 64  widget} {.#    d
296f0 65 73 74 72 6f 79 20 2e 74 74 0a 23 20 20 20 20  estroy .tt.#    
29700 70 61 63 6b 20 5b 74 65 78 74 20 2e 74 74 20 2d  pack [text .tt -
29710 77 72 61 70 20 63 68 61 72 5d 0a 23 20 20 20 20  wrap char].#    
29720 73 65 74 20 74 6b 5f 74 65 78 74 48 65 69 67 68  set tk_textHeigh
29730 74 43 61 6c 63 20 22 22 0a 23 20 20 20 20 2e 74  tCalc "".#    .t
29740 74 20 69 6e 73 65 72 74 20 31 2e 30 20 5b 73 74  t insert 1.0 [st
29750 72 69 6e 67 20 72 65 70 65 61 74 20 22 6d 6f 72  ring repeat "mor
29760 65 20 77 72 61 70 20 2b 20 22 20 31 5d 0a 23 20  e wrap + " 1].# 
29770 20 20 20 61 66 74 65 72 20 31 30 30 20 3b 20 75     after 100 ; u
29780 70 64 61 74 65 20 69 64 6c 65 74 61 73 6b 73 0a  pdate idletasks.
29790 23 20 20 20 20 23 20 4e 6f 74 68 69 6e 67 20 73  #    # Nothing s
297a0 68 6f 75 6c 64 20 68 61 76 65 20 62 65 65 6e 20  hould have been 
297b0 72 65 63 61 6c 63 75 6c 61 74 65 64 2e 0a 23 20  recalculated..# 
297c0 20 20 20 73 65 74 20 74 6b 5f 74 65 78 74 48 65     set tk_textHe
297d0 69 67 68 74 43 61 6c 63 0a 23 7d 20 7b 7d 0a 74  ightCalc.#} {}.t
297e0 65 73 74 20 74 65 78 74 44 69 73 70 2d 33 33 2e  est textDisp-33.
297f0 33 20 7b 6f 6e 65 20 6c 69 6e 65 20 6c 6f 6e 67  3 {one line long
29800 65 72 20 74 68 61 6e 20 66 69 74 73 20 69 6e 20  er than fits in 
29810 74 68 65 20 77 69 64 67 65 74 7d 20 7b 0a 20 20  the widget} {.  
29820 20 20 64 65 73 74 72 6f 79 20 2e 74 74 0a 20 20    destroy .tt.  
29830 20 20 70 61 63 6b 20 5b 74 65 78 74 20 2e 74 74    pack [text .tt
29840 20 2d 77 72 61 70 20 63 68 61 72 5d 0a 20 20 20   -wrap char].   
29850 20 73 65 74 20 74 6b 5f 74 65 78 74 48 65 69 67   set tk_textHeig
29860 68 74 43 61 6c 63 20 22 22 0a 20 20 20 20 2e 74  htCalc "".    .t
29870 74 20 69 6e 73 65 72 74 20 31 2e 30 20 5b 73 74  t insert 1.0 [st
29880 72 69 6e 67 20 72 65 70 65 61 74 20 22 6d 6f 72  ring repeat "mor
29890 65 20 77 72 61 70 20 2b 20 22 20 33 30 30 5d 0a  e wrap + " 300].
298a0 20 20 20 20 2e 74 74 20 73 79 6e 63 0a 20 20 20      .tt sync.   
298b0 20 23 20 45 61 63 68 20 6c 69 6e 65 20 73 68 6f   # Each line sho
298c0 75 6c 64 20 68 61 76 65 20 62 65 65 6e 20 72 65  uld have been re
298d0 63 61 6c 63 75 6c 61 74 65 64 20 6a 75 73 74 20  calculated just 
298e0 6f 6e 63 65 0a 20 20 20 20 65 78 70 72 20 7b 5b  once.    expr {[
298f0 6c 6c 65 6e 67 74 68 20 24 74 6b 5f 74 65 78 74  llength $tk_text
29900 48 65 69 67 68 74 43 61 6c 63 5d 20 3d 3d 20 5b  HeightCalc] == [
29910 2e 74 74 20 63 6f 75 6e 74 20 2d 64 69 73 70 6c  .tt count -displ
29920 61 79 6c 69 6e 65 73 20 31 2e 30 20 65 6e 64 5d  aylines 1.0 end]
29930 7d 0a 7d 20 7b 31 7d 0a 74 65 73 74 20 74 65 78  }.} {1}.test tex
29940 74 44 69 73 70 2d 33 33 2e 34 20 7b 6f 6e 65 20  tDisp-33.4 {one 
29950 6c 69 6e 65 20 6c 6f 6e 67 65 72 20 74 68 61 6e  line longer than
29960 20 66 69 74 73 20 69 6e 20 74 68 65 20 77 69 64   fits in the wid
29970 67 65 74 7d 20 7b 0a 20 20 20 20 64 65 73 74 72  get} {.    destr
29980 6f 79 20 2e 74 74 0a 20 20 20 20 70 61 63 6b 20  oy .tt.    pack 
29990 5b 74 65 78 74 20 2e 74 74 20 2d 77 72 61 70 20  [text .tt -wrap 
299a0 63 68 61 72 5d 0a 20 20 20 20 73 65 74 20 74 6b  char].    set tk
299b0 5f 74 65 78 74 48 65 69 67 68 74 43 61 6c 63 20  _textHeightCalc 
299c0 22 22 0a 20 20 20 20 2e 74 74 20 69 6e 73 65 72  "".    .tt inser
299d0 74 20 31 2e 30 20 5b 73 74 72 69 6e 67 20 72 65  t 1.0 [string re
299e0 70 65 61 74 20 22 6d 6f 72 65 20 77 72 61 70 20  peat "more wrap 
299f0 2b 20 22 20 33 30 30 5d 0a 20 20 20 20 75 70 64  + " 300].    upd
29a00 61 74 65 20 3b 20 75 70 64 61 74 65 20 3b 20 75  ate ; update ; u
29a10 70 64 61 74 65 0a 20 20 20 20 73 65 74 20 69 64  pdate.    set id
29a20 78 20 5b 2e 74 74 20 69 6e 64 65 78 20 22 31 2e  x [.tt index "1.
29a30 30 20 2b 20 31 20 64 69 73 70 6c 61 79 6c 69 6e  0 + 1 displaylin
29a40 65 73 22 5d 0a 20 20 20 20 2e 74 74 20 79 76 69  es"].    .tt yvi
29a50 65 77 20 24 69 64 78 0a 20 20 20 20 69 66 20 7b  ew $idx.    if {
29a60 5b 6c 69 6e 64 65 78 20 5b 2e 74 74 20 79 76 69  [lindex [.tt yvi
29a70 65 77 5d 20 30 5d 20 3e 20 30 2e 31 7d 20 7b 0a  ew] 0] > 0.1} {.
29a80 09 73 65 74 20 72 65 73 75 6c 74 20 22 77 69 6e  .set result "win
29a90 64 6f 77 20 73 68 6f 75 6c 64 20 62 65 20 73 63  dow should be sc
29aa0 72 6f 6c 6c 65 64 20 74 6f 20 74 68 65 20 74 6f  rolled to the to
29ab0 70 22 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a  p".    } else {.
29ac0 09 73 65 74 20 72 65 73 75 6c 74 20 22 6f 6b 22  .set result "ok"
29ad0 0a 20 20 20 20 7d 0a 20 20 20 20 73 65 74 20 69  .    }.    set i
29ae0 64 78 20 5b 2e 74 74 20 69 6e 64 65 78 20 22 31  dx [.tt index "1
29af0 2e 30 20 2b 20 31 20 64 69 73 70 6c 61 79 6c 69  .0 + 1 displayli
29b00 6e 65 73 22 5d 0a 20 20 20 20 73 65 74 20 72 65  nes"].    set re
29b10 73 75 6c 74 0a 7d 20 7b 6f 6b 7d 0a 64 65 73 74  sult.} {ok}.dest
29b20 72 6f 79 20 2e 74 74 0a 74 65 73 74 20 74 65 78  roy .tt.test tex
29b30 74 44 69 73 70 2d 33 33 2e 35 20 7b 62 6f 6c 64  tDisp-33.5 {bold
29b40 20 6f 72 20 69 74 61 6c 69 63 20 66 6f 6e 74 73   or italic fonts
29b50 7d 20 77 69 6e 20 7b 0a 20 20 20 20 64 65 73 74  } win {.    dest
29b60 72 6f 79 20 2e 74 74 0a 20 20 20 20 70 61 63 6b  roy .tt.    pack
29b70 20 5b 74 65 78 74 20 2e 74 74 20 2d 77 72 61 70   [text .tt -wrap
29b80 20 63 68 61 72 20 2d 66 6f 6e 74 20 7b 7b 4d 53   char -font {{MS
29b90 20 53 61 6e 73 20 53 65 72 69 66 7d 20 31 35 7d   Sans Serif} 15}
29ba0 5d 0a 20 20 20 20 66 6f 6e 74 20 63 72 65 61 74  ].    font creat
29bb0 65 20 6e 6f 20 2d 66 61 6d 69 6c 79 20 5b 6c 69  e no -family [li
29bc0 6e 64 65 78 20 5b 2e 74 74 20 63 67 65 74 20 2d  ndex [.tt cget -
29bd0 66 6f 6e 74 5d 20 30 5d 20 2d 73 69 7a 65 20 32  font] 0] -size 2
29be0 34 0a 20 20 20 20 66 6f 6e 74 20 63 72 65 61 74  4.    font creat
29bf0 65 20 62 69 20 2d 66 61 6d 69 6c 79 20 5b 6c 69  e bi -family [li
29c00 6e 64 65 78 20 5b 2e 74 74 20 63 67 65 74 20 2d  ndex [.tt cget -
29c10 66 6f 6e 74 5d 20 30 5d 20 2d 73 69 7a 65 20 32  font] 0] -size 2
29c20 34 0a 20 20 20 20 66 6f 6e 74 20 63 6f 6e 66 69  4.    font confi
29c30 67 75 72 65 20 62 69 20 2d 77 65 69 67 68 74 20  gure bi -weight 
29c40 62 6f 6c 64 20 2d 73 6c 61 6e 74 20 69 74 61 6c  bold -slant ital
29c50 69 63 0a 20 20 20 20 2e 74 74 20 74 61 67 20 63  ic.    .tt tag c
29c60 6f 6e 66 69 67 75 72 65 20 62 69 20 2d 66 6f 6e  onfigure bi -fon
29c70 74 20 62 69 0a 20 20 20 20 2e 74 74 20 74 61 67  t bi.    .tt tag
29c80 20 63 6f 6e 66 69 67 75 72 65 20 6e 6f 20 2d 66   configure no -f
29c90 6f 6e 74 20 6e 6f 0a 20 20 20 20 2e 74 74 20 69  ont no.    .tt i
29ca0 6e 73 65 72 74 20 65 6e 64 20 61 62 63 64 20 6e  nsert end abcd n
29cb0 6f 20 65 66 67 68 20 62 69 20 69 6a 6b 6c 5c 6e  o efgh bi ijkl\n
29cc0 20 6e 6f 0a 20 20 20 20 75 70 64 61 74 65 0a 20   no.    update. 
29cd0 20 20 20 73 65 74 20 62 62 20 7b 7d 0a 20 20 20     set bb {}.   
29ce0 20 66 6f 72 20 7b 73 65 74 20 69 20 30 7d 20 7b   for {set i 0} {
29cf0 24 69 20 3c 20 31 32 7d 20 7b 69 6e 63 72 20 69  $i < 12} {incr i
29d00 20 34 7d 20 7b 0a 09 6c 61 70 70 65 6e 64 20 62   4} {..lappend b
29d10 62 20 5b 6c 69 6e 64 65 78 20 5b 2e 74 74 20 62  b [lindex [.tt b
29d20 62 6f 78 20 31 2e 24 69 5d 20 30 5d 0a 20 20 20  box 1.$i] 0].   
29d30 20 7d 0a 20 20 20 20 66 6f 72 65 61 63 68 20 7b   }.    foreach {
29d40 61 20 62 20 63 7d 20 24 62 62 20 7b 7d 0a 20 20  a b c} $bb {}.  
29d50 20 20 75 6e 73 65 74 20 62 62 0a 20 20 20 20 69    unset bb.    i
29d60 66 20 7b 28 24 62 20 2d 20 24 61 29 20 2a 20 31  f {($b - $a) * 1
29d70 2e 35 20 3c 20 28 24 63 20 2d 20 24 62 29 7d 20  .5 < ($c - $b)} 
29d80 7b 0a 09 73 65 74 20 72 65 73 75 6c 74 20 22 69  {..set result "i
29d90 74 61 6c 69 63 20 66 6f 6e 74 20 68 61 73 20 6d  talic font has m
29da0 75 63 68 20 74 6f 6f 20 6d 75 63 68 20 73 70 61  uch too much spa
29db0 63 65 22 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b  ce".    } else {
29dc0 0a 09 73 65 74 20 72 65 73 75 6c 74 20 22 69 74  ..set result "it
29dd0 61 6c 69 63 20 66 6f 6e 74 20 6d 65 61 73 75 72  alic font measur
29de0 65 6d 65 6e 74 20 6f 6b 22 0a 20 20 20 20 7d 0a  ement ok".    }.
29df0 7d 20 7b 69 74 61 6c 69 63 20 66 6f 6e 74 20 6d  } {italic font m
29e00 65 61 73 75 72 65 6d 65 6e 74 20 6f 6b 7d 0a 64  easurement ok}.d
29e10 65 73 74 72 6f 79 20 2e 74 74 0a 0a 74 65 73 74  estroy .tt..test
29e20 20 74 65 78 74 44 69 73 70 2d 33 34 2e 31 20 7b   textDisp-34.1 {
29e30 4c 69 6e 65 20 68 65 69 67 68 74 73 20 72 65 63  Line heights rec
29e40 61 6c 63 75 6c 61 74 69 6f 6e 20 70 72 6f 62 6c  alculation probl
29e50 65 6d 3a 20 62 75 67 20 32 36 37 37 38 39 30 7d  em: bug 2677890}
29e60 20 2d 73 65 74 75 70 20 7b 0a 20 20 20 20 70 61   -setup {.    pa
29e70 63 6b 20 5b 74 65 78 74 20 2e 74 31 5d 20 2d 65  ck [text .t1] -e
29e80 78 70 61 6e 64 20 31 20 2d 66 69 6c 6c 20 62 6f  xpand 1 -fill bo
29e90 74 68 0a 20 20 20 20 73 65 74 20 74 78 74 20 22  th.    set txt "
29ea0 22 0a 20 20 20 20 66 6f 72 20 7b 73 65 74 20 69  ".    for {set i
29eb0 20 31 7d 20 7b 24 69 20 3c 20 31 30 30 7d 20 7b   1} {$i < 100} {
29ec0 69 6e 63 72 20 69 7d 20 7b 0a 20 20 20 20 20 20  incr i} {.      
29ed0 20 20 61 70 70 65 6e 64 20 74 78 74 20 22 4c 69    append txt "Li
29ee0 6e 65 20 24 69 5c 6e 22 0a 20 20 20 20 7d 0a 20  ne $i\n".    }. 
29ef0 20 20 20 73 65 74 20 72 65 73 75 6c 74 20 7b 7d     set result {}
29f00 0a 7d 20 2d 62 6f 64 79 20 7b 0a 20 20 20 20 2e  .} -body {.    .
29f10 74 31 20 69 6e 73 65 72 74 20 65 6e 64 20 24 74  t1 insert end $t
29f20 78 74 0a 20 20 20 20 73 65 74 20 67 65 20 5b 77  xt.    set ge [w
29f30 69 6e 66 6f 20 67 65 6f 6d 65 74 72 79 20 2e 5d  info geometry .]
29f40 0a 20 20 20 20 73 63 61 6e 20 24 67 65 20 22 25  .    scan $ge "%
29f50 64 78 25 64 2b 25 64 2b 25 64 22 20 77 69 64 74  dx%d+%d+%d" widt
29f60 68 20 68 65 69 67 68 74 20 6c 65 66 74 20 74 6f  h height left to
29f70 70 0a 20 20 20 20 75 70 64 61 74 65 0a 20 20 20  p.    update.   
29f80 20 2e 74 31 20 73 79 6e 63 0a 20 20 20 20 73 65   .t1 sync.    se
29f90 74 20 6e 65 67 61 74 69 76 65 20 30 0a 20 20 20  t negative 0.   
29fa0 20 62 69 6e 64 20 2e 74 31 20 3c 3c 57 69 64 67   bind .t1 <<Widg
29fb0 65 74 56 69 65 77 53 79 6e 63 3e 3e 20 7b 20 69  etViewSync>> { i
29fc0 66 20 7b 25 64 20 3c 20 30 7d 20 7b 73 65 74 20  f {%d < 0} {set 
29fd0 6e 65 67 61 74 69 76 65 20 31 7d 20 7d 0a 20 20  negative 1} }.  
29fe0 20 20 23 20 57 69 74 68 6f 75 74 20 74 68 65 20    # Without the 
29ff0 66 69 78 20 66 6f 72 20 62 75 67 20 32 36 37 37  fix for bug 2677
2a000 38 39 30 2c 20 63 68 61 6e 67 69 6e 67 20 74 68  890, changing th
2a010 65 20 77 69 64 74 68 20 6f 66 20 74 68 65 20 74  e width of the t
2a020 6f 70 6c 65 76 65 6c 0a 20 20 20 20 23 20 77 69  oplevel.    # wi
2a030 6c 6c 20 6c 61 75 6e 63 68 20 72 65 63 6f 6d 70  ll launch recomp
2a040 75 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 6c  utation of the l
2a050 69 6e 65 20 68 65 69 67 68 74 73 2c 20 62 75 74  ine heights, but
2a060 20 77 69 6c 6c 20 70 72 6f 64 75 63 65 20 6e 65   will produce ne
2a070 67 61 74 69 76 65 0a 20 20 20 20 23 20 6e 75 6d  gative.    # num
2a080 62 65 72 20 6f 66 20 73 74 69 6c 6c 20 72 65 6d  ber of still rem
2a090 61 69 6e 69 6e 67 20 6f 75 74 64 61 74 65 64 20  aining outdated 
2a0a0 6c 69 6e 65 73 2c 20 77 68 69 63 68 20 69 73 20  lines, which is 
2a0b0 6f 62 76 69 6f 75 73 6c 79 20 77 72 6f 6e 67 2e  obviously wrong.
2a0c0 0a 20 20 20 20 23 20 54 68 75 73 20 77 65 20 75  .    # Thus we u
2a0d0 73 65 20 74 68 69 73 20 77 61 79 20 74 6f 20 63  se this way to c
2a0e0 68 65 63 6b 20 66 6f 72 20 72 65 67 72 65 73 73  heck for regress
2a0f0 69 6f 6e 20 72 65 67 61 72 64 69 6e 67 20 62 75  ion regarding bu
2a100 67 20 32 36 37 37 38 39 30 2c 0a 20 20 20 20 23  g 2677890,.    #
2a110 20 69 2e 65 2e 20 74 6f 20 63 68 65 63 6b 20 74   i.e. to check t
2a120 68 61 74 20 74 68 65 20 66 69 78 20 66 6f 72 20  hat the fix for 
2a130 74 68 69 73 20 62 75 67 20 72 65 61 6c 6c 79 20  this bug really 
2a140 69 73 20 73 74 69 6c 6c 20 69 6e 2e 0a 20 20 20  is still in..   
2a150 20 77 6d 20 67 65 6f 6d 65 74 72 79 20 2e 20 22   wm geometry . "
2a160 5b 65 78 70 72 20 7b 24 77 69 64 74 68 20 2a 20  [expr {$width * 
2a170 32 7d 5d 78 24 68 65 69 67 68 74 2b 24 6c 65 66  2}]x$height+$lef
2a180 74 2b 24 74 6f 70 22 0a 20 20 20 20 75 70 64 61  t+$top".    upda
2a190 74 65 0a 20 20 20 20 2e 74 31 20 73 79 6e 63 0a  te.    .t1 sync.
2a1a0 20 20 20 20 73 65 74 20 6e 65 67 61 74 69 76 65      set negative
2a1b0 0a 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0a 20 20  .} -cleanup {.  
2a1c0 20 20 64 65 73 74 72 6f 79 20 2e 74 31 0a 7d 20    destroy .t1.} 
2a1d0 2d 72 65 73 75 6c 74 20 7b 30 7d 0a 0a 74 65 73  -result {0}..tes
2a1e0 74 20 74 65 78 74 44 69 73 70 2d 33 35 2e 31 20  t textDisp-35.1 
2a1f0 7b 49 6e 69 74 20 76 61 6c 75 65 20 6f 66 20 63  {Init value of c
2a200 68 61 72 48 65 69 67 68 74 20 2d 20 44 61 6e 63  harHeight - Danc
2a210 69 6e 67 20 73 63 72 6f 6c 6c 62 61 72 20 62 75  ing scrollbar bu
2a220 67 20 31 34 39 39 31 36 35 7d 20 2d 73 65 74 75  g 1499165} -setu
2a230 70 20 7b 0a 20 20 20 20 70 61 63 6b 20 5b 74 65  p {.    pack [te
2a240 78 74 20 2e 74 31 5d 20 2d 66 69 6c 6c 20 62 6f  xt .t1] -fill bo
2a250 74 68 20 2d 65 78 70 61 6e 64 20 79 20 2d 73 69  th -expand y -si
2a260 64 65 20 6c 65 66 74 0a 20 20 20 20 23 20 57 65  de left.    # We
2a270 20 64 6f 6e 27 74 20 77 61 6e 74 20 64 65 62 75   don't want debu
2a280 67 20 66 6f 72 20 74 68 69 73 20 74 65 73 74 20  g for this test 
2a290 63 61 73 65 2c 20 62 65 63 61 75 73 65 20 69 74  case, because it
2a2a0 20 74 61 6b 65 73 20 73 6f 6d 65 20 68 6f 75 72   takes some hour
2a2b0 73 0a 20 20 20 20 23 20 69 66 20 76 61 6c 67 72  s.    # if valgr
2a2c0 69 6e 64 20 63 68 65 63 6b 20 69 73 20 66 75 6c  ind check is ful
2a2d0 6c 79 20 65 6e 61 62 6c 65 64 2e 20 49 6e 20 74  ly enabled. In t
2a2e0 68 69 73 20 74 65 73 74 20 63 61 73 65 20 6f 6e  his test case on
2a2f0 6c 79 20 74 68 65 20 73 63 72 6f 6c 6c 62 61 72  ly the scrollbar
2a300 0a 20 20 20 20 23 20 62 65 68 61 76 69 6f 72 20  .    # behavior 
2a310 69 73 20 72 65 6c 65 76 61 6e 74 2c 20 61 6c 6c  is relevant, all
2a320 20 6f 74 68 65 72 20 69 6e 76 6f 6c 76 65 64 20   other involved 
2a330 66 75 6e 63 74 69 6f 6e 73 20 28 69 6e 73 65 72  functions (inser
2a340 74 2c 20 73 65 65 2c 20 2e 2e 2e 29 20 61 72 65  t, see, ...) are
2a350 0a 20 20 20 20 23 20 61 6c 72 65 61 64 79 20 74  .    # already t
2a360 65 73 74 65 64 20 77 69 74 68 20 64 65 62 75 67  ested with debug
2a370 20 6d 6f 64 65 20 69 6e 20 6f 74 68 65 72 20 74   mode in other t
2a380 65 73 74 20 63 61 73 65 73 2e 0a 20 20 20 20 2e  est cases..    .
2a390 74 20 64 65 62 75 67 20 6f 66 66 0a 20 20 20 20  t debug off.    
2a3a0 2e 74 20 69 6e 73 65 72 74 20 65 6e 64 20 22 5b  .t insert end "[
2a3b0 73 74 72 69 6e 67 20 72 65 70 65 61 74 20 61 5c  string repeat a\
2a3c0 6e 62 5c 6e 63 5c 6e 20 35 30 30 30 30 30 5d 54  nb\nc\n 500000]T
2a3d0 48 45 20 45 4e 44 5c 6e 22 0a 20 20 20 20 73 65  HE END\n".    se
2a3e0 74 20 72 65 73 20 7b 7d 0a 7d 20 2d 62 6f 64 79  t res {}.} -body
2a3f0 20 7b 0a 20 20 20 20 2e 74 20 73 65 65 20 31 30   {.    .t see 10
2a400 30 30 30 2e 30 0a 20 20 20 20 61 66 74 65 72 20  000.0.    after 
2a410 33 30 30 20 7b 73 65 74 20 66 72 31 20 5b 2e 74  300 {set fr1 [.t
2a420 20 79 76 69 65 77 5d 20 3b 20 73 65 74 20 64 6f   yview] ; set do
2a430 6e 65 20 31 7d 0a 20 20 20 20 76 77 61 69 74 20  ne 1}.    vwait 
2a440 64 6f 6e 65 0a 20 20 20 20 61 66 74 65 72 20 33  done.    after 3
2a450 30 30 20 7b 73 65 74 20 66 72 32 20 5b 2e 74 20  00 {set fr2 [.t 
2a460 79 76 69 65 77 5d 20 3b 20 73 65 74 20 64 6f 6e  yview] ; set don
2a470 65 20 31 7d 0a 20 20 20 20 76 77 61 69 74 20 64  e 1}.    vwait d
2a480 6f 6e 65 0a 20 20 20 20 6c 61 70 70 65 6e 64 20  one.    lappend 
2a490 72 65 73 20 5b 65 78 70 72 20 7b 5b 6c 69 6e 64  res [expr {[lind
2a4a0 65 78 20 24 66 72 31 20 30 5d 20 3d 3d 20 5b 6c  ex $fr1 0] == [l
2a4b0 69 6e 64 65 78 20 24 66 72 32 20 30 5d 7d 5d 0a  index $fr2 0]}].
2a4c0 20 20 20 20 6c 61 70 70 65 6e 64 20 72 65 73 20      lappend res 
2a4d0 5b 65 78 70 72 20 7b 5b 6c 69 6e 64 65 78 20 24  [expr {[lindex $
2a4e0 66 72 31 20 31 5d 20 3d 3d 20 5b 6c 69 6e 64 65  fr1 1] == [linde
2a4f0 78 20 24 66 72 32 20 31 5d 7d 5d 0a 7d 20 2d 63  x $fr2 1]}].} -c
2a500 6c 65 61 6e 75 70 20 7b 0a 20 20 20 20 2e 74 20  leanup {.    .t 
2a510 64 65 62 75 67 20 6f 6e 20 3b 23 20 72 65 2d 65  debug on ;# re-e
2a520 6e 61 62 6c 65 20 64 65 62 75 67 67 69 6e 67 0a  nable debugging.
2a530 20 20 20 20 64 65 73 74 72 6f 79 20 2e 74 31 0a      destroy .t1.
2a540 7d 20 2d 72 65 73 75 6c 74 20 7b 31 20 31 7d 0a  } -result {1 1}.
2a550 0a 74 65 73 74 20 74 65 78 74 44 69 73 70 2d 33  .test textDisp-3
2a560 36 2e 31 20 7b 44 69 73 70 6c 61 79 20 62 75 67  6.1 {Display bug
2a570 20 77 69 74 68 20 27 79 76 69 65 77 20 69 6e 73   with 'yview ins
2a580 65 72 74 27 7d 20 2d 73 65 74 75 70 20 7b 0a 20  ert'} -setup {. 
2a590 20 20 74 65 78 74 20 2e 74 31 20 2d 66 6f 6e 74    text .t1 -font
2a5a0 20 24 66 69 78 65 64 46 6f 6e 74 20 2d 77 69 64   $fixedFont -wid
2a5b0 74 68 20 32 30 20 2d 68 65 69 67 68 74 20 33 20  th 20 -height 3 
2a5c0 2d 77 72 61 70 20 77 6f 72 64 0a 20 20 20 70 61  -wrap word.   pa
2a5d0 63 6b 20 2e 74 31 0a 20 20 20 2e 74 31 20 64 65  ck .t1.   .t1 de
2a5e0 6c 65 74 65 20 31 2e 30 20 65 6e 64 0a 20 20 20  lete 1.0 end.   
2a5f0 2e 74 31 20 74 61 67 20 63 6f 6e 66 69 67 75 72  .t1 tag configur
2a600 65 20 65 6c 69 64 65 20 2d 65 6c 69 64 65 20 31  e elide -elide 1
2a610 0a 20 20 20 2e 74 31 20 69 6e 73 65 72 74 20 65  .   .t1 insert e
2a620 6e 64 20 22 4c 69 6e 65 20 31 5c 6e 54 68 69 73  nd "Line 1\nThis
2a630 20 6c 69 6e 65 20 69 73 20 77 72 61 70 70 69 6e   line is wrappin
2a640 67 20 61 72 6f 75 6e 64 20 74 77 6f 20 74 69 6d  g around two tim
2a650 65 73 2e 22 0a 7d 20 2d 62 6f 64 79 20 7b 0a 20  es.".} -body {. 
2a660 20 20 2e 74 31 20 74 61 67 20 61 64 64 20 65 6c    .t1 tag add el
2a670 69 64 65 20 31 2e 33 20 32 2e 30 0a 20 20 20 2e  ide 1.3 2.0.   .
2a680 74 31 20 79 76 69 65 77 20 69 6e 73 65 72 74 0a  t1 yview insert.
2a690 20 20 20 75 70 64 61 74 65 0a 20 20 20 23 20 77     update.   # w
2a6a0 69 73 68 38 2e 37 20 6e 6f 77 20 69 73 20 63 72  ish8.7 now is cr
2a6b0 61 73 68 69 6e 67 0a 20 20 20 2e 74 31 20 79 76  ashing.   .t1 yv
2a6c0 69 65 77 20 73 63 72 6f 6c 6c 20 2d 31 20 70 69  iew scroll -1 pi
2a6d0 78 65 6c 73 0a 7d 20 2d 63 6c 65 61 6e 75 70 20  xels.} -cleanup 
2a6e0 7b 0a 20 20 20 20 64 65 73 74 72 6f 79 20 2e 74  {.    destroy .t
2a6f0 31 0a 7d 20 2d 72 65 73 75 6c 74 20 7b 7d 0a 0a  1.} -result {}..
2a700 64 65 6c 65 74 65 57 69 6e 64 6f 77 73 0a 6f 70  deleteWindows.op
2a710 74 69 6f 6e 20 63 6c 65 61 72 0a 0a 23 20 63 6c  tion clear..# cl
2a720 65 61 6e 75 70 0a 63 6c 65 61 6e 75 70 54 65 73  eanup.cleanupTes
2a730 74 73 0a 72 65 74 75 72 6e 0a 0a 23 20 4c 6f 63  ts.return..# Loc
2a740 61 6c 20 56 61 72 69 61 62 6c 65 73 3a 0a 23 20  al Variables:.# 
2a750 6d 6f 64 65 3a 20 74 63 6c 0a 23 20 45 6e 64 3a  mode: tcl.# End:
2a760 0a 23 20 76 69 3a 73 65 74 20 74 73 3d 38 20 73  .# vi:set ts=8 s
2a770 77 3d 34 3a 0a                                   w=4:.