textDisp.test
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:93k
源码类别:

通讯编程

开发平台:

Visual C++

  1. # This file is a Tcl script to test the code in the file tkTextDisp.c.
  2. # This file is organized in the standard fashion for Tcl tests.
  3. #
  4. # Copyright (c) 1994 The Regents of the University of California.
  5. # Copyright (c) 1994-1997 Sun Microsystems, Inc.
  6. # Copyright (c) 1998-1999 by Scriptics Corporation.
  7. # All rights reserved.
  8. #
  9. # RCS: @(#) $Id: textDisp.test,v 1.8.2.1 2004/02/14 01:54:49 hobbs Exp $
  10. package require tcltest 2.1
  11. namespace import -force tcltest::configure
  12. namespace import -force tcltest::testsDirectory
  13. configure -testdir [file join [pwd] [file dirname [info script]]]
  14. configure -loadfile [file join [testsDirectory] constraints.tcl]
  15. tcltest::loadTestedCommands
  16. namespace import -force tcltest::interpreter
  17. namespace import -force tcltest::makeFile
  18. namespace import -force tcltest::removeFile
  19. # The procedure below is used as the scrolling command for the text;
  20. # it just saves the scrolling information in a variable "scrollInfo".
  21. proc scroll args {
  22.     global scrollInfo
  23.     set scrollInfo $args
  24. }
  25. # The procedure below is used to generate errors during scrolling commands.
  26. proc scrollError args {
  27.     error "scrolling error"
  28. }
  29. # Create entries in the option database to be sure that geometry options
  30. # like border width have predictable values.
  31. option add *Text.borderWidth 2
  32. option add *Text.highlightThickness 2
  33. # The frame .f is needed to make sure that the overall window is always
  34. # fairly wide, even if the text window is very narrow.  This is needed
  35. # because some window managers don't allow the overall width of a window
  36. # to get very narrow.
  37. frame .f -width 100 -height 20
  38. pack append . .f left
  39. set fixedFont {Courier -12}
  40. set fixedHeight [font metrics $fixedFont -linespace]
  41. set fixedWidth [font measure $fixedFont m]
  42. set varFont {Times -14}
  43. set bigFont {Helvetica -24}
  44. text .t -font $fixedFont -width 20 -height 10 -yscrollcommand scroll
  45. pack append . .t {top expand fill}
  46. .t tag configure big -font $bigFont
  47. .t debug on
  48. wm geometry . {}
  49. # The statements below reset the main window;  it's needed if the window
  50. # manager is mwm to make mwm forget about a previous minimum size setting.
  51. wm withdraw .
  52. wm minsize . 1 1
  53. wm positionfrom . user
  54. wm deiconify .
  55. update
  56. # Some window managers (like olwm under SunOS 4.1.3) misbehave in a way
  57. # that tends to march windows off the top and left of the screen.  If
  58. # this happens, some tests will fail because parts of the window will
  59. # not need to be displayed (because they're off-screen).  To keep this
  60. # from happening, move the window if it's getting near the left or top
  61. # edges of the screen.
  62. if {([winfo rooty .] < 50) || ([winfo rootx .] < 50)} {
  63.     wm geom . +50+50
  64. }
  65. test textDisp-1.1 {GetStyle procedure, priorities and tab stops} {
  66.     .t delete 1.0 end
  67.     .t insert 1.0 "xty"
  68.     .t tag delete x y z
  69.     .t tag configure x -tabs {50}
  70.     .t tag configure y -foreground black
  71.     .t tag configure z -tabs {70}
  72.     .t tag add x 1.0 1.end
  73.     .t tag add y 1.0 1.end
  74.     .t tag add z 1.0 1.end
  75.     update idletasks
  76.     set x [lindex [.t bbox 1.2] 0]
  77.     .t tag configure z -tabs {}
  78.     lappend x [lindex [.t bbox 1.2] 0]
  79.     .t tag configure z -tabs {30}
  80.     .t tag raise x
  81.     update idletasks
  82.     lappend x [lindex [.t bbox 1.2] 0]
  83. } {75 55 55}
  84. .t tag delete x y z
  85. test textDisp-1.2 {GetStyle procedure, wrapmode} {fonts} {
  86.     .t configure -wrap char
  87.     .t delete 1.0 end
  88.     .t insert 1.0 "abcdnefg hijkl mnop qrstuv wxyz"
  89.     .t tag configure x -wrap word
  90.     .t tag configure y -wrap none
  91.     .t tag raise y
  92.     update
  93.     set result [list [.t bbox 2.20]]
  94.     .t tag add x 2.0 2.1
  95.     lappend result [.t bbox 2.20]
  96.     .t tag add y 1.end 2.2
  97.     lappend result [.t bbox 2.20]
  98. } {{5 31 7 13} {40 31 7 13} {}}
  99. .t tag delete x y
  100. test textDisp-2.1 {LayoutDLine, basics} {
  101.     .t configure -wrap char
  102.     .t delete 1.0 end
  103.     .t insert 1.0 "This is some sample text for testing."
  104.     list [.t bbox 1.19] [.t bbox 1.20]
  105. } [list [list [expr 5 + $fixedWidth * 19] 5 $fixedWidth $fixedHeight] [list 5 [expr 5 + $fixedHeight] $fixedWidth $fixedHeight]]
  106. test textDisp-2.2 {LayoutDLine, basics} {fonts} {
  107.     .t configure -wrap char
  108.     .t delete 1.0 end
  109.     .t insert 1.0 "This isx some sample text for testing."
  110.     list [.t bbox 1.19] [.t bbox 1.20]
  111. } {{138 5 7 13} {5 18 7 13}}
  112. test textDisp-2.3 {LayoutDLine, basics} {fonts} {
  113.     .t configure -wrap char
  114.     .t delete 1.0 end
  115.     .t insert 1.0 "This isxxx some sample text for testing."
  116.     list [.t bbox 1.19] [.t bbox 1.20]
  117. } {{138 5 7 13} {5 18 7 13}}
  118. test textDisp-2.4 {LayoutDLine, word wrap} {fonts} {
  119.     .t configure -wrap word
  120.     .t delete 1.0 end
  121.     .t insert 1.0 "This is some sample text for testing."
  122.     list [.t bbox 1.19] [.t bbox 1.20]
  123. } {{138 5 7 13} {5 18 7 13}}
  124. test textDisp-2.5 {LayoutDLine, word wrap} {fonts} {
  125.     .t configure -wrap word
  126.     .t delete 1.0 end
  127.     .t insert 1.0 "This isx some sample text for testing."
  128.     list [.t bbox 1.13] [.t bbox 1.14] [.t bbox 1.19]
  129. } {{96 5 49 13} {5 18 7 13} {40 18 7 13}}
  130. test textDisp-2.6 {LayoutDLine, word wrap} {fonts} {
  131.     .t configure -wrap word
  132.     .t delete 1.0 end
  133.     .t insert 1.0 "This isxxx some sample text for testing."
  134.     list [.t bbox 1.15] [.t bbox 1.16]
  135. } {{110 5 35 13} {5 18 7 13}}
  136. test textDisp-2.7 {LayoutDLine, marks and tags} {fonts} {
  137.     .t configure -wrap word
  138.     .t delete 1.0 end
  139.     .t insert 1.0 "This isxxx some sample text for testing."
  140.     .t tag add foo 1.4 1.6
  141.     .t mark set insert 1.8
  142.     list [.t bbox 1.2] [.t bbox 1.5] [.t bbox 1.11]
  143. } {{19 5 7 13} {40 5 7 13} {82 5 7 13}}
  144. foreach m [.t mark names] {
  145.     catch {.t mark unset $m}
  146. }
  147. scan [wm geom .] %dx%d width height
  148. test textDisp-2.8 {LayoutDLine, extra chunk at end of dline} {fonts} {
  149.     wm geom . [expr $width+1]x$height
  150.     update
  151.     .t configure -wrap char
  152.     .t delete 1.0 end
  153.     .t insert 1.0 "This isxx some sample text for testing."
  154.     .t mark set foo 1.20
  155.     list [.t bbox 1.19] [.t bbox 1.20]
  156. } {{138 5 8 13} {5 18 7 13}}
  157. wm geom . {}
  158. update
  159. test textDisp-2.9 {LayoutDLine, marks and tags} {fonts} {
  160.     .t configure -wrap word
  161.     .t delete 1.0 end
  162.     .t insert 1.0 "This is a very_very_long_word_that_wraps."
  163.     list [.t bbox 1.9] [.t bbox 1.10] [.t bbox 1.25]
  164. } {{68 5 77 13} {5 18 7 13} {110 18 7 13}}
  165. test textDisp-2.10 {LayoutDLine, marks and tags} {fonts} {
  166.     .t configure -wrap word
  167.     .t delete 1.0 end
  168.     .t insert 1.0 "This is a very_very_long_word_that_wraps."
  169.     .t tag add foo 1.13
  170.     .t tag add foo 1.15
  171.     .t tag add foo 1.17
  172.     .t tag add foo 1.19
  173.     list [.t bbox 1.9] [.t bbox 1.10] [.t bbox 1.25]
  174. } {{68 5 77 13} {5 18 7 13} {110 18 7 13}}
  175. test textDisp-2.11 {LayoutDLine, newline width} {fonts} {
  176.     .t configure -wrap char
  177.     .t delete 1.0 end
  178.     .t insert 1.0 "anbbncccndddd"
  179.     list [.t bbox 2.2] [.t bbox 3.3]
  180. } {{19 18 126 13} {26 31 119 13}}
  181. test textDisp-2.12 {LayoutDLine, justification} {fonts} {
  182.     .t configure -wrap char
  183.     .t delete 1.0 end
  184.     .t insert 1.0 "nanbbncccndddd"
  185.     .t tag configure x -justify center
  186.     .t tag add x 1.0 end
  187.     .t tag add y 3.0 3.2
  188.     list [.t bbox 1.0] [.t bbox 2.0] [.t bbox 4.0] [.t bbox 4.2]
  189. } {{75 5 70 13} {71 18 7 13} {64 44 7 13} {78 44 7 13}}
  190. test textDisp-2.13 {LayoutDLine, justification} {fonts} {
  191.     .t configure -wrap char
  192.     .t delete 1.0 end
  193.     .t insert 1.0 "nanbbncccndddd"
  194.     .t tag configure x -justify right
  195.     .t tag add x 1.0 end
  196.     .t tag add y 3.0 3.2
  197.     list [.t bbox 1.0] [.t bbox 2.0] [.t bbox 4.0] [.t bbox 4.2]
  198. } {{145 5 0 13} {138 18 7 13} {124 44 7 13} {138 44 7 13}}
  199. test textDisp-2.14 {LayoutDLine, justification} {fonts} {
  200.     .t configure -wrap char
  201.     .t delete 1.0 end
  202.     .t insert 1.0 "nanbbncccndddd"
  203.     .t tag configure x -justify center
  204.     .t tag add x 2.0 3.1
  205.     .t tag configure y -justify right
  206.     .t tag add y 3.0 4.0
  207.     .t tag raise y
  208.     list [.t bbox 2.0] [.t bbox 3.0] [.t bbox 3.end] [.t bbox 4.0]
  209. } {{71 18 7 13} {131 31 7 13} {145 31 0 13} {5 44 7 13}}
  210. test textDisp-2.15 {LayoutDLine, justification} {fonts} {
  211.     .t configure -wrap char
  212.     .t delete 1.0 end
  213.     .t insert 1.0 "nanbbncccndddd"
  214.     .t tag configure x -justify center
  215.     .t tag add x 2.0 3.1
  216.     .t tag configure y -justify right
  217.     .t tag add y 3.0 4.0
  218.     .t tag lower y
  219.     list [.t bbox 2.0] [.t bbox 3.0] [.t bbox 3.end] [.t bbox 4.0]
  220. } {{71 18 7 13} {68 31 7 13} {82 31 63 13} {5 44 7 13}}
  221. test textDisp-2.16 {LayoutDLine, justification} {fonts} {
  222.     .t configure -wrap word
  223.     .t delete 1.0 end
  224.     .t insert 1.0 "Lots of long words, enough to force word wrapnThennmore lines"
  225.     .t tag configure x -justify center
  226.     .t tag add x 1.1 1.20
  227.     .t tag add x 1.21 1.end
  228.     list [.t bbox 1.0] [.t bbox 1.20] [.t bbox 1.36] [.t bbox 2.0]
  229. } {{5 5 7 13} {5 18 7 13} {43 31 7 13} {5 44 7 13}}
  230. test textDisp-2.17 {LayoutDLine, justification} {fonts} {
  231.     .t configure -wrap word
  232.     .t delete 1.0 end
  233.     .t insert 1.0 "Lots of long words, enough to force word wrapnThennmore lines"
  234.     .t tag configure x -justify center
  235.     .t tag add x 1.20
  236.     list [.t bbox 1.0] [.t bbox 1.20] [.t bbox 1.36] [.t bbox 2.0]
  237. } {{5 5 7 13} {19 18 7 13} {5 31 7 13} {5 44 7 13}}
  238. test textDisp-2.18 {LayoutDLine, justification} {fonts} {
  239.     .t configure -wrap none
  240.     .t delete 1.0 end
  241.     .t insert 1.0 "Lots of long words, enough to extend out of the windown"
  242.     .t insert end "Thennmore linesnThat are shorter"
  243.     .t tag configure x -justify center
  244.     .t tag configure y -justify right
  245.     .t tag add x 2.0
  246.     .t tag add y 3.0
  247.     .t xview scroll 5 units
  248.     list [.t bbox 2.0] [.t bbox 3.0]
  249. } {{26 18 7 13} {40 31 7 13}}
  250. .t tag delete x
  251. .t tag delete y
  252. test textDisp-2.19 {LayoutDLine, margins} {fonts} {
  253.     .t configure -wrap word
  254.     .t delete 1.0 end
  255.     .t insert 1.0 "Lots of long words, enough to force word wrapnThennmore lines"
  256.     .t tag configure x -lmargin1 20 -lmargin2 40 -rmargin 15
  257.     .t tag add x 1.0 end
  258.     list [.t bbox 1.0] [.t bbox 1.12] [.t bbox 1.13] [.t bbox 2.0]
  259. } {{25 5 7 13} {109 5 36 13} {45 18 7 13} {25 70 7 13}}
  260. test textDisp-2.20 {LayoutDLine, margins} {fonts} {
  261.     .t configure -wrap word
  262.     .t delete 1.0 end
  263.     .t insert 1.0 "Lots of long words, enough to force word wrapnThennmore lines"
  264.     .t tag configure x -lmargin1 20 -lmargin2 10 -rmargin 3
  265.     .t tag configure y -lmargin1 15 -lmargin2 5 -rmargin 0
  266.     .t tag raise y
  267.     .t tag add x 1.0 end
  268.     .t tag add y 1.13
  269.     list [.t bbox 1.0] [.t bbox 1.13] [.t bbox 1.30] [.t bbox 2.0]
  270. } {{25 5 7 13} {10 18 7 13} {15 31 7 13} {25 44 7 13}}
  271. test textDisp-2.21 {LayoutDLine, margins} {fonts} {
  272.     .t configure -wrap word
  273.     .t delete 1.0 end
  274.     .t insert 1.0 "Sample text"
  275.     .t tag configure x -lmargin1 80 -lmargin2 80 -rmargin 100
  276.     .t tag add x 1.0 end
  277.     list [.t bbox 1.0] [.t bbox 1.1] [.t bbox 1.2]
  278. } {{85 5 60 13} {85 18 60 13} {85 31 60 13}}
  279. .t tag delete x
  280. .t tag delete y
  281. test textDisp-2.22 {LayoutDLine, spacing options} {fonts} {
  282.     .t configure -wrap word
  283.     .t delete 1.0 end
  284.     .t tag delete x y
  285.     .t insert end "Short linenLine 2 is long enough "
  286.     .t insert end "to wrap around a couple of times"
  287.     .t insert end "nLine 3nLine 4"
  288.     set i [.t dlineinfo 1.0]
  289.     set b1 [expr [lindex $i 1] + [lindex $i 4]]
  290.     set i [.t dlineinfo 2.0]
  291.     set b2 [expr [lindex $i 1] + [lindex $i 4]]
  292.     set i [.t dlineinfo 2.end]
  293.     set b3 [expr [lindex $i 1] + [lindex $i 4]]
  294.     set i [.t dlineinfo 3.0]
  295.     set b4 [expr [lindex $i 1] + [lindex $i 4]]
  296.     .t configure -spacing1 2 -spacing2 1 -spacing3 3
  297.     set i [.t dlineinfo 1.0]
  298.     set b1 [expr [lindex $i 1] + [lindex $i 4] - $b1]
  299.     set i [.t dlineinfo 2.0]
  300.     set b2 [expr [lindex $i 1] + [lindex $i 4] - $b2]
  301.     set i [.t dlineinfo 2.end]
  302.     set b3 [expr [lindex $i 1] + [lindex $i 4] - $b3]
  303.     set i [.t dlineinfo 3.0]
  304.     set b4 [expr [lindex $i 1] + [lindex $i 4] - $b4]
  305.     list $b1 $b2 $b3 $b4
  306. } {2 7 10 15}
  307. .t configure -spacing1 0 -spacing2 0 -spacing3 0
  308. test textDisp-2.23 {LayoutDLine, spacing options} {fonts} {
  309.     .t configure -wrap word
  310.     .t delete 1.0 end
  311.     .t tag delete x y
  312.     .t insert end "Short linenLine 2 is long enough "
  313.     .t insert end "to wrap around a couple of times"
  314.     .t insert end "nLine 3nLine 4"
  315.     set i [.t dlineinfo 1.0]
  316.     set b1 [expr [lindex $i 1] + [lindex $i 4]]
  317.     set i [.t dlineinfo 2.0]
  318.     set b2 [expr [lindex $i 1] + [lindex $i 4]]
  319.     set i [.t dlineinfo 2.end]
  320.     set b3 [expr [lindex $i 1] + [lindex $i 4]]
  321.     set i [.t dlineinfo 3.0]
  322.     set b4 [expr [lindex $i 1] + [lindex $i 4]]
  323.     .t configure -spacing1 4 -spacing2 4 -spacing3 4
  324.     .t tag configure x -spacing1 1 -spacing2 2 -spacing3 3
  325.     .t tag add x 1.0 end
  326.     .t tag configure y -spacing1 0 -spacing2 3
  327.     .t tag add y 2.19 end
  328.     .t tag raise y
  329.     set i [.t dlineinfo 1.0]
  330.     set b1 [expr [lindex $i 1] + [lindex $i 4] - $b1]
  331.     set i [.t dlineinfo 2.0]
  332.     set b2 [expr [lindex $i 1] + [lindex $i 4] - $b2]
  333.     set i [.t dlineinfo 2.end]
  334.     set b3 [expr [lindex $i 1] + [lindex $i 4] - $b3]
  335.     set i [.t dlineinfo 3.0]
  336.     set b4 [expr [lindex $i 1] + [lindex $i 4] - $b4]
  337.     list $b1 $b2 $b3 $b4
  338. } {1 5 13 16}
  339. .t configure -spacing1 0 -spacing2 0 -spacing3 0
  340. test textDisp-2.24 {LayoutDLine, tabs, saving from first chunk} {fonts} {
  341.     .t delete 1.0 end
  342.     .t tag delete x y
  343.     .t tag configure x -tabs 70
  344.     .t tag configure y -tabs 80
  345.     .t insert 1.0 "abtcde"
  346.     .t tag add x 1.0 end
  347.     .t tag add y 1.1 end
  348.     lindex [.t bbox 1.3] 0
  349. } {75}
  350. test textDisp-2.25 {LayoutDLine, tabs, breaking chunks at tabs} {fonts} {
  351.     .t delete 1.0 end
  352.     .t tag delete x
  353.     .t tag configure x -tabs {30 60 90 120}
  354.     .t insert 1.0 "atbtctdte"
  355.     .t mark set dummy1 1.1
  356.     .t mark set dummy2 1.2
  357.     .t tag add x 1.0 end
  358.     list [lindex [.t bbox 1.2] 0] [lindex [.t bbox 1.4] 0] 
  359.     [lindex [.t bbox 1.6] 0] [lindex [.t bbox 1.8] 0]
  360. } {35 65 95 125}
  361. test textDisp-2.26 {LayoutDLine, tabs, breaking chunks at tabs} {fonts} {
  362.     .t delete 1.0 end
  363.     .t tag delete x
  364.     .t tag configure x -tabs {30 60 90 120} -justify right
  365.     .t insert 1.0 "atbtctdte"
  366.     .t mark set dummy1 1.1
  367.     .t mark set dummy2 1.2
  368.     .t tag add x 1.0 end
  369.     list [lindex [.t bbox 1.2] 0] [lindex [.t bbox 1.4] 0] 
  370.     [lindex [.t bbox 1.6] 0] [lindex [.t bbox 1.8] 0]
  371. } {117 124 131 138}
  372. test textDisp-2.27 {LayoutDLine, tabs, calling AdjustForTab} {fonts} {
  373.     .t delete 1.0 end
  374.     .t tag delete x
  375.     .t tag configure x -tabs {30 60}
  376.     .t insert 1.0 "atbtcd"
  377.     .t tag add x 1.0 end
  378.     list [lindex [.t bbox 1.2] 0] [lindex [.t bbox 1.4] 0]
  379. } {35 65}
  380. test textDisp-2.28 {LayoutDLine, tabs, running out of space in dline} {fonts} {
  381.     .t delete 1.0 end
  382.     .t insert 1.0 "atbtctd"
  383.     .t bbox 1.6
  384. } {5 18 7 13}
  385. test textDisp-2.29 {LayoutDLine, tabs, running out of space in dline} {fonts} {
  386.     .t delete 1.0 end
  387.     .t insert 1.0 "atxtabcd"
  388.     .t bbox 1.4
  389. } {117 5 7 13}
  390. test textDisp-2.30 {LayoutDLine, tabs, running out of space in dline} {fonts} {
  391.     .t delete 1.0 end
  392.     .t insert 1.0 "atxtabc"
  393.     .t bbox 1.4
  394. } {117 5 7 13}
  395. test textDisp-3.1 {different character sizes} {fonts} {
  396.     .t configure -wrap word
  397.     .t delete 1.0 end
  398.     .t insert end "Some sample text, including both largen"
  399.     .t insert end "characters andnsmalln"
  400.     .t insert end "abcndnenfghij"
  401.     .t tag add big 1.5 1.10
  402.     .t tag add big 2.11 2.14
  403.     list [.t bbox 1.1] [.t bbox 1.6] [.t dlineinfo 1.0] [.t dlineinfo 3.0]
  404. } {{12 17 7 13} {52 5 13 27} {5 5 114 27 22} {5 85 35 13 10}}
  405. .t configure -wrap char
  406. test textDisp-4.1 {UpdateDisplayInfo, basic} {fonts} {
  407.     .t delete 1.0 end
  408.     .t insert end "Line 1nLine 2nLine 3n"
  409.     update
  410.     .t delete 2.0 2.end
  411.     .t insert 2.0 "New Line 2"
  412.     update
  413.     list [.t bbox 1.0] [.t bbox 2.0] [.t bbox 3.0] $tk_textRelayout
  414. } {{5 5 7 13} {5 18 7 13} {5 31 7 13} 2.0}
  415. test textDisp-4.2 {UpdateDisplayInfo, re-use tail of text line} {fonts} {
  416.     .t delete 1.0 end
  417.     .t insert end "Line 1nLine 2 is so long that it wraps aroundnLine 3"
  418.     update
  419.     .t mark set x 2.21
  420.     .t delete 2.2
  421.     .t insert 2.0 X
  422.     update
  423.     list [.t bbox 2.0] [.t bbox x] [.t bbox 3.0] $tk_textRelayout
  424. } {{5 18 7 13} {12 31 7 13} {5 44 7 13} {2.0 2.20}}
  425. test textDisp-4.3 {UpdateDisplayInfo, tail of text line shifts} {fonts} {
  426.     .t delete 1.0 end
  427.     .t insert end "Line 1nLine 2 is so long that it wraps aroundnLine 3"
  428.     update
  429.     .t mark set x 2.21
  430.     .t delete 2.2
  431.     update
  432.     list [.t bbox 2.0] [.t bbox x] [.t bbox 3.0] $tk_textRelayout
  433. } {{5 18 7 13} {5 31 7 13} {5 44 7 13} {2.0 2.20}}
  434. .t mark unset x
  435. test textDisp-4.4 {UpdateDisplayInfo, wrap-mode "none"} {fonts} {
  436.     .t configure -wrap none
  437.     .t delete 1.0 end
  438.     .t insert end "Line 1nLine 2 is so long that it wraps aroundnLine 3"
  439.     update
  440.     list [.t bbox 2.0] [.t bbox 2.25] [.t bbox 3.0] $tk_textRelayout
  441. } {{5 18 7 13} {} {5 31 7 13} {1.0 2.0 3.0}}
  442. test textDisp-4.5 {UpdateDisplayInfo, tiny window} {fonts} {
  443.     wm geom . 103x$height
  444.     update
  445.     .t configure -wrap none
  446.     .t delete 1.0 end
  447.     .t insert end "Line 1nLine 2 is so long that it wraps aroundnLine 3"
  448.     update
  449.     list [.t bbox 2.0] [.t bbox 2.1] [.t bbox 3.0] $tk_textRelayout
  450. } {{5 18 1 13} {} {5 31 1 13} {1.0 2.0 3.0}}
  451. test textDisp-4.6 {UpdateDisplayInfo, tiny window} {
  452.     # This test was failing on Windows because the title bar on .
  453.     # was a certain minimum size and it was interfering with the size
  454.     # requested.  The "overrideredirect" gets rid of the titlebar so 
  455.     # the toplevel can shrink to the appropriate size.  On Unix, setting
  456.     # the overrideredirect on "." confuses the window manager and
  457.     # causes subsequent tests to fail.
  458.     if {$tcl_platform(platform) == "windows"} {
  459. wm overrideredirect . 1
  460.     }
  461.     frame .f2 -width 20 -height 100
  462.     pack before .f .f2 top
  463.     wm geom . 103x103
  464.     update
  465.     .t configure -wrap none -borderwidth 2
  466.     .t delete 1.0 end
  467.     .t insert end "Line 1nLine 2 is so long that it wraps aroundnLine 3"
  468.     update
  469.     set x [list [.t bbox 1.0] [.t bbox 2.0] $tk_textRelayout]
  470.     wm overrideredirect . 0
  471.     update
  472.     set x
  473. } {{5 5 1 1} {} 1.0}
  474. catch {destroy .f2}
  475. .t configure -borderwidth 0 -wrap char
  476. wm geom . {}
  477. update
  478. test textDisp-4.7 {UpdateDisplayInfo, filling in extra vertical space} {
  479.     # This test was failing on Windows because the title bar on .
  480.     # was a certain minimum size and it was interfering with the size
  481.     # requested.  The "overrideredirect" gets rid of the titlebar so 
  482.     # the toplevel can shrink to the appropriate size.  On Unix, setting
  483.     # the overrideredirect on "." confuses the window manager and
  484.     # causes subsequent tests to fail.
  485.     if {$tcl_platform(platform) == "windows"} {
  486. wm overrideredirect . 1
  487.     }
  488.     .t delete 1.0 end
  489.     .t insert end "1n2n3n4n5n6n7n8n9n10n11n12n13n14n15n16n17"
  490.     .t yview 1.0
  491.     update
  492.     .t yview 16.0
  493.     update
  494.     set x [list [.t index @0,0] $tk_textRelayout $tk_textRedraw]
  495.     wm overrideredirect . 0
  496.     update 
  497.     set x
  498. } {8.0 {16.0 17.0 15.0 14.0 13.0 12.0 11.0 10.0 9.0 8.0} {8.0 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0 17.0}}
  499. test textDisp-4.8 {UpdateDisplayInfo, filling in extra vertical space} {
  500.     .t delete 1.0 end
  501.     .t insert end "1n2n3n4n5n6n7n8n9n10n11n12n13n14n15n16n17"
  502.     .t yview 16.0
  503.     update
  504.     .t delete 5.0 14.0
  505.     update
  506.     set x [list [.t index @0,0] $tk_textRelayout $tk_textRedraw]
  507. } {1.0 {5.0 4.0 3.0 2.0 1.0} {1.0 2.0 3.0 4.0 5.0 eof}}
  508. test textDisp-4.9 {UpdateDisplayInfo, filling in extra vertical space} {fonts} {
  509.     .t delete 1.0 end
  510.     .t insert end "1n2n3n4n5n6n7n8n9n10n11n12n13n14n15n16n17"
  511.     .t yview 16.0
  512.     update
  513.     .t delete 15.0 end
  514.     list [.t bbox 7.0] [.t bbox 12.0]
  515. } {{3 29 7 13} {3 94 7 13}}
  516. test textDisp-4.10 {UpdateDisplayInfo, filling in extra vertical space} {
  517.     .t delete 1.0 end
  518.     .t insert end "1n2n3n4n5nLine 6 is such a long line that it wraps around.n7n8n9n10n11n12n13n14n15n16n17"
  519.     .t yview end
  520.     update
  521.     .t delete 13.0 end
  522.     update
  523.     list [.t index @0,0] $tk_textRelayout $tk_textRedraw
  524. } {5.0 {12.0 7.0 6.40 6.20 6.0 5.0} {5.0 6.0 6.20 6.40 7.0 12.0}}
  525. test textDisp-4.11 {UpdateDisplayInfo, filling in extra vertical space} {
  526.     .t delete 1.0 end
  527.     .t insert end "1n2n3n4n5nLine 6 is such a long line that it wraps around, not once but really quite a few times.n7n8n9n10n11n12n13n14n15n16n17"
  528.     .t yview end
  529.     update
  530.     .t delete 14.0 end
  531.     update
  532.     list [.t index @0,0] $tk_textRelayout $tk_textRedraw
  533. } {6.40 {13.0 7.0 6.80 6.60 6.40} {6.40 6.60 6.80 7.0 13.0}}
  534. test textDisp-4.12 {UpdateDisplayInfo, filling in extra vertical space} {
  535.     .t delete 1.0 end
  536.     .t insert end "1n2n3n4n5n7n8n9n10n11n12n13"
  537.     button .b -text "Test" -bd 2 -highlightthickness 2
  538.     .t window create 3.end -window .b
  539.     .t yview moveto 1
  540.     update
  541.     .t yview moveto 0
  542.     update
  543.     .t yview moveto 1
  544.     update
  545.     winfo ismapped .b
  546. } {0}
  547. .t configure -wrap word
  548. .t delete 1.0 end
  549. .t insert end "Line 1nLine 2nLine 3nLine 4nLine 5nLine 6nLine 7n"
  550. .t insert end "Line 8nLine 9nLine 10nLine 11nLine 12nLine 13n"
  551. .t insert end "Line 14nLine 15nLine 16"
  552. .t tag delete x
  553. .t tag configure x -relief raised -borderwidth 2 -background white
  554. test textDisp-4.13 {UpdateDisplayInfo, special handling for top/bottom lines} {
  555.     .t tag add x 1.0 end
  556.     .t yview 1.0
  557.     update
  558.     .t yview scroll 3 units
  559.     update
  560.     list $tk_textRelayout $tk_textRedraw
  561. } {{11.0 12.0 13.0} {4.0 10.0 11.0 12.0 13.0}}
  562. test textDisp-4.14 {UpdateDisplayInfo, special handling for top/bottom lines} {
  563.     .t tag remove x 1.0 end
  564.     .t yview 1.0
  565.     update
  566.     .t yview scroll 3 units
  567.     update
  568.     list $tk_textRelayout $tk_textRedraw
  569. } {{11.0 12.0 13.0} {11.0 12.0 13.0}}
  570. test textDisp-4.15 {UpdateDisplayInfo, special handling for top/bottom lines} {
  571.     .t tag add x 1.0 end
  572.     .t yview 4.0
  573.     update
  574.     .t yview scroll -2 units
  575.     update
  576.     list $tk_textRelayout $tk_textRedraw
  577. } {{2.0 3.0} {2.0 3.0 4.0 11.0}}
  578. test textDisp-4.16 {UpdateDisplayInfo, special handling for top/bottom lines} {
  579.     .t tag remove x 1.0 end
  580.     .t yview 4.0
  581.     update
  582.     .t yview scroll -2 units
  583.     update
  584.     list $tk_textRelayout $tk_textRedraw
  585. } {{2.0 3.0} {2.0 3.0}}
  586. test textDisp-4.17 {UpdateDisplayInfo, horizontal scrolling} {fonts} {
  587.     .t configure -wrap none
  588.     .t delete 1.0 end
  589.     .t insert end "Short line 1nLine 2 is long enough to scroll horizontally"
  590.     .t insert end "nLine 3nLine 4"
  591.     update
  592.     .t xview scroll 3 units
  593.     update
  594.     list $tk_textRelayout $tk_textRedraw [.t bbox 2.0] [.t bbox 2.5] 
  595.     [.t bbox 2.23]
  596. } {{} {1.0 2.0 3.0 4.0} {} {17 16 7 13} {}}
  597. test textDisp-4.18 {UpdateDisplayInfo, horizontal scrolling} {fonts} {
  598.     .t configure -wrap none
  599.     .t delete 1.0 end
  600.     .t insert end "Short line 1nLine 2 is long enough to scroll horizontally"
  601.     .t insert end "nLine 3nLine 4"
  602.     update
  603.     .t xview scroll 100 units
  604.     update
  605.     list $tk_textRelayout $tk_textRedraw [.t bbox 2.25]
  606. } {{} {1.0 2.0 3.0 4.0} {10 16 7 13}}
  607. test textDisp-4.19 {UpdateDisplayInfo, horizontal scrolling} {fonts} {
  608.     .t configure -wrap none
  609.     .t delete 1.0 end
  610.     .t insert end "Short line 1nLine 2 is long enough to scroll horizontally"
  611.     .t insert end "nLine 3nLine 4"
  612.     update
  613.     .t xview moveto 0
  614.     .t xview scroll -10 units
  615.     update
  616.     list $tk_textRelayout $tk_textRedraw [.t bbox 2.5]
  617. } {{} {1.0 2.0 3.0 4.0} {38 16 7 13}}
  618. test textDisp-4.20 {UpdateDisplayInfo, horizontal scrolling} {fonts} {
  619.     .t configure -wrap none
  620.     .t delete 1.0 end
  621.     .t insert end "Short line 1nLine 2 is long enough to scroll horizontally"
  622.     .t insert end "nLine 3nLine 4"
  623.     .t xview moveto 0.0
  624.     .t xview scroll 100 units
  625.     update
  626.     .t delete 2.30 2.44
  627.     update
  628.     list $tk_textRelayout $tk_textRedraw [.t bbox 2.25]
  629. } {2.0 {1.0 2.0 3.0 4.0} {108 16 7 13}}
  630. test textDisp-4.21 {UpdateDisplayInfo, horizontal scrolling} {fonts} {
  631.     .t configure -wrap none
  632.     .t delete 1.0 end
  633.     .t insert end "Short line 1nLine 2 is long enough to scroll horizontally"
  634.     .t insert end "nLine 3nLine 4"
  635.     .t xview moveto .9
  636.     update
  637.     .t xview moveto .6
  638.     update
  639.     list $tk_textRelayout $tk_textRedraw
  640. } {{} {}}
  641. test textDisp-4.22 {UpdateDisplayInfo, no horizontal scrolling except for -wrap none} {fonts} {
  642.     .t configure -wrap none
  643.     .t delete 1.0 end
  644.     .t insert end "Short line 1nLine 2 is long enough to scroll horizontally"
  645.     .t insert end "nLine 3nLine 4"
  646.     .t xview scroll 25 units
  647.     update
  648.     .t configure -wrap word
  649.     list [.t bbox 2.0] [.t bbox 2.16]
  650. } {{3 16 7 13} {10 29 7 13}}
  651. test textDisp-4.23 {UpdateDisplayInfo, no horizontal scrolling except for -wrap none} {fonts} {
  652.     .t configure -wrap none
  653.     .t delete 1.0 end
  654.     .t insert end "Short line 1nLine 2 is long enough to scroll horizontally"
  655.     .t insert end "nLine 3nLine 4"
  656.     .t xview scroll 25 units
  657.     update
  658.     .t configure -wrap char
  659.     list [.t bbox 2.0] [.t bbox 2.16]
  660. } {{3 16 7 13} {115 16 7 13}}
  661. test textDisp-5.1 {DisplayDLine, handling of spacing} {fonts} {
  662.     .t configure -wrap char
  663.     .t delete 1.0 end
  664.     .t insert 1.0 "abcdefghijklnmnopqrstuvwzyz"
  665.     .t tag configure spacing -spacing1 8 -spacing3 2
  666.     .t tag add spacing 1.0 end
  667.     frame .t.f1 -width 10 -height 4 -bg black
  668.     frame .t.f2 -width 10 -height 4 -bg black
  669.     frame .t.f3 -width 10 -height 4 -bg black
  670.     frame .t.f4 -width 10 -height 4 -bg black
  671.     .t window create 1.3 -window .t.f1 -align top
  672.     .t window create 1.7 -window .t.f2 -align center
  673.     .t window create 2.1 -window .t.f3 -align bottom
  674.     .t window create 2.10 -window .t.f4 -align baseline
  675.     update
  676.     list [winfo geometry .t.f1] [winfo geometry .t.f2] 
  677.     [winfo geometry .t.f3] [winfo geometry .t.f4]
  678. } {10x4+24+11 10x4+55+15 10x4+10+43 10x4+76+40}
  679. .t tag delete spacing
  680. # Although the following test produces a useful result, its main
  681. # effect is to produce a core dump if Tk doesn't handle display
  682. # relayout that occurs during redisplay.
  683. test textDisp-5.2 {DisplayDLine, line resizes during display} {
  684.     .t delete 1.0 end
  685.     frame .t.f -width 20 -height 20 -bd 2 -relief raised
  686.     bind .t.f <Configure> {.t.f configure -width 30 -height 30}
  687.     .t window create insert -window .t.f
  688.     update
  689.     list [winfo width .t.f] [winfo height .t.f]
  690. } {30 30}
  691. .t configure -wrap char
  692. test textDisp-6.1 {scrolling in DisplayText, scroll up} {
  693.     .t delete 1.0 end
  694.     .t insert 1.0 "Line 1"
  695.     foreach i {2 3 4 5 6 7 8 9 10 11 12 13 14 15} {
  696. .t insert end "nLine $i"
  697.     }
  698.     update
  699.     .t delete 2.0 3.0
  700.     update
  701.     list $tk_textRelayout $tk_textRedraw
  702. } {{2.0 10.0} {2.0 10.0}}
  703. test textDisp-6.2 {scrolling in DisplayText, scroll down} {
  704.     .t delete 1.0 end
  705.     .t insert 1.0 "Line 1"
  706.     foreach i {2 3 4 5 6 7 8 9 10 11 12 13 14 15} {
  707. .t insert end "nLine $i"
  708.     }
  709.     update
  710.     .t insert 2.0 "New Line 2n"
  711.     update
  712.     list $tk_textRelayout $tk_textRedraw
  713. } {{2.0 3.0} {2.0 3.0}}
  714. test textDisp-6.3 {scrolling in DisplayText, multiple scrolls} {
  715.     .t configure -wrap char
  716.     .t delete 1.0 end
  717.     .t insert 1.0 "Line 1"
  718.     foreach i {2 3 4 5 6 7 8 9 10 11 12 13 14 15} {
  719. .t insert end "nLine $i"
  720.     }
  721.     update
  722.     .t insert 2.end "is so long that it wraps"
  723.     .t insert 4.end "is so long that it wraps"
  724.     update
  725.     list $tk_textRelayout $tk_textRedraw
  726. } {{2.0 2.20 4.0 4.20} {2.0 2.20 4.0 4.20}}
  727. test textDisp-6.4 {scrolling in DisplayText, scrolls interfere} {
  728.     .t configure -wrap char
  729.     .t delete 1.0 end
  730.     .t insert 1.0 "Line 1"
  731.     foreach i {2 3 4 5 6 7 8 9 10 11 12 13 14 15} {
  732. .t insert end "nLine $i"
  733.     }
  734.     update
  735.     .t insert 2.end "is so long that it wraps around, not once but three times"
  736.     .t insert 4.end "is so long that it wraps"
  737.     update
  738.     list $tk_textRelayout $tk_textRedraw
  739. } {{2.0 2.20 2.40 2.60 4.0 4.20} {2.0 2.20 2.40 2.60 4.0 4.20 6.0}}
  740. test textDisp-6.5 {scrolling in DisplayText, scroll source obscured} {nonPortable} {
  741.     .t configure -wrap char
  742.     frame .f2 -bg red
  743.     place .f2 -in .t -relx 0.5 -rely 0.5 -relwidth 0.5 -relheight 0.5
  744.     .t delete 1.0 end
  745.     .t insert 1.0 "Line 1 is so long that it wraps around, a couple of times"
  746.     foreach i {2 3 4 5 6 7 8 9 10 11 12 13 14 15} {
  747. .t insert end "nLine $i"
  748.     }
  749.     update
  750.     .t delete 1.6 1.end
  751.     update
  752.     destroy .f2
  753.     list $tk_textRelayout $tk_textRedraw
  754. } {{1.0 9.0 10.0} {1.0 4.0 5.0 9.0 10.0}}
  755. test textDisp-6.6 {scrolling in DisplayText, Expose events after scroll} {unixOnly nonPortable} {
  756.     # this test depends on all of the expose events being handled at once
  757.     .t configure -wrap char
  758.     frame .f2 -bg #ff0000
  759.     place .f2 -in .t -relx 0.2 -rely 0.5 -relwidth 0.5 -relheight 0.5
  760.     .t configure -bd 2 -relief raised
  761.     .t delete 1.0 end
  762.     .t insert 1.0 "Line 1 is so long that it wraps around, a couple of times"
  763.     foreach i {2 3 4 5 6 7 8 9 10 11 12 13 14 15} {
  764. .t insert end "nLine $i"
  765.     }
  766.     update
  767.     .t delete 1.6 1.end
  768.     destroy .f2
  769.     update
  770.     list $tk_textRelayout $tk_textRedraw
  771. } {{1.0 9.0 10.0} {borders 1.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0}}
  772. .t configure -bd 0
  773. test textDisp-6.7 {DisplayText, vertical scrollbar updates} {
  774.     .t configure -wrap char
  775.     .t delete 1.0 end
  776.     update
  777.     set scrollInfo
  778. } {0 1}
  779. test textDisp-6.8 {DisplayText, vertical scrollbar updates} {
  780.     .t configure -wrap char
  781.     .t delete 1.0 end
  782.     .t insert 1.0 "Line 1"
  783.     update
  784.     set scrollInfo "unchanged"
  785.     foreach i {2 3 4 5 6 7 8 9 10 11 12 13} {
  786. .t insert end "nLine $i"
  787.     }
  788.     update
  789.     set scrollInfo
  790. } {0 0.769231}
  791. .t configure -yscrollcommand {} -xscrollcommand scroll
  792. test textDisp-6.9 {DisplayText, horizontal scrollbar updates} {
  793.     .t configure -wrap none
  794.     .t delete 1.0 end
  795.     update
  796.     set scrollInfo unchanged
  797.     .t insert end xxxxxxxxxn
  798.     .t insert end xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxn
  799.     .t insert end xxxxxxxxxxxxxxxxxxxxxxxxxx
  800.     update
  801.     set scrollInfo
  802. } {0 0.363636}
  803. # The following group of tests is marked non-portable because
  804. # they result in a lot of extra redisplay under Ultrix.  I don't
  805. # know why this is so.
  806. .t configure -bd 2 -relief raised -wrap char
  807. .t delete 1.0 end
  808. .t insert 1.0 "Line 1 is so long that it wraps around, a couple of times"
  809. foreach i {2 3 4 5 6 7 8 9 10 11 12 13 14 15} {
  810.     .t insert end "nLine $i"
  811. }
  812. test textDisp-7.1 {TkTextRedrawRegion} {nonPortable} {
  813.     frame .f2 -bg #ff0000
  814.     place .f2 -in .t -relx 0.2 -relwidth 0.6 -rely 0.22 -relheight 0.55
  815.     update
  816.     destroy .f2
  817.     update
  818.     list $tk_textRelayout $tk_textRedraw
  819. } {{} {1.40 2.0 3.0 4.0 5.0 6.0}}
  820. test textDisp-7.2 {TkTextRedrawRegion} {nonPortable} {
  821.     frame .f2 -bg #ff0000
  822.     place .f2 -in .t -relx 0 -relwidth 0.5 -rely 0 -relheight 0.5
  823.     update
  824.     destroy .f2
  825.     update
  826.     list $tk_textRelayout $tk_textRedraw
  827. } {{} {borders 1.0 1.20 1.40 2.0 3.0}}
  828. test textDisp-7.3 {TkTextRedrawRegion} {nonPortable} {
  829.     frame .f2 -bg #ff0000
  830.     place .f2 -in .t -relx 0.5 -relwidth 0.5 -rely 0.5 -relheight 0.5
  831.     update
  832.     destroy .f2
  833.     update
  834.     list $tk_textRelayout $tk_textRedraw
  835. } {{} {borders 4.0 5.0 6.0 7.0 8.0}}
  836. test textDisp-7.4 {TkTextRedrawRegion} {nonPortable} {
  837.     frame .f2 -bg #ff0000
  838.     place .f2 -in .t -relx 0.4 -relwidth 0.2 -rely 0 -relheight 0.2 
  839.     -bordermode ignore
  840.     update
  841.     destroy .f2
  842.     update
  843.     list $tk_textRelayout $tk_textRedraw
  844. } {{} {borders 1.0 1.20}}
  845. test textDisp-7.5 {TkTextRedrawRegion} {nonPortable} {
  846.     frame .f2 -bg #ff0000
  847.     place .f2 -in .t -relx 0.4 -relwidth 0.2 -rely 1.0 -relheight 0.2 
  848.     -anchor s -bordermode ignore
  849.     update
  850.     destroy .f2
  851.     update
  852.     list $tk_textRelayout $tk_textRedraw
  853. } {{} {borders 7.0 8.0}}
  854. test textDisp-7.6 {TkTextRedrawRegion} {nonPortable} {
  855.     frame .f2 -bg #ff0000
  856.     place .f2 -in .t -relx 0 -relwidth 0.2 -rely 0.55 -relheight 0.2 
  857.     -anchor w -bordermode ignore
  858.     update
  859.     destroy .f2
  860.     update
  861.     list $tk_textRelayout $tk_textRedraw
  862. } {{} {borders 3.0 4.0 5.0}}
  863. test textDisp-7.7 {TkTextRedrawRegion} {nonPortable} {
  864.     frame .f2 -bg #ff0000
  865.     place .f2 -in .t -relx 1.0 -relwidth 0.2 -rely 0.55 -relheight 0.2 
  866.     -anchor e -bordermode ignore
  867.     update
  868.     destroy .f2
  869.     update
  870.     list $tk_textRelayout $tk_textRedraw
  871. } {{} {borders 3.0 4.0 5.0}}
  872. test textDisp-7.8 {TkTextRedrawRegion} {nonPortable} {
  873.     .t delete 1.0 end
  874.     .t insert 1.0 "Line 1nLine 2nLine 3nLine 4nLine 5nLine 6n"
  875.     frame .f2 -bg #ff0000
  876.     place .f2 -in .t -relx 0.0 -relwidth 0.4 -rely 0.35 -relheight 0.4 
  877.     -anchor nw -bordermode ignore
  878.     update
  879.     destroy .f2
  880.     update
  881.     list $tk_textRelayout $tk_textRedraw
  882. } {{} {borders 4.0 5.0 6.0 7.0 eof}}
  883. .t configure -bd 0
  884. test textDisp-8.1 {TkTextChanged: redisplay whole lines} {fonts} {
  885.     .t configure -wrap word
  886.     .t delete 1.0 end
  887.     .t insert 1.0 "Line 1nLine 2 is so long that it wraps around, two times"
  888.     foreach i {3 4 5 6 7 8 9 10 11 12 13 14 15} {
  889. .t insert end "nLine $i"
  890.     }
  891.     update
  892.     .t delete 2.36 2.38
  893.     update
  894.     list $tk_textRelayout $tk_textRedraw [.t bbox 2.32]
  895. } {{2.0 2.18 2.38} {2.0 2.18 2.38} {101 29 7 13}}
  896. .t configure -wrap char
  897. test textDisp-8.2 {TkTextChanged, redisplay whole lines} {
  898.     .t delete 1.0 end
  899.     .t insert 1.0 "Line 1 is so long that it wraps around, two times"
  900.     foreach i {2 3 4 5 6 7 8 9 10 11 12 13 14 15} {
  901. .t insert end "nLine $i"
  902.     }
  903.     update
  904.     .t insert 1.2 xx
  905.     update
  906.     list $tk_textRelayout $tk_textRedraw
  907. } {{1.0 1.20 1.40} {1.0 1.20 1.40}}
  908. test textDisp-8.3 {TkTextChanged} {
  909.     .t delete 1.0 end
  910.     .t insert 1.0 "Line 1 is so long that it wraps around, two times"
  911.     foreach i {2 3 4 5 6 7 8 9 10 11 12 13 14 15} {
  912. .t insert end "nLine $i"
  913.     }
  914.     update
  915.     .t insert 2.0 xx
  916.     update
  917.     list $tk_textRelayout $tk_textRedraw
  918. } {2.0 2.0}
  919. test textDisp-8.4 {TkTextChanged} {
  920.     .t delete 1.0 end
  921.     .t insert 1.0 "Line 1 is so long that it wraps around, two times"
  922.     foreach i {2 3 4 5 6 7 8 9 10 11 12 13 14 15} {
  923. .t insert end "nLine $i"
  924.     }
  925.     update
  926.     .t delete 1.5
  927.     update
  928.     list $tk_textRelayout $tk_textRedraw
  929. } {{1.0 1.20 1.40} {1.0 1.20 1.40}}
  930. test textDisp-8.5 {TkTextChanged} {
  931.     .t delete 1.0 end
  932.     .t insert 1.0 "Line 1 is so long that it wraps around, two times"
  933.     foreach i {2 3 4 5 6 7 8 9 10 11 12 13 14 15} {
  934. .t insert end "nLine $i"
  935.     }
  936.     update
  937.     .t delete 1.40 1.44
  938.     update
  939.     list $tk_textRelayout $tk_textRedraw
  940. } {{1.0 1.20 1.40} {1.0 1.20 1.40}}
  941. test textDisp-8.6 {TkTextChanged} {
  942.     .t delete 1.0 end
  943.     .t insert 1.0 "Line 1 is so long that it wraps around, two times"
  944.     foreach i {2 3 4 5 6 7 8 9 10 11 12 13 14 15} {
  945. .t insert end "nLine $i"
  946.     }
  947.     update
  948.     .t delete 1.41 1.44
  949.     update
  950.     list $tk_textRelayout $tk_textRedraw
  951. } {{1.0 1.20 1.40} {1.0 1.20 1.40}}
  952. test textDisp-8.7 {TkTextChanged} {
  953.     .t delete 1.0 end
  954.     .t insert 1.0 "Line 1 is so long that it wraps around, two times"
  955.     foreach i {2 3 4 5 6 7 8 9 10 11 12 13 14 15} {
  956. .t insert end "nLine $i"
  957.     }
  958.     update
  959.     .t delete 1.2 1.end
  960.     update
  961.     list $tk_textRelayout $tk_textRedraw
  962. } {{1.0 9.0 10.0} {1.0 9.0 10.0}}
  963. test textDisp-8.8 {TkTextChanged} {
  964.     .t delete 1.0 end
  965.     .t insert 1.0 "Line 1 is so long that it wraps around, two times"
  966.     foreach i {2 3 4 5 6 7 8 9 10 11 12 13 14 15} {
  967. .t insert end "nLine $i"
  968.     }
  969.     update
  970.     .t delete 2.2
  971.     update
  972.     list $tk_textRelayout $tk_textRedraw
  973. } {2.0 2.0}
  974. test textDisp-8.9 {TkTextChanged} {
  975.     .t delete 1.0 end
  976.     .t insert 1.0 "Line 1 is so long that it wraps around, two times"
  977.     foreach i {2 3 4 5 6 7 8 9 10 11 12 13 14 15} {
  978. .t insert end "nLine $i"
  979.     }
  980.     update
  981.     .t delete 2.0 3.0
  982.     update
  983.     list $tk_textRelayout $tk_textRedraw
  984. } {{2.0 8.0} {2.0 8.0}}
  985. test textDisp-8.10 {TkTextChanged} {
  986.     .t configure -wrap char
  987.     .t delete 1.0 end
  988.     .t insert 1.0 "Line 1nLine 2 is long enough to wrapnLine 3 is also long enough to wrapnLine 4"
  989.     .t tag add big 2.19
  990.     update
  991.     .t delete 2.19
  992.     update
  993.     set tk_textRedraw
  994. } {2.0 2.20 eof}
  995. test textDisp-8.11 {TkTextChanged, scrollbar notification when changes are off-screen} {
  996.     .t delete 1.0 end
  997.     .t insert end "1n2n3n4n5n6n7n8n9n10n11n12n"
  998.     .t configure -yscrollcommand scroll
  999.     update
  1000.     set scrollInfo ""
  1001.     .t insert end "anbncn"
  1002.     update
  1003.     .t configure -yscrollcommand ""
  1004.     set scrollInfo
  1005. } {0 0.625}
  1006. test textDisp-9.1 {TkTextRedrawTag} {
  1007.     .t configure -wrap char
  1008.     .t delete 1.0 end
  1009.     .t insert 1.0 "Line 1nLine 2 is long enough to wrap aroundnLine 3nLine 4"
  1010.     update
  1011.     .t tag add big 2.2 2.4
  1012.     update
  1013.     list $tk_textRelayout $tk_textRedraw
  1014. } {{2.0 2.18} {2.0 2.18}}
  1015. test textDisp-9.2 {TkTextRedrawTag} {fonts} {
  1016.     .t configure -wrap char
  1017.     .t delete 1.0 end
  1018.     .t insert 1.0 "Line 1nLine 2 is long enough to wrap aroundnLine 3nLine 4"
  1019.     update
  1020.     .t tag add big 1.2 2.4
  1021.     update
  1022.     list $tk_textRelayout $tk_textRedraw
  1023. } {{1.0 2.0 2.17} {1.0 2.0 2.17}}
  1024. test textDisp-9.3 {TkTextRedrawTag} {
  1025.     .t configure -wrap char
  1026.     .t delete 1.0 end
  1027.     .t insert 1.0 "Line 1nLine 2 is long enough to wrap aroundnLine 3nLine 4"
  1028.     update
  1029.     .t tag add big 2.2 2.4
  1030.     .t tag remove big 1.0 end
  1031.     update
  1032.     list $tk_textRelayout $tk_textRedraw
  1033. } {2.0 2.0}
  1034. test textDisp-9.4 {TkTextRedrawTag} {
  1035.     .t configure -wrap char
  1036.     .t delete 1.0 end
  1037.     .t insert 1.0 "Line 1nLine 2 is long enough to wrap aroundnLine 3nLine 4"
  1038.     update
  1039.     .t tag add big 2.2 2.20
  1040.     .t tag remove big 1.0 end
  1041.     update
  1042.     list $tk_textRelayout $tk_textRedraw
  1043. } {2.0 2.0}
  1044. test textDisp-9.5 {TkTextRedrawTag} {
  1045.     .t configure -wrap char
  1046.     .t delete 1.0 end
  1047.     .t insert 1.0 "Line 1nLine 2 is long enough to wrap aroundnLine 3nLine 4"
  1048.     update
  1049.     .t tag add big 2.2 2.end
  1050.     .t tag remove big 1.0 end
  1051.     update
  1052.     list $tk_textRelayout $tk_textRedraw
  1053. } {{2.0 2.20} {2.0 2.20}}
  1054. test textDisp-9.6 {TkTextRedrawTag} {
  1055.     .t configure -wrap char
  1056.     .t delete 1.0 end
  1057.     .t insert 1.0 "Line 1nLine 2 is long enough to wrapnLine 3 is also long enough to wrapnLine 4"
  1058.     update
  1059.     .t tag add big 2.2 3.5
  1060.     .t tag remove big 1.0 end
  1061.     update
  1062.     list $tk_textRelayout $tk_textRedraw
  1063. } {{2.0 2.20 3.0} {2.0 2.20 3.0}}
  1064. test textDisp-9.7 {TkTextRedrawTag} {
  1065.     .t configure -wrap char
  1066.     .t delete 1.0 end
  1067.     .t insert 1.0 "Line 1nLine 2 is long enough to wrapnLine 3 is also long enough to wrapnLine 4"
  1068.     .t tag add big 2.19
  1069.     update
  1070.     .t tag remove big 2.19
  1071.     update
  1072.     set tk_textRedraw
  1073. } {2.0 2.20 eof}
  1074. test textDisp-9.8 {TkTextRedrawTag} {fonts} {
  1075.     .t configure -wrap char
  1076.     .t delete 1.0 end
  1077.     .t insert 1.0 "Line 1nLine 2 is long enough to wrapnLine 3 is also long enough to wrapnLine 4"
  1078.     .t tag add big 1.0 2.0
  1079.     update
  1080.     .t tag add big 2.0 2.5
  1081.     update
  1082.     set tk_textRedraw
  1083. } {2.0 2.17}
  1084. test textDisp-9.9 {TkTextRedrawTag} {fonts} {
  1085.     .t configure -wrap char
  1086.     .t delete 1.0 end
  1087.     .t insert 1.0 "Line 1nLine 2 is long enough to wrapnLine 3 is also long enough to wrapnLine 4"
  1088.     .t tag add big 1.0 2.0
  1089.     update
  1090.     .t tag add big 1.5 2.5
  1091.     update
  1092.     set tk_textRedraw
  1093. } {2.0 2.17}
  1094. test textDisp-9.10 {TkTextRedrawTag} {
  1095.     .t configure -wrap char
  1096.     .t delete 1.0 end
  1097.     .t insert 1.0 "Line 1nLine 2 is long enough to wrapnLine 3 is also long enough to wrapnLine 4"
  1098.     .t tag add big 1.0 2.0
  1099.     update
  1100.     set tk_textRedraw {none}
  1101.     .t tag add big 1.3 1.5
  1102.     update
  1103.     set tk_textRedraw
  1104. } {none}
  1105. test textDisp-9.11 {TkTextRedrawTag} {
  1106.     .t configure -wrap char
  1107.     .t delete 1.0 end
  1108.     .t insert 1.0 "Line 1nLine 2 is long enough to wrapnLine 3 is also long enough to wrapnLine 4"
  1109.     .t tag add big 1.0 2.0
  1110.     update
  1111.     .t tag add big 1.0 2.0
  1112.     update
  1113.     set tk_textRedraw
  1114. } {}
  1115. test textDisp-10.1 {TkTextRelayoutWindow} {
  1116.     .t configure -wrap char
  1117.     .t delete 1.0 end
  1118.     .t insert 1.0 "Line 1nLine 2 is long enough to wrapnLine 3 is also long enough to wrapnLine 4"
  1119.     update
  1120.     .t configure -bg black
  1121.     update
  1122.     list $tk_textRelayout $tk_textRedraw
  1123. } {{1.0 2.0 2.20 3.0 3.20 4.0} {borders 1.0 2.0 2.20 3.0 3.20 4.0 eof}}
  1124. .t configure -bg [lindex [.t configure -bg] 3]
  1125. test textDisp-10.2 {TkTextRelayoutWindow} {
  1126.     toplevel .top -width 300 -height 200
  1127.     wm geometry .top +0+0
  1128.     text .top.t -font $fixedFont -width 20 -height 10 -relief raised -bd 2
  1129.     place .top.t -x 0 -y 0 -width 20 -height 20
  1130.     .top.t insert end "First line"
  1131.     .top.t see insert
  1132.     tkwait visibility .top.t
  1133.     place .top.t -width 150 -height 100
  1134.     update
  1135.     .top.t index @0,0
  1136. } {1.0}
  1137. catch {destroy .top}
  1138. .t delete 1.0 end
  1139. .t insert end "Line 1"
  1140. for {set i 2} {$i <= 200} {incr i} {
  1141.     .t insert end "nLine $i"
  1142. }
  1143. update
  1144. test textDisp-11.1 {TkTextSetYView} {
  1145.     .t yview 30.0
  1146.     update
  1147.     .t index @0,0
  1148. } {30.0}
  1149. test textDisp-11.2 {TkTextSetYView} {
  1150.     .t yview 30.0
  1151.     update
  1152.     .t yview 32.0
  1153.     update
  1154.     list [.t index @0,0] $tk_textRedraw
  1155. } {32.0 {40.0 41.0}}
  1156. test textDisp-11.3 {TkTextSetYView} {
  1157.     .t yview 30.0
  1158.     update
  1159.     .t yview 28.0
  1160.     update
  1161.     list [.t index @0,0] $tk_textRedraw
  1162. } {28.0 {28.0 29.0}}
  1163. test textDisp-11.4 {TkTextSetYView} {
  1164.     .t yview 30.0
  1165.     update
  1166.     .t yview 31.4
  1167.     update
  1168.     list [.t index @0,0] $tk_textRedraw
  1169. } {31.0 40.0}
  1170. test textDisp-11.5 {TkTextSetYView} {
  1171.     .t yview 30.0
  1172.     update
  1173.     set tk_textRedraw {}
  1174.     .t yview -pickplace 31.0
  1175.     update
  1176.     list [.t index @0,0] $tk_textRedraw
  1177. } {30.0 {}}
  1178. test textDisp-11.6 {TkTextSetYView} {
  1179.     .t yview 30.0
  1180.     update
  1181.     set tk_textRedraw {}
  1182.     .t yview -pickplace 28.0
  1183.     update
  1184.     list [.t index @0,0] $tk_textRedraw
  1185. } {28.0 {28.0 29.0}}
  1186. test textDisp-11.7 {TkTextSetYView} {
  1187.     .t yview 30.0
  1188.     update
  1189.     set tk_textRedraw {}
  1190.     .t yview -pickplace 26.0
  1191.     update
  1192.     list [.t index @0,0] $tk_textRedraw
  1193. } {22.0 {22.0 23.0 24.0 25.0 26.0 27.0 28.0 29.0}}
  1194. test textDisp-11.8 {TkTextSetYView} {
  1195.     .t yview 30.0
  1196.     update
  1197.     set tk_textRedraw {}
  1198.     .t yview -pickplace 41.0
  1199.     update
  1200.     list [.t index @0,0] $tk_textRedraw
  1201. } {32.0 {40.0 41.0}}
  1202. test textDisp-11.9 {TkTextSetYView} {
  1203.     .t yview 30.0
  1204.     update
  1205.     set tk_textRedraw {}
  1206.     .t yview -pickplace 43.0
  1207.     update
  1208.     list [.t index @0,0] $tk_textRedraw
  1209. } {39.0 {40.0 41.0 42.0 43.0 44.0 45.0 46.0 47.0 48.0}}
  1210. test textDisp-11.10 {TkTextSetYView} {
  1211.     .t yview 30.0
  1212.     update
  1213.     set tk_textRedraw {}
  1214.     .t yview 10000.0
  1215.     update
  1216.     list [.t index @0,0] $tk_textRedraw
  1217. } {191.0 {191.0 192.0 193.0 194.0 195.0 196.0 197.0 198.0 199.0 200.0}}
  1218. test textDisp-11.11 {TkTextSetYView} {
  1219.     .t yview 195.0
  1220.     update
  1221.     set tk_textRedraw {}
  1222.     .t yview 197.0
  1223.     update
  1224.     list [.t index @0,0] $tk_textRedraw
  1225. } {191.0 {191.0 192.0 193.0 194.0 195.0 196.0}}
  1226. test textDisp-11.12 {TkTextSetYView, wrapped line is off-screen} {
  1227.     .t insert 10.0 "Long line with enough text to wrapn"
  1228.     .t yview 1.0
  1229.     update
  1230.     set tk_textRedraw {}
  1231.     .t see 10.30
  1232.     update
  1233.     list [.t index @0,0] $tk_textRedraw
  1234. } {2.0 10.20}
  1235. .t delete 10.0 11.0
  1236. test textDisp-11.13 {TkTestSetYView, partially-visible last line} {
  1237.     catch {destroy .top}
  1238.     toplevel .top
  1239.     wm geometry .top +0+0
  1240.     text .top.t -width 20 -height 5
  1241.     pack .top.t
  1242.     .top.t insert end "Line 1"
  1243.     for {set i 2} {$i <= 100} {incr i} {
  1244. .top.t insert end "nLine $i"
  1245.     }
  1246.     update
  1247.     scan [wm geometry .top] "%dx%d" w2 h2
  1248.     wm geometry .top ${w2}x[expr $h2-2]
  1249.     update
  1250.     .top.t yview 1.0
  1251.     update
  1252.     set tk_textRedraw {}
  1253.     .top.t see 5.0
  1254.     update
  1255.     list [.top.t index @0,0] $tk_textRedraw
  1256. } {2.0 {5.0 6.0}}
  1257. catch {destroy .top}
  1258. toplevel .top
  1259. wm geometry .top +0+0
  1260. text .top.t -width 30 -height 3
  1261. pack .top.t
  1262. .top.t insert end "Line 1"
  1263. for {set i 2} {$i <= 20} {incr i} {
  1264.     .top.t insert end "nLine $i"
  1265. }
  1266. update
  1267. test textDisp-11.14 {TkTextSetYView, only a few lines visible} {
  1268.     .top.t yview 5.0
  1269.     update
  1270.     .top.t see 10.0
  1271.     .top.t index @0,0
  1272. } {8.0}
  1273. test textDisp-11.15 {TkTextSetYView, only a few lines visible} {
  1274.     .top.t yview 5.0
  1275.     update
  1276.     .top.t see 11.0
  1277.     .top.t index @0,0
  1278. } {10.0}
  1279. test textDisp-11.16 {TkTextSetYView, only a few lines visible} {
  1280.     .top.t yview 8.0
  1281.     update
  1282.     .top.t see 5.0
  1283.     .top.t index @0,0
  1284. } {5.0}
  1285. test textDisp-11.17 {TkTextSetYView, only a few lines visible} {
  1286.     .top.t yview 8.0
  1287.     update
  1288.     .top.t see 4.0
  1289.     .top.t index @0,0
  1290. } {3.0}
  1291. destroy .top
  1292. .t configure -wrap word
  1293. .t delete 50.0 51.0
  1294. .t insert 50.0 "This is a long line, one that will wrap around twice.n"
  1295. test textDisp-12.1 {MeasureUp} {
  1296.     .t yview 100.0
  1297.     update
  1298.     .t yview -pickplace 52.0
  1299.     update
  1300.     .t index @0,0
  1301. } {50.0}
  1302. test textDisp-12.2 {MeasureUp} {
  1303.     .t yview 100.0
  1304.     update
  1305.     .t yview -pickplace 53.0
  1306.     update
  1307.     .t index @0,0
  1308. } {50.15}
  1309. test textDisp-12.3 {MeasureUp} {
  1310.     .t yview 100.0
  1311.     update
  1312.     .t yview -pickplace 50.10
  1313.     update
  1314.     .t index @0,0
  1315. } {46.0}
  1316. .t configure -wrap none
  1317. test textDisp-12.4 {MeasureUp} {
  1318.     .t yview 100.0
  1319.     update
  1320.     .t yview -pickplace 53.0
  1321.     update
  1322.     .t index @0,0
  1323. } {49.0}
  1324. test textDisp-12.5 {MeasureUp} {
  1325.     .t yview 100.0
  1326.     update
  1327.     .t yview -pickplace 50.10
  1328.     update
  1329.     .t index @0,0
  1330. } {46.0}
  1331. .t configure -wrap none
  1332. .t delete 1.0 end
  1333. for {set i 1} {$i < 99} {incr i} {
  1334.     .t insert end "Line $in"
  1335. }
  1336. .t insert end "Line 100"
  1337. .t insert 30.end { is quite long, so that it flows way off the end of the window and we can use it to test out the horizontal positioning features of the "see" command.}
  1338. test textDisp-13.1 {TkTextSeeCmd procedure} {
  1339.     list [catch {.t see} msg] $msg
  1340. } {1 {wrong # args: should be ".t see index"}}
  1341. test textDisp-13.2 {TkTextSeeCmd procedure} {
  1342.     list [catch {.t see a b} msg] $msg
  1343. } {1 {wrong # args: should be ".t see index"}}
  1344. test textDisp-13.3 {TkTextSeeCmd procedure} {
  1345.     list [catch {.t see badIndex} msg] $msg
  1346. } {1 {bad text index "badIndex"}}
  1347. test textDisp-13.4 {TkTextSeeCmd procedure} {
  1348.     .t xview moveto 0
  1349.     .t yview moveto 0
  1350.     update
  1351.     .t see 4.2
  1352.     .t index @0,0
  1353. } {1.0}
  1354. test textDisp-13.5 {TkTextSeeCmd procedure} {
  1355.     .t configure -wrap char
  1356.     .t xview moveto 0
  1357.     .t yview moveto 0
  1358.     update
  1359.     .t see 12.1
  1360.     .t index @0,0
  1361. } {3.0}
  1362. test textDisp-13.6 {TkTextSeeCmd procedure} {
  1363.     .t configure -wrap char
  1364.     .t xview moveto 0
  1365.     .t yview moveto 0
  1366.     update
  1367.     .t see 30.50
  1368.     set x [.t index @0,0]
  1369.     .t configure -wrap none
  1370.     set x
  1371. } {28.0}
  1372. test textDisp-13.7 {TkTextSeeCmd procedure} {fonts} {
  1373.     .t xview moveto 0
  1374.     .t yview moveto 0
  1375.     .t tag add sel 30.20
  1376.     .t tag add sel 30.40
  1377.     update
  1378.     .t see 30.50
  1379.     set x [list [.t bbox 30.50]]
  1380.     .t see 30.39
  1381.     lappend x [.t bbox 30.39]
  1382.     .t see 30.38
  1383.     lappend x [.t bbox 30.38]
  1384.     .t see 30.20
  1385.     lappend x [.t bbox 30.20]
  1386. } {{73 55 7 13} {3 55 7 13} {3 55 7 13} {73 55 7 13}}
  1387. test textDisp-13.8 {TkTextSeeCmd procedure} {fonts} {
  1388.     .t xview moveto 0
  1389.     .t yview moveto 0
  1390.     .t tag add sel 30.20
  1391.     .t tag add sel 30.50
  1392.     update
  1393.     .t see 30.50
  1394.     set x [list [.t bbox 30.50]]
  1395.     .t see 30.60
  1396.     lappend x [.t bbox 30.60]
  1397.     .t see 30.65
  1398.     lappend x [.t bbox 30.65]
  1399.     .t see 30.90
  1400.     lappend x [.t bbox 30.90]
  1401. } {{73 55 7 13} {136 55 7 13} {136 55 7 13} {73 55 7 13}}
  1402. test textDisp-13.9 {TkTextSeeCmd procedure} {fonts} {
  1403.     wm geom . [expr $width-2]x$height
  1404.     .t xview moveto 0
  1405.     .t yview moveto 0
  1406.     .t tag add sel 30.20
  1407.     .t tag add sel 30.50
  1408.     update
  1409.     .t see 30.50
  1410.     set x [list [.t bbox 30.50]]
  1411.     .t see 30.60
  1412.     lappend x [.t bbox 30.60]
  1413.     .t see 30.65
  1414.     lappend x [.t bbox 30.65]
  1415.     .t see 30.90
  1416.     lappend x [.t bbox 30.90]
  1417. } {{80 55 7 13} {136 55 7 13} {136 55 7 13} {80 55 7 13}}
  1418. test textDisp-13.10 {TkTextSeeCmd procedure} {} {
  1419.     # SF Bug 641778
  1420.     set w .tsee
  1421.     destroy $w
  1422.     text $w -font {Helvetica 8 normal} -bd 16
  1423.     $w insert end Hello
  1424.     $w see end
  1425.     set res [$w bbox end]
  1426.     destroy $w
  1427.     set res
  1428. } {}
  1429. wm geom . {}
  1430. .t configure -wrap none
  1431. test textDisp-14.1 {TkTextXviewCmd procedure} {
  1432.     .t delete 1.0 end
  1433.     update
  1434.     .t insert end xxxxxxxxxn
  1435.     .t insert end "xxxxx xxxxxxxxxxx xxxx xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxn"
  1436.     .t insert end "xxxx xxxxxxxxx xxxxxxxxxxxxx"
  1437.     .t xview moveto .5
  1438.     .t xview
  1439. } {0.5 0.857143}
  1440. .t configure -wrap char
  1441. test textDisp-14.2 {TkTextXviewCmd procedure} {
  1442.     .t delete 1.0 end
  1443.     update
  1444.     .t insert end xxxxxxxxxn
  1445.     .t insert end "xxxxxn"
  1446.     .t insert end "xxxx"
  1447.     .t xview
  1448. } {0 1}
  1449. .t configure -wrap none
  1450. test textDisp-14.3 {TkTextXviewCmd procedure} {
  1451.     .t delete 1.0 end
  1452.     update
  1453.     .t insert end xxxxxxxxxn
  1454.     .t insert end "xxxxxn"
  1455.     .t insert end "xxxx"
  1456.     .t xview
  1457. } {0 1}
  1458. test textDisp-14.4 {TkTextXviewCmd procedure} {
  1459.     list [catch {.t xview moveto} msg] $msg
  1460. } {1 {wrong # args: should be ".t xview moveto fraction"}}
  1461. test textDisp-14.5 {TkTextXviewCmd procedure} {
  1462.     list [catch {.t xview moveto a b} msg] $msg
  1463. } {1 {wrong # args: should be ".t xview moveto fraction"}}
  1464. test textDisp-14.6 {TkTextXviewCmd procedure} {
  1465.     list [catch {.t xview moveto a} msg] $msg
  1466. } {1 {expected floating-point number but got "a"}}
  1467. test textDisp-14.7 {TkTextXviewCmd procedure} {
  1468.     .t delete 1.0 end
  1469.     .t insert end xxxxxxxxxn
  1470.     .t insert end "xxxxx xxxxxxxxxxx xxxx xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxn"
  1471.     .t insert end "xxxx xxxxxxxxx xxxxxxxxxxxxx"
  1472.     .t xview moveto .3
  1473.     .t xview
  1474. } {0.303571 0.660714}
  1475. test textDisp-14.8 {TkTextXviewCmd procedure} {
  1476.     .t delete 1.0 end
  1477.     .t insert end xxxxxxxxxn
  1478.     .t insert end "xxxxx xxxxxxxxxxx xxxx xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxn"
  1479.     .t insert end "xxxx xxxxxxxxx xxxxxxxxxxxxx"
  1480.     .t xview moveto -.4
  1481.     .t xview
  1482. } {0 0.357143}
  1483. test textDisp-14.9 {TkTextXviewCmd procedure} {
  1484.     .t delete 1.0 end
  1485.     .t insert end xxxxxxxxxn
  1486.     .t insert end "xxxxx xxxxxxxxxxx xxxx xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxn"
  1487.     .t insert end "xxxx xxxxxxxxx xxxxxxxxxxxxx"
  1488.     .t xview m 1.4
  1489.     .t xview
  1490. } {0.642857 1}
  1491. test textDisp-14.10 {TkTextXviewCmd procedure} {
  1492.     list [catch {.t xview scroll a} msg] $msg
  1493. } {1 {wrong # args: should be ".t xview scroll number units|pages"}}
  1494. test textDisp-14.11 {TkTextXviewCmd procedure} {
  1495.     list [catch {.t xview scroll a b c} msg] $msg
  1496. } {1 {wrong # args: should be ".t xview scroll number units|pages"}}
  1497. test textDisp-14.12 {TkTextXviewCmd procedure} {
  1498.     list [catch {.t xview scroll gorp units} msg] $msg
  1499. } {1 {expected integer but got "gorp"}}
  1500. test textDisp-14.13 {TkTextXviewCmd procedure} {
  1501.     .t delete 1.0 end
  1502.     .t insert end xxxxxxxxxn
  1503.     .t insert end "a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 b0 b1 b2 b3 b4 b5 b6 b7 b8 b9 c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 c0 c1 c2 c3 c4 c5 c6 c7 c8 c9n"
  1504.     .t insert end "xxxx xxxxxxxxx xxxxxxxxxxxxx"
  1505.     .t xview moveto 0
  1506.     .t xview scroll 2 p
  1507.     set x [.t index @0,22]
  1508.     .t xview scroll -1 p
  1509.     lappend x [.t index @0,22]
  1510.     .t xview scroll -2 pages
  1511.     lappend x [.t index @0,22]
  1512. } {2.36 2.18 2.0}
  1513. test textDisp-14.14 {TkTextXviewCmd procedure} {
  1514.     .t delete 1.0 end
  1515.     .t insert end xxxxxxxxxn
  1516.     .t insert end "a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 b0 b1 b2 b3 b4 b5 b6 b7 b8 b9 c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 c0 c1 c2 c3 c4 c5 c6 c7 c8 c9n"
  1517.     .t insert end "xxxx xxxxxxxxx xxxxxxxxxxxxx"
  1518.     .t xview moveto 0
  1519.     .t xview scroll 21 u  
  1520.     set x [.t index @0,22]
  1521.     .t xview scroll -1 u
  1522.     lappend x [.t index @0,22]
  1523.     .t xview scroll 100 units
  1524.     lappend x [.t index @0,22]
  1525.     .t xview scroll -15 units
  1526.     lappend x [.t index @0,22]
  1527. } {2.21 2.20 2.99 2.84}
  1528. test textDisp-14.15 {TkTextXviewCmd procedure} {
  1529.     list [catch {.t xview scroll 14 globs} msg] $msg
  1530. } {1 {bad argument "globs": must be units or pages}}
  1531. test textDisp-14.16 {TkTextXviewCmd procedure} {
  1532.     list [catch {.t xview flounder} msg] $msg
  1533. } {1 {unknown option "flounder": must be moveto or scroll}}
  1534. .t configure -wrap char
  1535. .t delete 1.0 end
  1536. for {set i 1} {$i < 99} {incr i} {
  1537.     .t insert end "Line $in"
  1538. }
  1539. .t insert end "Line 100"
  1540. .t delete 50.0 51.0
  1541. .t insert 50.0 "This is a long line, one that will wrap around twice.n"
  1542. test textDisp-15.1 {ScrollByLines procedure, scrolling backwards} {
  1543.     .t yview 45.0
  1544.     update
  1545.     .t yview scroll -3 units
  1546.     .t index @0,0
  1547. } {42.0}
  1548. test textDisp-15.2 {ScrollByLines procedure, scrolling backwards} {
  1549.     .t yview 51.0
  1550.     update
  1551.     .t yview scroll -2 units
  1552.     .t index @0,0
  1553. } {50.20}
  1554. test textDisp-15.3 {ScrollByLines procedure, scrolling backwards} {
  1555.     .t yview 51.0
  1556.     update
  1557.     .t yview scroll -4 units
  1558.     .t index @0,0
  1559. } {49.0}
  1560. test textDisp-15.4 {ScrollByLines procedure, scrolling backwards} {
  1561.     .t yview 50.20
  1562.     update
  1563.     .t yview scroll -2 units
  1564.     .t index @0,0
  1565. } {49.0}
  1566. test textDisp-15.5 {ScrollByLines procedure, scrolling backwards} {
  1567.     .t yview 50.40
  1568.     update
  1569.     .t yview scroll -2 units
  1570.     .t index @0,0
  1571. } {50.0}
  1572. test textDisp-15.6 {ScrollByLines procedure, scrolling backwards} {
  1573.     .t yview 3.2
  1574.     update
  1575.     .t yview scroll -5 units
  1576.     .t index @0,0
  1577. } {1.0}
  1578. test textDisp-15.7 {ScrollByLines procedure, scrolling forwards} {
  1579.     .t yview 48.0
  1580.     update
  1581.     .t yview scroll 4 units
  1582.     .t index @0,0
  1583. } {50.40}
  1584. .t configure -wrap char
  1585. .t delete 1.0 end
  1586. .t insert insert "Line 1"
  1587. for {set i 2} {$i <= 200} {incr i} {
  1588.     .t insert end "nLine $i"
  1589. }
  1590. .t tag add big 100.0 105.0
  1591. .t insert 151.end { has a lot of extra text, so that it wraps around on the screen several times over.}
  1592. .t insert 153.end { also has enoug extra text to wrap.}
  1593. update
  1594. test textDisp-16.1 {TkTextYviewCmd procedure} {
  1595.     .t yview 21.0
  1596.     set x [.t yview]
  1597.     .t yview 1.0
  1598.     set x
  1599. } {0.1 0.15}
  1600. test textDisp-16.2 {TkTextYviewCmd procedure} {
  1601.     list [catch {.t yview 2 3} msg] $msg
  1602. } {1 {unknown option "2": must be moveto or scroll}}
  1603. test textDisp-16.3 {TkTextYviewCmd procedure} {
  1604.     list [catch {.t yview -pickplace} msg] $msg
  1605. } {1 {wrong # args: should be ".t yview -pickplace lineNum|index"}}
  1606. test textDisp-16.4 {TkTextYviewCmd procedure} {
  1607.     list [catch {.t yview -pickplace 2 3} msg] $msg
  1608. } {1 {wrong # args: should be ".t yview -pickplace lineNum|index"}}
  1609. test textDisp-16.5 {TkTextYviewCmd procedure} {
  1610.     list [catch {.t yview -bogus 2} msg] $msg
  1611. } {1 {unknown option "-bogus": must be moveto or scroll}}
  1612. test textDisp-16.6 {TkTextYviewCmd procedure, integer position} {
  1613.     .t yview 100.0
  1614.     update
  1615.     .t yview 98
  1616.     .t index @0,0
  1617. } {99.0}
  1618. test textDisp-16.7 {TkTextYviewCmd procedure} {
  1619.     .t yview 2.0
  1620.     .t yv -pickplace 13.0
  1621.     .t index @0,0
  1622. } {4.0}
  1623. test textDisp-16.8 {TkTextYviewCmd procedure} {
  1624.     list [catch {.t yview bad_mark_name} msg] $msg
  1625. } {1 {bad text index "bad_mark_name"}}
  1626. test textDisp-16.9 {TkTextYviewCmd procedure, "moveto" option} {
  1627.     list [catch {.t yview moveto a b} msg] $msg
  1628. } {1 {wrong # args: should be ".t yview moveto fraction"}}
  1629. test textDisp-16.10 {TkTextYviewCmd procedure, "moveto" option} {
  1630.     list [catch {.t yview moveto gorp} msg] $msg
  1631. } {1 {expected floating-point number but got "gorp"}}
  1632. test textDisp-16.11 {TkTextYviewCmd procedure, "moveto" option} {
  1633.     .t yview moveto 0.5
  1634.     .t index @0,0
  1635. } {101.0}
  1636. test textDisp-16.12 {TkTextYviewCmd procedure, "moveto" option} {
  1637.     .t yview moveto -1
  1638.     .t index @0,0
  1639. } {1.0}
  1640. test textDisp-16.13 {TkTextYviewCmd procedure, "moveto" option} {
  1641.     .t yview moveto 1.1
  1642.     .t index @0,0
  1643. } {191.0}
  1644. test textDisp-16.14 {TkTextYviewCmd procedure, "moveto" option} {
  1645.     .t yview moveto .75
  1646.     .t index @0,0
  1647. } {151.0}
  1648. test textDisp-16.15 {TkTextYviewCmd procedure, "moveto" option} {
  1649.     .t yview moveto .752
  1650.     .t index @0,0
  1651. } {151.20}
  1652. test textDisp-16.16 {TkTextYviewCmd procedure, "moveto" option} {
  1653.     .t yview moveto .754
  1654.     .t index @0,0
  1655. } {151.60}
  1656. test textDisp-16.17 {TkTextYviewCmd procedure, "moveto" option} {
  1657.     .t yview moveto .755
  1658.     .t index @0,0
  1659. } {152.0}
  1660. test textDisp-16.18 {TkTextYviewCmd procedure, "moveto" roundoff} {fonts} {
  1661.     catch {destroy .top1}
  1662.     toplevel .top1
  1663.     wm geometry .top1 +0+0
  1664.     text .top1.t -height 3 -width 4 -wrap none -setgrid 1 -padx 6 
  1665. -spacing3 6
  1666.     .top1.t insert end "1n2n3n4n5n6"
  1667.     pack .top1.t
  1668.     update
  1669.     .top1.t yview moveto 0.3333
  1670.     set result [.top1.t yview]
  1671.     destroy .top1
  1672.     set result
  1673. } {0.333333 0.833333}
  1674. test textDisp-16.19 {TkTextYviewCmd procedure, "scroll" option} {
  1675.     list [catch {.t yview scroll a} msg] $msg
  1676. } {1 {wrong # args: should be ".t yview scroll number units|pages"}}
  1677. test textDisp-16.20 {TkTextYviewCmd procedure, "scroll" option} {
  1678.     list [catch {.t yview scroll a b c} msg] $msg
  1679. } {1 {wrong # args: should be ".t yview scroll number units|pages"}}
  1680. test textDisp-16.21 {TkTextYviewCmd procedure, "scroll" option} {
  1681.     list [catch {.t yview scroll badInt bogus} msg] $msg
  1682. } {1 {expected integer but got "badInt"}}
  1683. test textDisp-16.22 {TkTextYviewCmd procedure, "scroll" option, back pages} {
  1684.     .t yview 50.0
  1685.     update
  1686.     .t yview scroll -1 pages
  1687.     .t index @0,0
  1688. } {42.0}
  1689. test textDisp-16.23 {TkTextYviewCmd procedure, "scroll" option, back pages} {
  1690.     .t yview 50.0
  1691.     update
  1692.     .t yview scroll -3 p
  1693.     .t index @0,0
  1694. } {26.0}
  1695. test textDisp-16.24 {TkTextYviewCmd procedure, "scroll" option, back pages} {
  1696.     .t yview 5.0
  1697.     update
  1698.     .t yview scroll -3 p
  1699.     .t index @0,0
  1700. } {1.0}
  1701. test textDisp-16.25 {TkTextYviewCmd procedure, "scroll" option, back pages} {
  1702.     .t configure -height 1
  1703.     update
  1704.     .t yview 50.0
  1705.     update
  1706.     .t yview scroll -1 pages
  1707.     set x [.t index @0,0]
  1708.     .t configure -height 10
  1709.     update
  1710.     set x
  1711. } {49.0}
  1712. test textDisp-16.26 {TkTextYviewCmd procedure, "scroll" option, forward pages} {
  1713.     .t yview 50.0
  1714.     update
  1715.     .t yview scroll 1 pages
  1716.     .t index @0,0
  1717. } {58.0}
  1718. test textDisp-16.27 {TkTextYviewCmd procedure, "scroll" option, forward pages} {
  1719.     .t yview 50.0
  1720.     update
  1721.     .t yview scroll 2 pages
  1722.     .t index @0,0
  1723. } {66.0}
  1724. test textDisp-16.28 {TkTextYviewCmd procedure, "scroll" option, forward pages} {fonts} {
  1725.     .t yview 98.0
  1726.     update
  1727.     .t yview scroll 1 page
  1728.     .t index @0,0
  1729. } {103.0}
  1730. test textDisp-16.29 {TkTextYviewCmd procedure, "scroll" option, forward pages} {
  1731.     .t configure -height 1
  1732.     update
  1733.     .t yview 50.0
  1734.     update
  1735.     .t yview scroll 1 pages
  1736.     set x [.t index @0,0]
  1737.     .t configure -height 10
  1738.     update
  1739.     set x
  1740. } {51.0}
  1741. test textDisp-16.30 {TkTextYviewCmd procedure, "scroll units" option} {
  1742.     .t yview 45.0
  1743.     update
  1744.     .t yview scroll -3 units
  1745.     .t index @0,0
  1746. } {42.0}
  1747. test textDisp-16.31 {TkTextYviewCmd procedure, "scroll units" option} {
  1748.     .t yview 149.0
  1749.     update
  1750.     .t yview scroll 4 units
  1751.     .t index @0,0
  1752. } {151.40}
  1753. test textDisp-16.32 {TkTextYviewCmd procedure} {
  1754.     list [catch {.t yview scroll 12 bogoids} msg] $msg
  1755. } {1 {bad argument "bogoids": must be units or pages}}
  1756. test textDisp-16.33 {TkTextYviewCmd procedure} {
  1757.     list [catch {.t yview bad_arg 1 2} msg] $msg
  1758. } {1 {unknown option "bad_arg": must be moveto or scroll}}
  1759. .t delete 1.0 end
  1760. foreach i {a b c d e f g h i j k l m n o p q r s t u v w x y z} {
  1761.     .t insert end "nLine $i 11111 $i 22222 $i 33333 $i 44444 $i 55555"
  1762.     .t insert end " $i 66666 $i 77777 $i 88888 $i"
  1763. }
  1764. .t configure -wrap none
  1765. test textDisp-17.1 {TkTextScanCmd procedure} {
  1766.     list [catch {.t scan a b} msg] $msg
  1767. } {1 {wrong # args: should be ".t scan mark x y" or ".t scan dragto x y ?gain?"}}
  1768. test textDisp-17.2 {TkTextScanCmd procedure} {
  1769.     list [catch {.t scan a b c d} msg] $msg
  1770. } {1 {expected integer but got "b"}}
  1771. test textDisp-17.3 {TkTextScanCmd procedure} {
  1772.     list [catch {.t scan stupid b 20} msg] $msg
  1773. } {1 {expected integer but got "b"}}
  1774. test textDisp-17.4 {TkTextScanCmd procedure} {
  1775.     list [catch {.t scan stupid -2 bogus} msg] $msg
  1776. } {1 {expected integer but got "bogus"}}
  1777. test textDisp-17.5 {TkTextScanCmd procedure} {
  1778.     list [catch {.t scan stupid 123 456} msg] $msg
  1779. } {1 {bad scan option "stupid": must be mark or dragto}}
  1780. test textDisp-17.6 {TkTextScanCmd procedure} {fonts} {
  1781.     .t yview 1.0
  1782.     .t xview moveto 0
  1783.     .t scan mark 40 60
  1784.     .t scan dragto 35 55
  1785.     .t index @0,0
  1786. } {4.7}
  1787. test textDisp-17.7 {TkTextScanCmd procedure} {fonts} {
  1788.     .t yview 10.0
  1789.     .t xview moveto 0
  1790.     .t xview scroll 20 units
  1791.     .t scan mark -10 60
  1792.     .t scan dragto -5 65
  1793.     .t index @0,0
  1794.     set x [.t index @0,0]
  1795.     .t scan dragto 0 70
  1796.     list $x [.t index @0,0]
  1797. } {7.13 3.6}
  1798. test textDisp-17.8 {TkTextScanCmd procedure} {fonts} {
  1799.     .t yview 1.0
  1800.     .t xview moveto 0
  1801.     .t scan mark 0 60
  1802.     .t scan dragto 30 100
  1803.     .t scan dragto 25 95 
  1804.     .t index @0,0
  1805. } {4.7}
  1806. test textDisp-17.9 {TkTextScanCmd procedure} {fonts} {
  1807.     .t yview end
  1808.     .t xview moveto 0
  1809.     .t xview scroll 100 units
  1810.     .t scan mark 90 60
  1811.     .t scan dragto 10 0
  1812.     .t scan dragto 15 5
  1813.     .t index @0,0
  1814. } {18.44}
  1815. .t configure -wrap word
  1816. test textDisp-17.10 {TkTextScanCmd procedure, word wrapping} {fonts} {
  1817.     .t yview 10.0
  1818.     .t scan mark -10 60
  1819.     .t scan dragto -5 65
  1820.     set x [.t index @0,0]
  1821.     .t scan dragto 0 70
  1822.     list $x [.t index @0,0]
  1823. } {9.31 8.47}
  1824. .t configure -xscrollcommand scroll -yscrollcommand {}
  1825. test textDisp-18.1 {GetXView procedure} {
  1826.     .t configure -wrap none
  1827.     .t delete 1.0 end
  1828.     .t insert end xxxxxxxxxn
  1829.     .t insert end xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxn
  1830.     .t insert end xxxxxxxxxxxxxxxxxxxxxxxxxx
  1831.     update
  1832.     set scrollInfo
  1833. } {0 0.363636}
  1834. test textDisp-18.2 {GetXView procedure} {
  1835.     .t configure -wrap char
  1836.     .t delete 1.0 end
  1837.     .t insert end xxxxxxxxxn
  1838.     .t insert end xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxn
  1839.     .t insert end xxxxxxxxxxxxxxxxxxxxxxxxxx
  1840.     update
  1841.     set scrollInfo
  1842. } {0 1}
  1843. test textDisp-18.3 {GetXView procedure} {
  1844.     .t configure -wrap none
  1845.     .t delete 1.0 end
  1846.     update
  1847.     set scrollInfo
  1848. } {0 1}
  1849. test textDisp-18.4 {GetXView procedure} {
  1850.     .t configure -wrap none
  1851.     .t delete 1.0 end
  1852.     .t insert end xxxxxxxxxn
  1853.     .t insert end xxxxxxn
  1854.     .t insert end xxxxxxxxxxxxxxxxx
  1855.     update
  1856.     set scrollInfo
  1857. } {0 1}
  1858. test textDisp-18.5 {GetXView procedure} {
  1859.     .t configure -wrap none
  1860.     .t delete 1.0 end
  1861.     .t insert end xxxxxxxxxn
  1862.     .t insert end xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxn
  1863.     .t insert end xxxxxxxxxxxxxxxxxxxxxxxxxx
  1864.     .t xview scroll 31 units
  1865.     update
  1866.     set scrollInfo
  1867. } {0.563636 0.927273}
  1868. test textDisp-18.6 {GetXView procedure} {
  1869.     .t configure -wrap none
  1870.     .t delete 1.0 end
  1871.     .t insert end xxxxxxxxxn
  1872.     .t insert end "xxxxx xxxxxxxxxxx xxxx xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxn"
  1873.     .t insert end "xxxx xxxxxxxxx xxxxxxxxxxxxx"
  1874.     .t xview moveto 0
  1875.     .t xview scroll 31 units
  1876.     update
  1877.     set x {}
  1878.     lappend x $scrollInfo
  1879.     .t configure -wrap char
  1880.     update
  1881.     lappend x $scrollInfo
  1882.     .t configure -wrap word
  1883.     update
  1884.     lappend x $scrollInfo
  1885.     .t configure -wrap none
  1886.     update
  1887.     lappend x $scrollInfo
  1888. } {{0.553571 0.910714} {0 1} {0 1} {0 0.357143}}
  1889. test textDisp-18.7 {GetXView procedure} {
  1890.     .t configure -wrap none
  1891.     .t delete 1.0 end
  1892.     update
  1893.     set scrollInfo unchanged
  1894.     .t insert end xxxxxxn
  1895.     .t insert end xxx
  1896.     update
  1897.     set scrollInfo
  1898. } {unchanged}
  1899. test textDisp-18.8 {GetXView procedure} {
  1900.     proc bgerror msg {
  1901. global x errorInfo
  1902. set x [list $msg $errorInfo]
  1903.     }
  1904.     proc bogus args {
  1905. error "bogus scroll proc"
  1906.     }
  1907.     .t configure -wrap none
  1908.     .t delete 1.0 end
  1909.     .t insert end xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxn
  1910.     update
  1911.     .t delete 1.0 end
  1912.     .t configure -xscrollcommand scrollError
  1913.     update
  1914.     set x
  1915. } {{scrolling error} {scrolling error
  1916.     while executing
  1917. "error "scrolling error""
  1918.     (procedure "scrollError" line 2)
  1919.     invoked from within
  1920. "scrollError 0 1"
  1921.     (horizontal scrolling command executed by text)}}
  1922. catch {rename bgerror {}}
  1923. catch {rename bogus {}}
  1924. .t configure -xscrollcommand {} -yscrollcommand scroll
  1925. .t configure -xscrollcommand {} -yscrollcommand scroll
  1926. test textDisp-19.1 {GetYView procedure} {
  1927.     .t configure -wrap char
  1928.     .t delete 1.0 end
  1929.     update
  1930.     set scrollInfo
  1931. } {0 1}
  1932. test textDisp-19.2 {GetYView procedure} {
  1933.     .t configure -wrap char
  1934.     .t delete 1.0 end
  1935.     update
  1936.     set scrollInfo "unchanged"
  1937.     .t insert 1.0 "Line1nLine2"
  1938.     update
  1939.     set scrollInfo
  1940. } {unchanged}
  1941. test textDisp-19.3 {GetYView procedure} {
  1942.     .t configure -wrap char
  1943.     .t delete 1.0 end
  1944.     update
  1945.     set scrollInfo "unchanged"
  1946.     .t insert 1.0 "Line 1nLine 2 is so long that it wraps aroundnLine 3"
  1947.     update
  1948.     set scrollInfo
  1949. } {unchanged}
  1950. test textDisp-19.4 {GetYView procedure} {
  1951.     .t configure -wrap char
  1952.     .t delete 1.0 end
  1953.     .t insert 1.0 "Line 1"
  1954.     update
  1955.     set scrollInfo "unchanged"
  1956.     foreach i {2 3 4 5 6 7 8 9 10 11 12 13} {
  1957. .t insert end "nLine $i"
  1958.     }
  1959.     update
  1960.     set scrollInfo
  1961. } {0 0.769231}
  1962. test textDisp-19.5 {GetYView procedure} {
  1963.     .t configure -wrap char
  1964.     .t delete 1.0 end
  1965.     .t insert 1.0 "Line 1"
  1966.     foreach i {2 3 4 5 6 7 8 9 10 11 12 13} {
  1967. .t insert end "nLine $i"
  1968.     }
  1969.     .t insert 2.end " is really quite long; in fact it's so long that it wraps three times"
  1970.     update
  1971.     set x $scrollInfo
  1972. } {0 0.538462}
  1973. test textDisp-19.6 {GetYView procedure} {
  1974.     .t configure -wrap char
  1975.     .t delete 1.0 end
  1976.     .t insert 1.0 "Line 1"
  1977.     foreach i {2 3 4 5 6 7 8 9 10 11 12 13} {
  1978. .t insert end "nLine $i"
  1979.     }
  1980.     .t insert 2.end " is really quite long; in fact it's so long that it wraps three times"
  1981.     .t yview 4.0
  1982.     update
  1983.     set x $scrollInfo
  1984. } {0.230769 1}
  1985. test textDisp-19.7 {GetYView procedure} {
  1986.     .t configure -wrap char
  1987.     .t delete 1.0 end
  1988.     .t insert 1.0 "Line 1"
  1989.     foreach i {2 3 4 5 6 7 8 9 10 11 12 13} {
  1990. .t insert end "nLine $i"
  1991.     }
  1992.     .t insert 2.end " is really quite long; in fact it's so long that it wraps three times"
  1993.     .t yview 2.26
  1994.     update
  1995.     set x $scrollInfo
  1996. } {0.097166 0.692308}
  1997. test textDisp-19.8 {GetYView procedure} {
  1998.     .t configure -wrap char
  1999.     .t delete 1.0 end
  2000.     .t insert 1.0 "Line 1"
  2001.     foreach i {2 3 4 5 6 7 8 9 10 11 12 13} {
  2002. .t insert end "nLine $i"
  2003.     }
  2004.     .t insert 10.end " is really quite long; in fact it's so long that it wraps three times"
  2005.     .t yview 2.0
  2006.     update
  2007.     set x $scrollInfo
  2008. } {0.0769231 0.732268}
  2009. test textDisp-19.9 {GetYView procedure} {
  2010.     .t configure -wrap char
  2011.     .t delete 1.0 end
  2012.     .t insert 1.0 "Line 1"
  2013.     foreach i {2 3 4 5 6 7 8 9 10 11 12 13 14 15} {
  2014. .t insert end "nLine $i"
  2015.     }
  2016.     .t yview 3.0
  2017.     update
  2018.     set scrollInfo
  2019. } {0.133333 0.8}
  2020. test textDisp-19.10 {GetYView procedure} {
  2021.     .t configure -wrap char
  2022.     .t delete 1.0 end
  2023.     .t insert 1.0 "Line 1"
  2024.     foreach i {2 3 4 5 6 7 8 9 10 11 12 13 14 15} {
  2025. .t insert end "nLine $i"
  2026.     }
  2027.     .t yview 11.0
  2028.     update
  2029.     set scrollInfo
  2030. } {0.333333 1}
  2031. test textDisp-19.11 {GetYView procedure} {
  2032.     .t configure -wrap word
  2033.     .t delete 1.0 end
  2034.     .t insert 1.0 "Line 1"
  2035.     foreach i {2 3 4 5 6 7 8 9 10 11 12 13 14 15} {
  2036. .t insert end "nLine $i"
  2037.     }
  2038.     .t insert end "nThis last line wraps around four "
  2039.     .t insert end "times with a bit left on the last line."
  2040.     .t yview insert
  2041.     update
  2042.     set scrollInfo
  2043. } {0.625 1}
  2044. test textDisp-19.12 {GetYView procedure, partially visible last line} {
  2045.     catch {destroy .top}
  2046.     toplevel .top
  2047.     wm geometry .top +0+0
  2048.     text .top.t -width 40 -height 5
  2049.     pack .top.t -expand yes -fill both
  2050.     .top.t insert end "Line 1nLine 2nLine 3nLine 4nLine 5"
  2051.     update
  2052.     scan [wm geom .top] %dx%d twidth theight
  2053.     wm geom .top ${twidth}x[expr $theight - 3]
  2054.     update
  2055.     .top.t yview
  2056. } {0 0.8}
  2057. test textDisp-19.13 {GetYView procedure, partially visible last line} {fonts} {
  2058.     catch {destroy .top}
  2059.     toplevel .top
  2060.     wm geometry .top +0+0
  2061.     text .top.t -width 40 -height 5
  2062.     pack .top.t -expand yes -fill both
  2063.     .top.t insert end "Line 1nLine 2nLine 3nLine 4 has enough text to wrap around at least once"
  2064.     update
  2065.     scan [wm geom .top] %dx%d twidth theight
  2066.     wm geom .top ${twidth}x[expr $theight - 3]
  2067.     update
  2068.     .top.t yview
  2069. } {0 0.942308}
  2070. catch {destroy .top}
  2071. test textDisp-19.14 {GetYView procedure} {
  2072.     .t configure -wrap word
  2073.     .t delete 1.0 end
  2074.     .t insert 1.0 "Line 1"
  2075.     foreach i {2 3 4 5 6 7 8 9 10 11 12 13 14 15} {
  2076. .t insert end "nLine $i"
  2077.     }
  2078.     .t insert end "nThis last line wraps around four "
  2079.     .t insert end "times with a bit left on the last line."
  2080.     update
  2081.     set scrollInfo "unchanged"
  2082.     .t mark set insert 3.0
  2083.     .t tag configure x -background red
  2084.     .t tag add x 1.0 5.0
  2085.     update
  2086.     .t tag delete x
  2087.     set scrollInfo
  2088. } {unchanged}
  2089. test textDisp-19.15 {GetYView procedure} {
  2090.     .t configure -wrap word
  2091.     .t delete 1.0 end
  2092.     .t insert 1.0 "Line 1"
  2093.     foreach i {2 3 4 5 6 7 8 9 10 11 12 13 14 15} {
  2094. .t insert end "nLine $i"
  2095.     }
  2096.     .t insert end "nThis last line wraps around four "
  2097.     .t insert end "times with a bit left on the last line."
  2098.     update
  2099.     .t configure -yscrollcommand scrollError
  2100.     proc bgerror args {
  2101. global x errorInfo errorCode
  2102. set x [list $args $errorInfo $errorCode]
  2103.     }
  2104.     .t delete 1.0 end
  2105.     update
  2106.     rename bgerror {}
  2107.     .t configure -yscrollcommand scroll
  2108.     set x
  2109. } {{{scrolling error}} {scrolling error
  2110.     while executing
  2111. "error "scrolling error""
  2112.     (procedure "scrollError" line 2)
  2113.     invoked from within
  2114. "scrollError 0 1"
  2115.     (vertical scrolling command executed by text)} NONE}
  2116. .t delete 1.0 end
  2117. .t insert end "Line 1"
  2118. for {set i 2} {$i <= 200} {incr i} {
  2119.     .t insert end "nLine $i"
  2120. }
  2121. .t configure -wrap word
  2122. .t delete 50.0 51.0
  2123. .t insert 50.0 "This is a long line, one that will wrap around twice.n"
  2124. test textDisp-20.1 {FindDLine} {fonts} {
  2125.     .t yview 48.0
  2126.     list [.t dlineinfo 46.0] [.t dlineinfo 47.0] [.t dlineinfo 49.0] 
  2127.     [.t dlineinfo 58.0]
  2128. } {{} {} {3 16 49 13 10} {}}
  2129. test textDisp-20.2 {FindDLine} {fonts} {
  2130.     .t yview 100.0
  2131.     .t yview -pickplace 53.0
  2132.     list [.t dlineinfo 50.0] [.t dlineinfo 50.14] [.t dlineinfo 50.15]
  2133. } {{} {} {3 3 140 13 10}}
  2134. test textDisp-20.3 {FindDLine} {fonts} {
  2135.     .t yview 100.0
  2136.     .t yview 49.0
  2137.     list [.t dlineinfo 50.0] [.t dlineinfo 50.20] [.t dlineinfo 57.0]
  2138. } {{3 16 105 13 10} {3 29 140 13 10} {}}
  2139. test textDisp-20.4 {FindDLine} {fonts} {
  2140.     .t yview 100.0
  2141.     .t yview 42.0
  2142.     list [.t dlineinfo 50.0] [.t dlineinfo 50.20] [.t dlineinfo 50.40]
  2143. } {{3 107 105 13 10} {3 120 140 13 10} {}}
  2144. .t config -wrap none
  2145. test textDisp-20.5 {FindDLine} {fonts} {
  2146.     .t yview 100.0
  2147.     .t yview 48.0
  2148.     list [.t dlineinfo 50.0] [.t dlineinfo 50.20] [.t dlineinfo 50.40]
  2149. } {{3 29 371 13 10} {3 29 371 13 10} {3 29 371 13 10}}
  2150. .t config -wrap word
  2151. test textDisp-21.1 {TkTextPixelIndex} {fonts} {
  2152.     .t yview 48.0
  2153.     list [.t index @-10,-10] [.t index @6,6] [.t index @22,6] 
  2154.     [.t index @102,6] [.t index @38,55] [.t index @44,67]
  2155. } {48.0 48.0 48.2 48.7 50.40 50.40}
  2156. .t insert end n
  2157. test textDisp-21.2 {TkTextPixelIndex} {fonts} {
  2158.     .t yview 195.0
  2159.     list [.t index @11,70] [.t index @11,84] [.t index @11,102] 
  2160.     [.t index @11,1002]
  2161. } {197.1 198.1 199.1 201.0}
  2162. test textDisp-21.3 {TkTextPixelIndex, horizontal scrolling} {fonts} {
  2163.     .t configure -wrap none
  2164.     .t delete 1.0 end
  2165.     .t insert end "12345n"
  2166.     .t insert end "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
  2167.     .t xview scroll 2 units
  2168.     list [.t index @-5,7] [.t index @5,7] [.t index @33,20]
  2169. } {1.2 1.2 2.6}
  2170. .t delete 1.0 end
  2171. .t insert end "Line 1"
  2172. for {set i 2} {$i <= 200} {incr i} {
  2173.     .t insert end "nLine $i"
  2174. }
  2175. .t configure -wrap word
  2176. .t delete 50.0 51.0
  2177. .t insert 50.0 "This is a long line, one that will wrap around twice.n"
  2178. update
  2179. .t tag add x 50.1
  2180. test textDisp-22.1 {TkTextCharBbox} {fonts} {
  2181.     .t config -wrap word
  2182.     .t yview 48.0
  2183.     list [.t bbox 47.2] [.t bbox 48.0] [.t bbox 50.5] [.t bbox 50.40] 
  2184.     [.t bbox 58.0]
  2185. } {{} {3 3 7 13} {38 29 7 13} {38 55 7 13} {}}
  2186. test textDisp-22.2 {TkTextCharBbox} {fonts} {
  2187.     .t config -wrap none
  2188.     .t yview 48.0
  2189.     list [.t bbox 50.5] [.t bbox 50.40] [.t bbox 57.0]
  2190. } {{38 29 7 13} {} {3 120 7 13}}
  2191. test textDisp-22.3 {TkTextCharBbox, cut-off lines} {fonts} {
  2192.     .t config -wrap char
  2193.     .t yview 10.0
  2194.     wm geom . ${width}x[expr $height-1]
  2195.     update
  2196.     list [.t bbox 19.1] [.t bbox 20.1]
  2197. } {{10 120 7 13} {10 133 7 3}}
  2198. test textDisp-22.4 {TkTextCharBbox, cut-off lines} {fonts} {
  2199.     .t config -wrap char
  2200.     .t yview 10.0
  2201.     wm geom . ${width}x[expr $height+1]
  2202.     update
  2203.     list [.t bbox 19.1] [.t bbox 20.1]
  2204. } {{10 120 7 13} {10 133 7 5}}
  2205. test textDisp-22.5 {TkTextCharBbox, cut-off char} {fonts} {
  2206.     .t config -wrap none
  2207.     .t yview 10.0
  2208.     wm geom . [expr $width-95]x$height
  2209.     update
  2210.     .t bbox 15.6
  2211. } {45 68 7 13}
  2212. test textDisp-22.6 {TkTextCharBbox, line visible but not char} {fonts} {
  2213.     .t config -wrap char
  2214.     .t yview 10.0
  2215.     .t tag add big 20.2 20.5
  2216.     wm geom . ${width}x[expr $height+3]
  2217.     update
  2218.     list [.t bbox 19.1] [.t bbox 20.1] [.t bbox 20.2]
  2219. } {{10 120 7 13} {} {17 133 14 7}}
  2220. wm geom . {}
  2221. update
  2222. test textDisp-22.7 {TkTextCharBbox, different character sizes} {fonts} {
  2223.     .t config -wrap char
  2224.     .t yview 10.0
  2225.     .t tag add big 12.2 12.5
  2226.     update
  2227.     list [.t bbox 12.1] [.t bbox 12.2]
  2228. } {{10 41 7 13} {17 29 14 27}}
  2229. .t tag remove big 1.0 end
  2230. test textDisp-22.8 {TkTextCharBbox, horizontal scrolling} {fonts} {
  2231.     .t configure -wrap none
  2232.     .t delete 1.0 end
  2233.     .t insert end "12345n"
  2234.     .t insert end "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
  2235.     .t xview scroll 4 units
  2236.     list [.t bbox 1.3] [.t bbox 1.4] [.t bbox 2.3] [.t bbox 2.4] 
  2237.     [.t bbox 2.23] [.t bbox 2.24]
  2238. } {{} {3 3 7 13} {} {3 16 7 13} {136 16 7 13} {}}
  2239. test textDisp-22.9 {TkTextCharBbox, handling of spacing} {fonts} {
  2240.     .t configure -wrap char
  2241.     .t delete 1.0 end
  2242.     .t insert 1.0 "abcdefghijklnmnopqrstuvwzyz"
  2243.     .t tag configure spacing -spacing1 8 -spacing3 2
  2244.     .t tag add spacing 1.0 end
  2245.     frame .t.f1 -width 10 -height 4 -bg black
  2246.     frame .t.f2 -width 10 -height 4 -bg black
  2247.     frame .t.f3 -width 10 -height 4 -bg black
  2248.     frame .t.f4 -width 10 -height 4 -bg black
  2249.     .t window create 1.3 -window .t.f1 -align top
  2250.     .t window create 1.7 -window .t.f2 -align center
  2251.     .t window create 2.1 -window .t.f3 -align bottom
  2252.     .t window create 2.10 -window .t.f4 -align baseline
  2253.     update
  2254.     list [.t bbox .t.f1] [.t bbox .t.f2] [.t bbox .t.f3] [.t bbox .t.f4] 
  2255.     [.t bbox 1.1] [.t bbox 2.9]
  2256. } {{24 11 10 4} {55 15 10 4} {10 43 10 4} {76 40 10 4} {10 11 7 13} {69 34 7 13}}
  2257. .t tag delete spacing
  2258. .t delete 1.0 end
  2259. .t insert end "Line 1"
  2260. for {set i 2} {$i <= 200} {incr i} {
  2261.     .t insert end "nLine $i"
  2262. }
  2263. .t configure -wrap word
  2264. .t delete 50.0 51.0
  2265. .t insert 50.0 "This is a long line, one that will wrap around twice.n"
  2266. update
  2267. test textDisp-23.1 {TkTextDLineInfo} {fonts} {
  2268.     .t config -wrap word
  2269.     .t yview 48.0
  2270.     list [.t dlineinfo 47.3] [.t dlineinfo 48.0] [.t dlineinfo 50.40] 
  2271.     [.t dlineinfo 56.0]
  2272. } {{} {3 3 49 13 10} {3 55 126 13 10} {}}
  2273. test textDisp-23.2 {TkTextDLineInfo} {fonts} {
  2274.     .t config -bd 4 -wrap word
  2275.     update
  2276.     .t yview 48.0
  2277.     .t dlineinfo 50.40
  2278. } {7 59 126 13 10}
  2279. .t config -bd 0
  2280. test textDisp-23.3 {TkTextDLineInfo} {fonts} {
  2281.     .t config -wrap none
  2282.     update
  2283.     .t yview 48.0
  2284.     list [.t dlineinfo 50.40] [.t dlineinfo 57.3]
  2285. } {{3 29 371 13 10} {3 120 49 13 10}}
  2286. test textDisp-23.4 {TkTextDLineInfo, cut-off lines} {fonts} {
  2287.     .t config -wrap char
  2288.     .t yview 10.0
  2289.     wm geom . ${width}x[expr $height-1]
  2290.     update
  2291.     list [.t dlineinfo 19.0] [.t dlineinfo 20.0]
  2292. } {{3 120 49 13 10} {3 133 49 3 10}}
  2293. test textDisp-23.5 {TkTextDLineInfo, cut-off lines} {fonts} {
  2294.     .t config -wrap char
  2295.     .t yview 10.0
  2296.     wm geom . ${width}x[expr $height+1]
  2297.     update
  2298.     list [.t dlineinfo 19.0] [.t dlineinfo 20.0]
  2299. } {{3 120 49 13 10} {3 133 49 5 10}}
  2300. wm geom . {}
  2301. update
  2302. test textDisp-23.6 {TkTextDLineInfo, horizontal scrolling} {fonts} {
  2303.     .t config -wrap none
  2304.     .t delete 1.0 end
  2305.     .t insert end "First linen"
  2306.     .t insert end "Second line is a very long one that doesn't all fit.n"
  2307.     .t insert end "Third"
  2308.     .t xview scroll 6 units
  2309.     update
  2310.     list [.t dlineinfo 1.0] [.t dlineinfo 2.0] [.t dlineinfo 3.0]
  2311. } {{-39 3 70 13 10} {-39 16 364 13 10} {-39 29 35 13 10}}
  2312. .t xview moveto 0
  2313. test textDisp-23.7 {TkTextDLineInfo, centering} {fonts} {
  2314.     .t config -wrap word
  2315.     .t delete 1.0 end
  2316.     .t insert end "First linen"
  2317.     .t insert end "Second line is a very long one that doesn't all fit.n"
  2318.     .t insert end "Third"
  2319.     .t tag configure x -justify center
  2320.     .t tag configure y -justify right
  2321.     .t tag add x 1.0
  2322.     .t tag add y 3.0
  2323.     list [.t dlineinfo 1.0] [.t dlineinfo 2.0] [.t dlineinfo 3.0]
  2324. } {{38 3 70 13 10} {3 16 119 13 10} {108 55 35 13 10}}
  2325. .t tag delete x y
  2326. test textDisp-24.1 {TkTextCharLayoutProc} {fonts} {
  2327.     .t configure -wrap char
  2328.     .t delete 1.0 end
  2329.     .t insert 1.0 "abcdefghijklmnopqrstuvwxyz"
  2330.     list [.t bbox 1.19] [.t bbox 1.20]
  2331. } {{136 3 7 13} {3 16 7 13}}
  2332. test textDisp-24.2 {TkTextCharLayoutProc} {fonts} {
  2333.     .t configure -wrap char
  2334.     .t delete 1.0 end
  2335.     .t insert 1.0 "abcdefghijklmnopqrstuvwxyz"
  2336.     wm geom . [expr $width+1]x$height
  2337.     update
  2338.     list [.t bbox 1.19] [.t bbox 1.20]
  2339. } {{136 3 12 13} {3 16 7 13}}
  2340. test textDisp-24.3 {TkTextCharLayoutProc} {fonts} {
  2341.     .t configure -wrap char
  2342.     .t delete 1.0 end
  2343.     .t insert 1.0 "abcdefghijklmnopqrstuvwxyz"
  2344.     wm geom . [expr $width-1]x$height
  2345.     update
  2346.     list [.t bbox 1.19] [.t bbox 1.20]
  2347. } {{136 3 10 13} {3 16 7 13}}
  2348. test textDisp-24.4 {TkTextCharLayoutProc, newline not visible} {fonts} {
  2349.     .t configure -wrap char
  2350.     .t delete 1.0 end
  2351.     .t insert 1.0 01234567890123456789n012345678901234567890
  2352.     wm geom . {}
  2353.     update
  2354.     list [.t bbox 1.19] [.t bbox 1.20] [.t bbox 2.20]
  2355. } {{136 3 7 13} {143 3 0 13} {3 29 7 13}}
  2356. test textDisp-24.5 {TkTextCharLayoutProc, char doesn't fit, newline not visible} {fonts} {
  2357.     .t configure -wrap char
  2358.     .t delete 1.0 end
  2359.     .t insert 1.0 0n1n
  2360.     wm geom . 110x$height
  2361.     update
  2362.     list [.t bbox 1.0] [.t bbox 1.1] [.t bbox 2.0]
  2363. } {{3 3 4 13} {7 3 0 13} {3 16 4 13}}
  2364. test textDisp-24.6 {TkTextCharLayoutProc, line ends with space} {fonts} {
  2365.     .t configure -wrap char
  2366.     .t delete 1.0 end
  2367.     .t insert 1.0 "a b c d e f g h i j k l m n o p"
  2368.     wm geom . {}
  2369.     update
  2370.     list [.t bbox 1.19] [.t bbox 1.20]
  2371. } {{136 3 7 13} {3 16 7 13}}
  2372. test textDisp-24.7 {TkTextCharLayoutProc, line ends with space} {fonts} {
  2373.     .t configure -wrap char
  2374.     .t delete 1.0 end
  2375.     .t insert 1.0 "a b c d e f g h i j k l m n o p"
  2376.     wm geom . [expr $width+1]x$height
  2377.     update
  2378.     list [.t bbox 1.19] [.t bbox 1.20]
  2379. } {{136 3 12 13} {3 16 7 13}}
  2380. test textDisp-24.8 {TkTextCharLayoutProc, line ends with space} {fonts} {
  2381.     .t configure -wrap char
  2382.     .t delete 1.0 end
  2383.     .t insert 1.0 "a b c d e f g h i j k l m n o p"
  2384.     wm geom . [expr $width-1]x$height
  2385.     update
  2386.     list [.t bbox 1.19] [.t bbox 1.20]
  2387. } {{136 3 10 13} {3 16 7 13}}
  2388. test textDisp-24.9 {TkTextCharLayoutProc, line ends with space} {fonts} {
  2389.     .t configure -wrap char
  2390.     .t delete 1.0 end
  2391.     .t insert 1.0 "a b c d e f g h i j k l m n o p"
  2392.     wm geom . [expr $width-6]x$height
  2393.     update
  2394.     list [.t bbox 1.19] [.t bbox 1.20]
  2395. } {{136 3 5 13} {3 16 7 13}}
  2396. test textDisp-24.10 {TkTextCharLayoutProc, line ends with space} {fonts} {
  2397.     .t configure -wrap char
  2398.     .t delete 1.0 end
  2399.     .t insert 1.0 "a b c d e f g h i j k l m n o p"
  2400.     wm geom . [expr $width-7]x$height
  2401.     update
  2402.     list [.t bbox 1.19] [.t bbox 1.20]
  2403. } {{136 3 4 13} {3 16 7 13}}
  2404. test textDisp-24.11 {TkTextCharLayoutProc, line ends with space that doesn't quite fit} {fonts} {
  2405.     .t configure -wrap char
  2406.     .t delete 1.0 end
  2407.     .t insert 1.0 "01234567890123456789 nabcdefg"
  2408.     wm geom . [expr $width-2]x$height
  2409.     update
  2410.     set result {}
  2411.     lappend result [.t bbox 1.21] [.t bbox 2.0]
  2412.     .t mark set insert 1.21
  2413.     lappend result [.t bbox 1.21] [.t bbox 2.0]
  2414. } {{145 3 0 13} {3 16 7 13} {145 3 0 13} {3 16 7 13}}
  2415. test textDisp-24.12 {TkTextCharLayoutProc, tab causes wrap} {fonts} {
  2416.     .t configure -wrap char
  2417.     .t delete 1.0 end
  2418.     .t insert 1.0 "abcdefghi"
  2419.     .t mark set insert 1.4
  2420.     .t insert insert ttt
  2421.     list [.t bbox {insert -1c}] [.t bbox insert]
  2422. } {{115 3 30 13} {3 16 7 13}}
  2423. test textDisp-24.13 {TkTextCharLayoutProc, -wrap none} {fonts} {
  2424.     .t configure -wrap none
  2425.     .t delete 1.0 end
  2426.     .t insert 1.0 "abcdefghijklmnopqrstuvwxyz"
  2427.     wm geom . {}
  2428.     update
  2429.     list [.t bbox 1.19] [.t bbox 1.20]
  2430. } {{136 3 7 13} {}}
  2431. test textDisp-24.14 {TkTextCharLayoutProc, -wrap none} {fonts} {
  2432.     .t configure -wrap none
  2433.     .t delete 1.0 end
  2434.     .t insert 1.0 "abcdefghijklmnopqrstuvwxyz"
  2435.     wm geom . [expr $width+1]x$height
  2436.     update
  2437.     list [.t bbox 1.19] [.t bbox 1.20]
  2438. } {{136 3 7 13} {143 3 5 13}}
  2439. test textDisp-24.15 {TkTextCharLayoutProc, -wrap none} {fonts} {
  2440.     .t configure -wrap none
  2441.     .t delete 1.0 end
  2442.     .t insert 1.0 "abcdefghijklmnopqrstuvwxyz"
  2443.     wm geom . [expr $width-1]x$height
  2444.     update
  2445.     list [.t bbox 1.19] [.t bbox 1.20]
  2446. } {{136 3 7 13} {143 3 3 13}}
  2447. test textDisp-24.16 {TkTextCharLayoutProc, no chars fit} {fonts} {
  2448.     .t configure -wrap char
  2449.     .t delete 1.0 end
  2450.     .t insert 1.0 "abcdefghijklmnopqrstuvwxyz"
  2451.     wm geom . 103x$height
  2452.     update
  2453.     list [.t bbox 1.0] [.t bbox 1.1] [.t bbox 1.2]
  2454. } {{3 3 1 13} {3 16 1 13} {3 29 1 13}}
  2455. test textDisp-24.17 {TkTextCharLayoutProc, -wrap word} {fonts} {
  2456.     .t configure -wrap word
  2457.     .t delete 1.0 end
  2458.     .t insert 1.0 "This is a line that wraps around"
  2459.     wm geom . {}
  2460.     update
  2461.     list [.t bbox 1.19] [.t bbox 1.20]
  2462. } {{136 3 7 13} {3 16 7 13}}
  2463. test textDisp-24.18 {TkTextCharLayoutProc, -wrap word} {fonts} {
  2464.     .t configure -wrap word
  2465.     .t delete 1.0 end
  2466.     .t insert 1.0 "xThis is a line that wraps around"
  2467.     wm geom . {}
  2468.     update
  2469.     list [.t bbox 1.14] [.t bbox 1.15] [.t bbox 1.16]
  2470. } {{101 3 7 13} {108 3 35 13} {3 16 7 13}}
  2471. test textDisp-24.19 {TkTextCharLayoutProc, -wrap word} {fonts} {
  2472.     .t configure -wrap word
  2473.     .t delete 1.0 end
  2474.     .t insert 1.0 "xxThis is a line that wraps around"
  2475.     wm geom . {}
  2476.     update
  2477.     list [.t bbox 1.14] [.t bbox 1.15] [.t bbox 1.16]
  2478. } {{101 3 7 13} {108 3 7 13} {115 3 28 13}}
  2479. test textDisp-24.20 {TkTextCharLayoutProc, vertical offset} {fonts} {
  2480.     .t configure -wrap none
  2481.     .t delete 1.0 end
  2482.     .t insert 1.0 "Line 1nLine 2nLine 3"
  2483.     set result {}
  2484.     lappend result [.t bbox 2.1] [.t dlineinfo 2.1]
  2485.     .t tag configure up -offset 6
  2486.     .t tag add up 2.1
  2487.     lappend result [.t bbox 2.1] [.t dlineinfo 2.1]
  2488.     .t tag configure  up -offset -2
  2489.     lappend result [.t bbox 2.1] [.t dlineinfo 2.1]
  2490.     .t tag delete up
  2491.     set result
  2492. } {{10 16 7 13} {3 16 42 13 10} {10 16 7 13} {3 16 42 19 16} {10 18 7 13} {3 16 42 15 10}}
  2493. .t configure -width 30
  2494. update
  2495. test textDisp-24.21 {TkTextCharLayoutProc, word breaks} {fonts} {
  2496.     .t configure -wrap word
  2497.     .t delete 1.0 end
  2498.     .t insert 1.0 "Sample text xxxxxxx yyyyy zzzzzzz qqqqq rrrr ssss tt u vvvvv"
  2499.     frame .t.f -width 30 -height 20 -bg black
  2500.     .t window create 1.36 -window .t.f
  2501.     .t bbox 1.26
  2502. } {3 19 7 13}
  2503. test textDisp-24.22 {TkTextCharLayoutProc, word breaks} {fonts} {
  2504.     .t configure -wrap word
  2505.     .t delete 1.0 end
  2506.     frame .t.f -width 30 -height 20 -bg black
  2507.     .t insert 1.0 "Sample text xxxxxxx yyyyyyy"
  2508.     .t window create end -window .t.f
  2509.     .t insert end "zzzzzzz qqqqq rrrr ssss tt u vvvvv"
  2510.     .t bbox 1.28
  2511. } {33 19 7 13}
  2512. test textDisp-24.23 {TkTextCharLayoutProc, word breaks} {fonts} {
  2513.     .t configure -wrap word
  2514.     .t delete 1.0 end
  2515.     frame .t.f -width 30 -height 20 -bg black
  2516.     .t insert 1.0 "Sample text xxxxxxx yyyyyyy "
  2517.     .t insert end "zzzzzzz qqqqq rrrr ssss tt"
  2518.     .t window create end -window .t.f
  2519.     .t insert end "u vvvvv"
  2520.     .t bbox .t.f
  2521. } {3 29 30 20}
  2522. catch {destroy .t.f}
  2523. .t configure -width 20
  2524. update
  2525. test textDisp-24.24 {TkTextCharLayoutProc, justification and tabs} {fonts} {
  2526.     .t delete 1.0 end
  2527.     .t tag configure x -justify center
  2528.     .t insert 1.0 aatbbtcctddt
  2529.     .t tag add x 1.0 end
  2530.     list [.t bbox 1.0] [.t bbox 1.10]
  2531. } {{45 3 7 13} {94 3 7 13}}
  2532. .t configure -width 40 -bd 0 -relief flat -highlightthickness 0 -padx 0 
  2533.     -tabs 100
  2534. update
  2535. test textDisp-25.1 {CharBboxProc procedure, check tab width} {fonts} {
  2536.     .t delete 1.0 end
  2537.     .t insert 1.0 abctdtfgh
  2538.     list [.t bbox 1.3] [.t bbox 1.5] [.t bbox 1.6]
  2539. } {{21 1 79 13} {107 1 93 13} {200 1 7 13}}
  2540. .t configure -width 40 -bd 0 -relief flat -highlightthickness 0 -padx 0 
  2541. -tabs {}
  2542. update
  2543. test textDisp-26.1 {AdjustForTab procedure, no tabs} {fonts} {
  2544.     .t delete 1.0 end
  2545.     .t insert 1.0 atbcdefghijtctd
  2546.     list [lindex [.t bbox 1.2] 0] [lindex [.t bbox 1.12] 0] 
  2547.     [lindex [.t bbox 1.14] 0]
  2548. } {56 168 224}
  2549. test textDisp-26.2 {AdjustForTab procedure, not enough tabs specified} {
  2550.     .t delete 1.0 end
  2551.     .t insert 1.0 atbtctd
  2552.     .t tag delete x
  2553.     .t tag configure x -tabs 40
  2554.     .t tag add x 1.0 end
  2555.     list [lindex [.t bbox 1.2] 0] [lindex [.t bbox 1.4] 0] 
  2556.     [lindex [.t bbox 1.6] 0]
  2557. } {40 80 120}
  2558. test textDisp-26.3 {AdjustForTab procedure, not enough tabs specified} {
  2559.     .t delete 1.0 end
  2560.     .t insert 1.0 atbtctdte
  2561.     .t tag delete x
  2562.     .t tag configure x -tabs {40 70 right}
  2563.     .t tag add x 1.0 end
  2564.     list [lindex [.t bbox 1.2] 0] 
  2565.     [expr [lindex [.t bbox 1.4] 0] + [lindex [.t bbox 1.4] 2]] 
  2566.     [expr [lindex [.t bbox 1.6] 0] + [lindex [.t bbox 1.6] 2]] 
  2567.     [expr [lindex [.t bbox 1.8] 0] + [lindex [.t bbox 1.8] 2]]
  2568. } {40 70 100 130}
  2569. test textDisp-26.4 {AdjustForTab procedure, different alignments} {
  2570.     .t delete 1.0 end
  2571.     .t insert 1.0 atbctdetfgthi
  2572.     .t tag delete x
  2573.     .t tag configure x -tabs {40 center 80 left 130 right}
  2574.     .t tag add x 1.0 end
  2575.     .t tag add y 1.2
  2576.     .t tag add y 1.5
  2577.     .t tag add y 1.8
  2578.     list [lindex [.t bbox 1.3] 0] [lindex [.t bbox 1.5] 0] 
  2579.     [lindex [.t bbox 1.10] 0]
  2580. } {40 80 130}
  2581. test textDisp-26.5 {AdjustForTab procedure, numeric alignment} {
  2582.     .t delete 1.0 end
  2583.     .t insert 1.0 at1.234
  2584.     .t tag delete x
  2585.     .t tag configure x -tabs {120 numeric}
  2586.     .t tag add x 1.0 end
  2587.     .t tag add y 1.2
  2588.     .t tag add y 1.5
  2589.     lindex [.t bbox 1.3] 0
  2590. } {120}
  2591. test textDisp-26.6 {AdjustForTab procedure, numeric alignment} {
  2592.     .t delete 1.0 end
  2593.     .t insert 1.0 at1,456.234
  2594.     .t tag delete x
  2595.     .t tag configure x -tabs {120 numeric}
  2596.     .t tag add x 1.0 end
  2597.     .t tag add y 1.2
  2598.     lindex [.t bbox 1.7] 0
  2599. } {120}
  2600. test textDisp-26.7 {AdjustForTab procedure, numeric alignment} {
  2601.     .t delete 1.0 end
  2602.     .t insert 1.0 at1.456.234,7
  2603.     .t tag delete x
  2604.     .t tag configure x -tabs {120 numeric}
  2605.     .t tag add x 1.0 end
  2606.     .t tag add y 1.2
  2607.     lindex [.t bbox 1.11] 0
  2608. } {120}
  2609. test textDisp-26.8 {AdjustForTab procedure, numeric alignment} {
  2610.     .t delete 1.0 end
  2611.     .t insert 1.0 attest
  2612.     .t tag delete x
  2613.     .t tag configure x -tabs {120 numeric}
  2614.     .t tag add x 1.0 end
  2615.     .t tag add y 1.2
  2616.     lindex [.t bbox 1.6] 0
  2617. } {120}
  2618. test textDisp-26.9 {AdjustForTab procedure, numeric alignment} {
  2619.     .t delete 1.0 end
  2620.     .t insert 1.0 at1234
  2621.     .t tag delete x
  2622.     .t tag configure x -tabs {120 numeric}
  2623.     .t tag add x 1.0 end
  2624.     .t tag add y 1.2
  2625.     lindex [.t bbox 1.6] 0
  2626. } {120}
  2627. test textDisp-26.10 {AdjustForTab procedure, numeric alignment} {
  2628.     .t delete 1.0 end
  2629.     .t insert 1.0 at1.234567
  2630.     .t tag delete x
  2631.     .t tag configure x -tabs {120 numeric}
  2632.     .t tag add x 1.0 end
  2633.     .t tag add y 1.5
  2634.     lindex [.t bbox 1.3] 0
  2635. } {120}
  2636. test textDisp-26.11 {AdjustForTab procedure, numeric alignment} {
  2637.     .t delete 1.0 end
  2638.     .t insert 1.0 atx=1.234567
  2639.     .t tag delete x
  2640.     .t tag configure x -tabs {120 numeric}
  2641.     .t tag add x 1.0 end
  2642.     .t tag add y 1.7
  2643.     .t tag add y 1.9
  2644.     lindex [.t bbox 1.5] 0
  2645. } {120}
  2646. test textDisp-26.12 {AdjustForTab procedure, adjusting chunks} {
  2647.     .t delete 1.0 end
  2648.     .t insert 1.0 atx1.234567
  2649.     .t tag delete x
  2650.     .t tag configure x -tabs {120 numeric}
  2651.     .t tag add x 1.0 end
  2652.     .t tag add y 1.7
  2653.     .t tag add y 1.9
  2654.     button .b -text "="
  2655.     .t window create 1.3 -window .b
  2656.     update
  2657.     lindex [.t bbox 1.5] 0
  2658. } {120}
  2659. test textDisp-26.13 {AdjustForTab procedure, not enough space} {fonts} {
  2660.     .t delete 1.0 end
  2661.     .t insert 1.0 "abctxyztqrstxyzt0"
  2662.     .t tag delete x
  2663.     .t tag configure x -tabs {10 30 center 50 right 120}
  2664.     .t tag add x 1.0 end
  2665.     list [lindex [.t bbox 1.4] 0] [lindex [.t bbox 1.8] 0] 
  2666.     [lindex [.t bbox 1.12] 0] [lindex [.t bbox 1.16] 0]
  2667. } {28 56 84 120}
  2668. .t configure -width 20 -bd 2 -highlightthickness 2 -relief sunken -tabs {} 
  2669. -wrap char
  2670. update
  2671. test textDisp-27.1 {SizeOfTab procedure, old-style tabs} {fonts} {
  2672.     .t delete 1.0 end
  2673.     .t insert 1.0 atbcdefghijtctd
  2674.     list [.t bbox 1.2] [.t bbox 1.10] [.t bbox 1.12]
  2675. } {{60 5 7 13} {116 5 7 13} {4 18 7 13}}
  2676. test textDisp-27.2 {SizeOfTab procedure, choosing tabX and alignment} {fonts} {
  2677.     .t delete 1.0 end
  2678.     .t insert 1.0 atbcd
  2679.     .t tag delete x
  2680.     .t tag configure x -tabs 120
  2681.     .t tag add x 1.0 end
  2682.     list [.t bbox 1.3] [.t bbox 1.4]
  2683. } {{131 5 13 13} {4 18 7 13}}
  2684. test textDisp-27.3 {SizeOfTab procedure, choosing tabX and alignment} {fonts} {
  2685.     .t delete 1.0 end
  2686.     .t insert 1.0 atttbcd
  2687.     .t tag delete x
  2688.     .t tag configure x -tabs 40
  2689.     .t tag add x 1.0 end
  2690.     list [.t bbox 1.5] [.t bbox 1.6]
  2691. } {{131 5 13 13} {4 18 7 13}}
  2692. test textDisp-27.4 {SizeOfTab procedure, choosing tabX and alignment} {fonts} {
  2693.     .t delete 1.0 end
  2694.     .t insert 1.0 atttbcd
  2695.     .t tag delete x
  2696.     .t tag configure x -tabs {20 center 70 left}
  2697.     .t tag add x 1.0 end
  2698.     list [.t bbox 1.5] [.t bbox 1.6]
  2699. } {{131 5 13 13} {4 18 7 13}}
  2700. test textDisp-27.5 {SizeOfTab procedure, center alignment} {fonts} {
  2701.     .t delete 1.0 end
  2702.     .t insert 1.0 atxyzzyabc
  2703.     .t tag delete x
  2704.     .t tag configure x -tabs {120 center}
  2705.     .t tag add x 1.0 end
  2706.     list [.t bbox 1.6] [.t bbox 1.7]
  2707. } {{135 5 9 13} {4 18 7 13}}
  2708. test textDisp-27.6 {SizeOfTab procedure, center alignment} {fonts} {
  2709.     .t delete 1.0 end
  2710.     .t insert 1.0 atxyzzyabc
  2711.     .t tag delete x
  2712.     .t tag configure x -tabs {150 center}
  2713.     .t tag add x 1.0 end
  2714.     list [.t bbox 1.6] [.t bbox 1.7]
  2715. } {{32 18 7 13} {39 18 7 13}}
  2716. test textDisp-27.7 {SizeOfTab procedure, center alignment, wrap -none (potential numerical problems)} {fonts} {
  2717.     .t delete 1.0 end
  2718.     .t configure -tabs {1c 2c center 3c 4c} -wrap none -width 40
  2719.     .t insert 1.0 atbtctdten012345678934567890atbbtcctdd
  2720.     update
  2721.     .t bbox 2.24
  2722. } {172 18 7 13}
  2723. .t configure -wrap char -tabs {} -width 20
  2724. update
  2725. test textDisp-27.8 {SizeOfTab procedure, right alignment} {fonts} {
  2726.     .t delete 1.0 end
  2727.     .t insert 1.0 attxyzzyabc
  2728.     .t tag delete x
  2729.     .t tag configure x -tabs {100 left 140 right}
  2730.     .t tag add x 1.0 end
  2731.     list [.t bbox 1.6] [.t bbox 1.7]
  2732. } {{137 5 7 13} {4 18 7 13}}
  2733. test textDisp-27.9 {SizeOfTab procedure, left alignment} {fonts} {
  2734.     .t delete 1.0 end
  2735.     .t insert 1.0 atxyzzyabc
  2736.     .t tag delete x
  2737.     .t tag configure x -tabs {120}
  2738.     .t tag add x 1.0 end
  2739.     list [.t bbox 1.3] [.t bbox 1.4]
  2740. } {{131 5 13 13} {4 18 7 13}}
  2741. test textDisp-27.10 {SizeOfTab procedure, numeric alignment} {fonts} {
  2742.     .t delete 1.0 end
  2743.     .t insert 1.0 at123.4
  2744.     .t tag delete x
  2745.     .t tag configure x -tabs {120 numeric}
  2746.     .t tag add x 1.0 end
  2747.     list [.t bbox 1.3] [.t bbox 1.4]
  2748. } {{117 5 27 13} {4 18 7 13}}
  2749. test textDisp-27.11 {SizeOfTab procedure, making tabs at least as wide as a space} {fonts} {
  2750.     .t delete 1.0 end
  2751.     .t insert 1.0 abctdefghijklmnopqrst
  2752.     .t tag delete x
  2753.     .t tag configure x -tabs {120}
  2754.     .t tag add x 1.0 end
  2755.     list [.t bbox 1.5] [.t bbox 1.6]
  2756. } {{131 5 13 13} {4 18 7 13}}
  2757. proc bizarre_scroll args {
  2758.     .t2.t delete 5.0 end
  2759. }
  2760. test textDisp-28.1 {"yview" option with bizarre scroll command} {
  2761.     catch {destroy .t2}
  2762.     toplevel .t2
  2763.     text .t2.t -width 40 -height 4
  2764.     .t2.t insert end "1n2n3n4n5n6n7n8n"
  2765.     pack .t2.t
  2766.     wm geometry .t2 +0+0
  2767.     update
  2768.     .t2.t configure -yscrollcommand bizarre_scroll
  2769.     .t2.t yview 100.0
  2770.     set result [.t2.t index @0,0]
  2771.     update
  2772.     lappend result [.t2.t index @0,0]
  2773. } {6.0 1.0}
  2774. test textDisp-29.1 {miscellaneous: lines wrap but are still too long} {fonts} {
  2775.     catch {destroy .t2}
  2776.     toplevel .t2
  2777.     wm geometry .t2 +0+0
  2778.     text .t2.t -width 20 -height 10 -font $fixedFont 
  2779.     -wrap char -xscrollcommand ".t2.s set"
  2780.     pack .t2.t -side top
  2781.     scrollbar .t2.s -orient horizontal -command ".t2.t xview"
  2782.     pack .t2.s -side bottom -fill x
  2783.     .t2.t insert end 123
  2784.     frame .t2.t.f -width 300 -height 50 -bd 2 -relief raised
  2785.     .t2.t window create 1.1 -window .t2.t.f
  2786.     update
  2787.     list [.t2.t xview] [winfo geom .t2.t.f] [.t2.t bbox 1.3]
  2788. } {{0 0.466667} 300x50+5+18 {12 68 7 13}}
  2789. test textDisp-29.2 {miscellaneous: lines wrap but are still too long} {fonts} {
  2790.     catch {destroy .t2}
  2791.     toplevel .t2
  2792.     wm geometry .t2 +0+0
  2793.     text .t2.t -width 20 -height 10 -font $fixedFont 
  2794.     -wrap char -xscrollcommand ".t2.s set"
  2795.     pack .t2.t -side top
  2796.     scrollbar .t2.s -orient horizontal -command ".t2.t xview"
  2797.     pack .t2.s -side bottom -fill x
  2798.     .t2.t insert end 123
  2799.     frame .t2.t.f -width 300 -height 50 -bd 2 -relief raised
  2800.     .t2.t window create 1.1 -window .t2.t.f
  2801.     .t2.t xview scroll 1 unit
  2802.     update
  2803.     list [.t2.t xview] [winfo geom .t2.t.f] [.t2.t bbox 1.3]
  2804. } {{0.0233333 0.49} 300x50+-2+18 {5 68 7 13}}
  2805. test textDisp-29.3 {miscellaneous: lines wrap but are still too long} {fonts} {
  2806.     catch {destroy .t2}
  2807.     toplevel .t2
  2808.     wm geometry .t2 +0+0
  2809.     text .t2.t -width 20 -height 10 -font $fixedFont 
  2810.     -wrap char -xscrollcommand ".t2.s set"
  2811.     pack .t2.t -side top
  2812.     scrollbar .t2.s -orient horizontal -command ".t2.t xview"
  2813.     pack .t2.s -side bottom -fill x
  2814.     .t2.t insert end 123
  2815.     frame .t2.t.f -width 300 -height 50 -bd 2 -relief raised
  2816.     .t2.t window create 1.1 -window .t2.t.f
  2817.     update
  2818.     .t2.t xview scroll 200 units
  2819.     update
  2820.     list [.t2.t xview] [winfo geom .t2.t.f] [.t2.t bbox 1.3]
  2821. } {{0.536667 1} 300x50+-156+18 {}}
  2822. test textDisp-33.5 {bold or italic fonts} {winOnly} {
  2823.     destroy .tt
  2824.     pack [text .tt -wrap char -font {{MS Sans Serif} 15}]
  2825.     font create no -family [lindex [.tt cget -font] 0] -size 24
  2826.     font create bi -family [lindex [.tt cget -font] 0] -size 24
  2827.     font configure bi -weight bold -slant italic
  2828.     .tt tag configure bi -font bi
  2829.     .tt tag configure no -font no
  2830.     .tt insert end abcd no efgh bi ijkln no
  2831.     update
  2832.     set bb {}
  2833.     for {set i 0} {$i < 12} {incr i 4} {
  2834. lappend bb [lindex [.tt bbox 1.$i] 0]
  2835.     }
  2836.     foreach {a b c} $bb {}
  2837.     unset bb
  2838.     if {($b - $a) * 1.5 < ($c - $b)} {
  2839. set result "italic font has much too much space"
  2840.     } else {
  2841. set result "italic font measurement ok"
  2842.     }
  2843. } {italic font measurement ok}
  2844. destroy .tt
  2845. deleteWindows
  2846. option clear
  2847. # cleanup
  2848. ::tcltest::cleanupTests
  2849. return