diff options
Diffstat (limited to 'tests/textDisp.test')
-rw-r--r-- | tests/textDisp.test | 296 |
1 files changed, 176 insertions, 120 deletions
diff --git a/tests/textDisp.test b/tests/textDisp.test index f2eb47d..5fa0ac5 100644 --- a/tests/textDisp.test +++ b/tests/textDisp.test @@ -39,7 +39,7 @@ option add *Text.highlightThickness $twht catch {destroy .f .t} frame .f -width 100 -height 20 -pack .f -side left +pack append . .f left set fixedFont {"Courier New" -12} # 15 on XP, 13 on Solaris 8 @@ -65,7 +65,7 @@ set bigAscent [font metrics $bigFont -ascent] set ascentDiff [expr {$bigAscent - $fixedAscent}] text .t -font $fixedFont -width 20 -height 10 -yscrollcommand scroll -pack .t -expand 1 -fill both +pack append . .t {top expand fill} .t tag configure big -font $bigFont .t debug on wm geometry . {} @@ -253,8 +253,8 @@ test textDisp-2.5 {LayoutDLine, word wrap} {textfonts} { .t configure -wrap word .t delete 1.0 end .t insert 1.0 "This isx some sample text for testing." - list [.t bbox 1.13] [.t bbox 1.19] [.t bbox 1.20] [.t bbox 1.21] -} [list [list 96 5 $fixedWidth $fixedHeight] [list 138 5 $fixedWidth $fixedHeight] [list 145 5 0 $fixedHeight] [list 5 [expr {$fixedDiff + 18}] $fixedWidth $fixedHeight]] + list [.t bbox 1.13] [.t bbox 1.14] [.t bbox 1.19] +} [list [list 96 5 49 $fixedHeight] [list 5 [expr {$fixedDiff + 18}] 7 $fixedHeight] [list 40 [expr {$fixedDiff + 18}] 7 $fixedHeight]] test textDisp-2.6 {LayoutDLine, word wrap} { .t configure -wrap word .t delete 1.0 end @@ -353,16 +353,16 @@ test textDisp-2.16 {LayoutDLine, justification} {textfonts} { .t tag configure x -justify center .t tag add x 1.1 1.20 .t tag add x 1.21 1.end - list [.t bbox 1.0] [.t bbox 1.20] [.t bbox 1.41] [.t bbox 2.0] -} [list [list 5 5 7 $fixedHeight] [list 5 [expr {$fixedDiff + 18}] 7 $fixedHeight] [list 61 [expr {2*$fixedDiff + 31}] 7 $fixedHeight] [list 5 [expr {3*$fixedDiff + 44}] 7 $fixedHeight]] + list [.t bbox 1.0] [.t bbox 1.20] [.t bbox 1.36] [.t bbox 2.0] +} [list [list 5 5 7 $fixedHeight] [list 5 [expr {$fixedDiff + 18}] 7 $fixedHeight] [list 43 [expr {2*$fixedDiff + 31}] 7 $fixedHeight] [list 5 [expr {3*$fixedDiff + 44}] 7 $fixedHeight]] test textDisp-2.17 {LayoutDLine, justification} {textfonts} { .t configure -wrap word .t delete 1.0 end - .t insert 1.0 "Lots of very long words, enough to force word wrap\nThen\nmore lines" + .t insert 1.0 "Lots of long words, enough to force word wrap\nThen\nmore lines" .t tag configure x -justify center - .t tag add x 1.18 - list [.t bbox 1.0] [.t bbox 1.18] [.t bbox 1.35] [.t bbox 2.0] -} [list [list 5 5 7 $fixedHeight] [list 15 [expr {$fixedDiff + 18}] 7 $fixedHeight] [list 5 [expr {2*$fixedDiff + 31}] 7 $fixedHeight] [list 5 [expr {3*$fixedDiff + 44}] 7 $fixedHeight]] + .t tag add x 1.20 + list [.t bbox 1.0] [.t bbox 1.20] [.t bbox 1.36] [.t bbox 2.0] +} [list [list 5 5 7 $fixedHeight] [list 19 [expr {$fixedDiff + 18}] 7 $fixedHeight] [list 5 [expr {2*$fixedDiff + 31}] 7 $fixedHeight] [list 5 [expr {3*$fixedDiff + 44}] 7 $fixedHeight]] test textDisp-2.18 {LayoutDLine, justification} {textfonts} { .t configure -wrap none .t delete 1.0 end @@ -531,6 +531,7 @@ test textDisp-3.1 {different character sizes} {textfonts} { .t tag add big 2.11 2.14 list [.t bbox 1.1] [.t bbox 1.6] [.t dlineinfo 1.0] [.t dlineinfo 3.0] } [list [list 12 [expr {5+$ascentDiff}] 7 $fixedHeight] [list 52 5 13 27] [list 5 5 114 27 [font metrics $bigFont -ascent]] [list 5 [expr {2* $fixedDiff + 85}] 35 $fixedHeight [expr {$fixedDiff + 10}]]] + .t configure -wrap char test textDisp-4.1 {UpdateDisplayInfo, basic} {textfonts} { .t delete 1.0 end @@ -599,7 +600,7 @@ test textDisp-4.6 {UpdateDisplayInfo, tiny window} { wm overrideredirect . 1 } frame .f2 -width 20 -height 100 - pack .f2 -before .f + pack before .f .f2 top wm geom . 103x103 update .t configure -wrap none -borderwidth 2 @@ -666,7 +667,9 @@ test textDisp-4.10 {UpdateDisplayInfo, filling in extra vertical space} { .t delete 13.0 end update list [.t index @0,0] $tk_textRelayout $tk_textRedraw -} {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}} + # Note, the results of wish8.7 are wrong, because wish8.7 is not deleting the last + # line, this is a bug, so the results have been changed. +} {6.0 {13.0 7.0 6.40 6.20 6.0} {6.0 6.20 6.40 7.0 13.0}} test textDisp-4.11 {UpdateDisplayInfo, filling in extra vertical space} { .t delete 1.0 end .t insert end "1\n2\n3\n4\n5\nLine 6 is such a long line that it wraps around, not once but really quite a few times.\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17" @@ -675,7 +678,7 @@ test textDisp-4.11 {UpdateDisplayInfo, filling in extra vertical space} { .t delete 14.0 end update list [.t index @0,0] $tk_textRelayout $tk_textRedraw -} {6.40 {13.0 7.0 6.80 6.60 6.40} {6.40 6.60 6.80 7.0 13.0}} +} {6.60 {14.0 7.0 6.80 6.60} {6.60 6.80 7.0 14.0}} test textDisp-4.12 {UpdateDisplayInfo, filling in extra vertical space} { .t delete 1.0 end .t insert end "1\n2\n3\n4\n5\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16" @@ -711,7 +714,11 @@ test textDisp-4.14 {UpdateDisplayInfo, special handling for top/bottom lines} { .t yview scroll 3 units update list $tk_textRelayout $tk_textRedraw -} {{11.0 12.0 13.0} {11.0 12.0 13.0}} + # NOTE: old implementation gives the following result: + # {11.0 12.0 13.0} {11.0 12.0 13.0} + # but revised implementation has a sophisticated line caching, so + # the new result is empty. +} {{} {}} test textDisp-4.15 {UpdateDisplayInfo, special handling for top/bottom lines} { .t tag add x 1.0 end .t yview 4.0 @@ -727,7 +734,11 @@ test textDisp-4.16 {UpdateDisplayInfo, special handling for top/bottom lines} { .t yview scroll -2 units update list $tk_textRelayout $tk_textRedraw -} {{2.0 3.0} {2.0 3.0}} + # NOTE: old implementation gives the following result: + # {2.0 3.0} {2.0 3.0} + # but revised implementation has a sophisticated line caching, so + # the new result is empty. +} {{} {}} test textDisp-4.17 {UpdateDisplayInfo, horizontal scrolling} {textfonts} { .t configure -wrap none .t delete 1.0 end @@ -803,6 +814,7 @@ test textDisp-4.23 {UpdateDisplayInfo, no horizontal scrolling except for -wrap .t configure -wrap char list [.t bbox 2.0] [.t bbox 2.16] } [list [list 3 [expr {$fixedDiff + 16}] 7 $fixedHeight] [list 115 [expr {$fixedDiff + 16}] 7 $fixedHeight]] + test textDisp-5.1 {DisplayDLine, handling of spacing} {textfonts} { .t configure -wrap char .t delete 1.0 end @@ -921,7 +933,7 @@ test textDisp-6.6 {scrolling in DisplayText, Expose events after scroll} {unix n test textDisp-6.7 {DisplayText, vertical scrollbar updates} { .t configure -wrap char .t delete 1.0 end - update ; .t count -update -ypixels 1.0 end ; update + update ; .t sync; update set scrollInfo } {0.0 1.0} test textDisp-6.8 {DisplayText, vertical scrollbar updates} { @@ -933,7 +945,7 @@ test textDisp-6.8 {DisplayText, vertical scrollbar updates} { foreach i {2 3 4 5 6 7 8 9 10 11 12 13} { .t insert end "\nLine $i" } - update ; .t count -update -ypixels 1.0 end ; update + update ; .t sync; update set scrollInfo } [list 0.0 [expr {10.0/13}]] .t configure -yscrollcommand {} -xscrollcommand scroll @@ -1152,7 +1164,7 @@ test textDisp-8.11 {TkTextChanged, scrollbar notification when changes are off-s .t insert end "a\nb\nc\n" # We need to wait for our asychronous callbacks to update the # scrollbar - update ; .t count -update -ypixels 1.0 end ; update + update ; .t sync; update .t configure -yscrollcommand "" set scrollInfo } {0.0 0.625} @@ -1181,7 +1193,9 @@ test textDisp-8.12 {TkTextChanged, moving the insert cursor redraws only past an .t mark set insert 3.8 ; # within the same line update lappend res $tk_textRedraw -} {{8.0 9.0} {8.0 12.0} {8.0 12.0} {3.0 8.0} {3.0 4.0}} +} {{5.0 9.0} {5.0 12.0} {5.0 12.0} {3.0 5.0} {3.0 4.0}} +# old result is: {{8.0 9.0} {8.0 12.0} {8.0 12.0} {3.0 8.0} {3.0 4.0}} +# this has changed with new layout algorithm (GC) test textDisp-8.13 {TkTextChanged, used to crash, see [06c1433906]} { .t delete 1.0 end .t insert 1.0 \nLine2\nLine3\n @@ -1220,7 +1234,7 @@ test textDisp-9.3 {TkTextRedrawTag} { update list $tk_textRelayout $tk_textRedraw } {{2.0 2.20} {2.0 2.20 eof}} -test textDisp-9.4 {TkTextRedrawTag} { +test textDisp-9.4 {TkTextRedrawTag} -constraints win -body { .t configure -wrap char .t delete 1.0 end .t insert 1.0 "Line 1\nLine 2 is long enough to wrap around\nLine 3\nLine 4" @@ -1230,8 +1244,9 @@ test textDisp-9.4 {TkTextRedrawTag} { .t tag remove big 1.0 end update list $tk_textRelayout $tk_textRedraw -} {{2.0 2.20} {2.0 2.20 eof}} -test textDisp-9.5 {TkTextRedrawTag} { +} -result {{2.0 2.20} {2.0 2.20 eof}} +# under X11 we get the result {2.0 2.20 4.0} {2.0 2.20 4.0 eof} +test textDisp-9.5 {TkTextRedrawTag} -constraints win -body { .t configure -wrap char .t delete 1.0 end .t insert 1.0 "Line 1\nLine 2 is long enough to wrap around\nLine 3\nLine 4" @@ -1241,7 +1256,8 @@ test textDisp-9.5 {TkTextRedrawTag} { .t tag remove big 1.0 end update list $tk_textRelayout $tk_textRedraw -} {{2.0 2.20} {2.0 2.20 eof}} +} -result {{2.0 2.20} {2.0 2.20 eof}} +# under X11 we get the result {2.0 2.20 3.0 4.0} {2.0 2.20 3.0 4.0 eof} test textDisp-9.6 {TkTextRedrawTag} { .t configure -wrap char .t delete 1.0 end @@ -1300,11 +1316,15 @@ test textDisp-9.11 {TkTextRedrawTag} { .t insert 1.0 "Line 1\nLine 2 is long enough to wrap\nLine 3 is also long enough to wrap\nLine 4" .t tag add big 1.0 2.0 update + set tk_textRedraw {none} .t tag add big 1.0 2.0 update set tk_textRedraw -} {} -test textDisp-9.12 {TkTextRedrawTag} { + # The revised implementation is recognizing that the prior "tag add" + # operation is not changing anything, so it won't do any redraw, + # thus the result is "none". +} {none} +test textDisp-9.12 {TkTextRedrawTag} -constraints win -body { .t configure -wrap char .t delete 1.0 end for {set i 1} {$i < 5} {incr i} { @@ -1316,7 +1336,8 @@ test textDisp-9.12 {TkTextRedrawTag} { .t tag add hidden 3.11 4.6 update list $tk_textRelayout $tk_textRedraw -} {2.0 {2.0 eof}} +} -result {2.0 {2.0 eof}} +# under X11 we get the result {1.0 2.0} {1.0 2.0 eof} test textDisp-9.13 {TkTextRedrawTag} { .t configure -wrap none .t delete 1.0 end @@ -1395,9 +1416,11 @@ test textDisp-11.1 {TkTextSetYView} { } {30.0} test textDisp-11.2 {TkTextSetYView} { .t yview 30.0 - update +# this test case has a small timing problem, so wait a bit + update; after 50; update .t yview 32.0 - update +# this test case has a small timing problem, so wait a bit + update; after 50; update list [.t index @0,0] $tk_textRedraw } {32.0 {40.0 41.0}} test textDisp-11.3 {TkTextSetYView} { @@ -1422,6 +1445,7 @@ test textDisp-11.5 {TkTextSetYView} { update list [.t index @0,0] $tk_textRedraw } {30.0 {}} +# sometime the result is {30.0 {borders 30.0 31.0 32.0 33.0 34.0 35.0 36.0 37.0 38.0 39.0}} test textDisp-11.6 {TkTextSetYView} { .t yview 30.0 update @@ -1469,7 +1493,11 @@ test textDisp-11.11 {TkTextSetYView} { .t yview 197.0 update list [.t index @0,0] $tk_textRedraw -} {191.0 {191.0 192.0 193.0 194.0 195.0 196.0}} +# Due to a more intelligent layout algorithm the old result for $tk_textRedraw +# {191.0 192.0 193.0 194.0 195.0 196.0} +# isn't valid anymore, the new result is an empty list. Now this test case is +# a proof that the 'intelligence' of the new layout algorithm is working. +} {191.0 {}} test textDisp-11.12 {TkTextSetYView, wrapped line is off-screen} { .t insert 10.0 "Long line with enough text to wrap\n" .t yview 1.0 @@ -1906,13 +1934,13 @@ test textDisp-15.3 {ScrollByLines procedure, scrolling backwards} { .t index @0,0 } {49.0} test textDisp-15.4 {ScrollByLines procedure, scrolling backwards} { - .t yview 50.20 + .t yview 50.21 update .t yview scroll -2 units .t index @0,0 } {49.0} test textDisp-15.5 {ScrollByLines procedure, scrolling backwards} { - .t yview 50.40 + .t yview 50.41 update .t yview scroll -2 units .t index @0,0 @@ -1938,7 +1966,7 @@ test textDisp-15.8 {Scrolling near end of window} { frame .tf.f -relief sunken -borderwidth 2 pack .tf.f -padx 10 -pady 10 - text .tf.f.t -font {Courier 9} -height $textheight \ + text .tf.f.t -font {"Courier New" 9} -height $textheight \ -width $textwidth -yscrollcommand ".tf.f.sb set" scrollbar .tf.f.sb -command ".tf.f.t yview" pack .tf.f.t -side left -expand 1 -fill both @@ -1952,11 +1980,11 @@ test textDisp-15.8 {Scrolling near end of window} { .tf.f.t insert end "\nLine $i" } update ; after 1000 ; update - set refind [.tf.f.t index @0,[winfo height .tf.f.t]] + set refind [.tf.f.t index @0,last] # Should scroll and should not crash! .tf.f.t yview scroll 1 unit # Check that it has scrolled - set newind [.tf.f.t index @0,[winfo height .tf.f.t]] + set newind [.tf.f.t index @0,last] set res [.tf.f.t compare $newind > $refind] destroy .tf set res @@ -1971,13 +1999,14 @@ for {set i 2} {$i <= 200} {incr i} { .t tag add big 100.0 105.0 .t insert 151.end { has a lot of extra text, so that it wraps around on the screen several times over.} .t insert 153.end { also has enoug extra text to wrap.} -update ; .t count -update -ypixels 1.0 end -test textDisp-16.1 {TkTextYviewCmd procedure} { +update ; .t sync; update +test textDisp-16.1 {TkTextYviewCmd procedure} -constraints win -body { .t yview 21.0 set x [.t yview] .t yview 1.0 list [expr {int([lindex $x 0]*100)}] [expr {int ([lindex $x 1] * 100)}] -} {9 14} +} -result {9 14} +# under X11 we get the result {9 13} test textDisp-16.2 {TkTextYviewCmd procedure} { list [catch {.t yview 2 3} msg] $msg } {1 {bad option "2": must be moveto or scroll}} @@ -2010,10 +2039,11 @@ test textDisp-16.9 {TkTextYviewCmd procedure, "moveto" option} { test textDisp-16.10 {TkTextYviewCmd procedure, "moveto" option} { list [catch {.t yview moveto gorp} msg] $msg } {1 {expected floating-point number but got "gorp"}} -test textDisp-16.11 {TkTextYviewCmd procedure, "moveto" option} { +test textDisp-16.11 {TkTextYviewCmd procedure, "moveto" option} -constraints win -body { .t yview moveto 0.5 .t index @0,0 -} {103.0} +} -result {103.0} +# under X11 we get the result {102.0} test textDisp-16.12 {TkTextYviewCmd procedure, "moveto" option} { .t yview moveto -1 .t index @0,0 @@ -2022,24 +2052,27 @@ test textDisp-16.13 {TkTextYviewCmd procedure, "moveto" option} { .t yview moveto 1.1 .t index @0,0 } {191.0} -test textDisp-16.14 {TkTextYviewCmd procedure, "moveto" option} { +test textDisp-16.14 {TkTextYviewCmd procedure, "moveto" option} -constraints win -body { .t yview moveto .75 .t index @0,0 -} {151.60} -test textDisp-16.15 {TkTextYviewCmd procedure, "moveto" option} { +} -result {151.60} +# under X11 we get the result {151.20} +test textDisp-16.15 {TkTextYviewCmd procedure, "moveto" option} -constraints win -body { .t yview moveto .752 .t index @0,0 -} {151.60} +} -result {151.60} +# under X11 we get the result {151.20} test textDisp-16.16 {TkTextYviewCmd procedure, "moveto" option} {textfonts} { set count [expr {5 * $bigHeight + 150 * $fixedHeight}] set extra [expr {0.04 * double($fixedDiff * 150) / double($count)}] .t yview moveto [expr {.753 - $extra}] .t index @0,0 } {151.60} -test textDisp-16.17 {TkTextYviewCmd procedure, "moveto" option} { +test textDisp-16.17 {TkTextYviewCmd procedure, "moveto" option} -constraints win -body { .t yview moveto .755 .t index @0,0 -} {151.80} +} -result {151.80} +# under X11 we get the result {151.40} test textDisp-16.18 {TkTextYviewCmd procedure, "moveto" roundoff} {textfonts} { catch {destroy .top1} toplevel .top1 @@ -2087,7 +2120,7 @@ test textDisp-16.24 {TkTextYviewCmd procedure, "scroll" option, back pages} { .t yview scroll -3 pa .t index @0,0 } {1.0} -test textDisp-16.25 {TkTextYviewCmd procedure, "scroll" option, back pages} { +test textDisp-16.25 {TkTextYviewCmd procedure, "scroll" option, back pages} -constraints win -body { .t configure -height 1 update .t yview 50.0 @@ -2097,7 +2130,8 @@ test textDisp-16.25 {TkTextYviewCmd procedure, "scroll" option, back pages} { .t configure -height 10 update set x -} {49.0} +} -result {49.0} +# under X11 we get the result {48.0} test textDisp-16.26 {TkTextYviewCmd procedure, "scroll" option, forward pages} { .t yview 50.0 update @@ -2339,7 +2373,7 @@ test textDisp-17.10 {TkTextScanCmd procedure, word wrapping} {textfonts} { set x [.t index @0,0] .t scan dragto 0 [expr {70 + $fixedDiff}] list $x [.t index @0,0] -} {9.0 8.0} +} {9.15 8.31} .t configure -xscrollcommand scroll -yscrollcommand {} test textDisp-18.1 {GetXView procedure} { .t configure -wrap none @@ -2440,7 +2474,6 @@ test textDisp-18.8 {GetXView procedure} { (horizontal scrolling command executed by text)}} catch {rename bgerror {}} catch {rename bogus {}} -.t configure -xscrollcommand {} -yscrollcommand scroll .t configure -xscrollcommand {} -yscrollcommand scroll test textDisp-19.1 {GetYView procedure} { @@ -2524,7 +2557,7 @@ test textDisp-19.8 {GetYView procedure} { .t insert 10.end " is really quite long; in fact it's so long that it wraps three times" .t yview 2.0 update - .t count -update -ypixels 1.0 end + .t sync set x $scrollInfo } {0.0625 0.6875} test textDisp-19.9 {GetYView procedure} { @@ -2564,11 +2597,11 @@ test textDisp-19.10.1 {Widget manipulation causes height miscount} { foreach i {2 3 4 5 6 7 8 9 10 11 12 13 14 15} { .t insert end "\nLine $i" } - .t insert end "\nThis last line wraps around four " - .t insert end "times with a little bit left on the last line." + .t insert end "\nThis last line is wrapping around four " + .t insert end "times with a bit left on the last line." .t yview insert update - .t count -update -ypixels 1.0 end + .t sync set scrollInfo } {0.5 1.0} test textDisp-19.11 {GetYView procedure} { @@ -2578,11 +2611,11 @@ test textDisp-19.11 {GetYView procedure} { foreach i {2 3 4 5 6 7 8 9 10 11 12 13 14 15} { .t insert end "\nLine $i" } - .t insert end "\nThis last line wraps around four " - .t insert end "times with a little bit left on the last line." + .t insert end "\nThis last line is wrapping around four " + .t insert end "times with a bit left on the last line." .t yview insert update - .t count -update -ypixels 1.0 end + .t sync set scrollInfo } {0.5 1.0} test textDisp-19.11.2 {TextWidgetCmd procedure, "count -displaylines"} { @@ -2601,7 +2634,7 @@ test textDisp-19.11.5.1 {TextWidgetCmd procedure, "count -displaylines"} { .t count -displaylines 16.0 16.5 } {0} test textDisp-19.11.6 {TextWidgetCmd procedure, "count -displaylines"} { - .t count -displaylines 16.0 16.24 + .t count -displaylines 16.0 16.20 } {1} test textDisp-19.11.7 {TextWidgetCmd procedure, "count -displaylines"} { .t count -displaylines 16.0 16.40 @@ -2647,20 +2680,21 @@ test textDisp-19.11.16 {TextWidgetCmd procedure, "count -displaylines"} { .t tag add elide "12.0" "14.0" .t count -displaylines 12.0 16.0 } {2} -test textDisp-19.11.17 {TextWidgetCmd procedure, "index +displaylines"} { +test textDisp-19.11.17 {TextWidgetCmd procedure, "index +displaylines"} -constraints win -body { .t tag remove elide 1.0 end .t tag add elide "12.0" "14.0" list [.t index "11.5 +2d lines"] \ [.t index "12.0 +2d lines"] [.t index "11.0 +2d lines"] \ [.t index "13.0 +2d lines"] [.t index "13.1 +3d lines"] \ [.t index "13.0 +4d lines"] -} {15.5 16.0 15.0 16.0 16.21 16.39} +# under X11 we get the result {15.5 15.0 15.0 15.0 16.0 16.15} +} -result {15.5 16.0 15.0 16.0 16.15 16.33} test textDisp-19.11.18 {TextWidgetCmd procedure, "index +displaylines"} { .t tag remove elide 1.0 end .t tag add elide "12.0" "14.0" list [.t index "15.5 -2d lines"] \ [.t index "16.0 -2d lines"] [.t index "15.0 -2d lines"] \ - [.t index "16.0 -3d lines"] [.t index "16.23 -4d lines"] \ + [.t index "16.0 -3d lines"] [.t index "16.20 -4d lines"] \ [.t index "16.42 -5d lines"] } {11.5 14.0 11.0 11.0 11.2 11.3} test textDisp-19.11.19 {TextWidgetCmd procedure, "count -displaylines"} { @@ -2668,21 +2702,22 @@ test textDisp-19.11.19 {TextWidgetCmd procedure, "count -displaylines"} { .t tag add elide "12.0" "16.0 +1displaylines" .t count -displaylines 12.0 17.0 } {4} -test textDisp-19.11.20 {TextWidgetCmd procedure, "index +displaylines"} { +test textDisp-19.11.20 {TextWidgetCmd procedure, "index +displaylines"} -constraints win -body { .t tag remove elide 1.0 end .t tag add elide "12.0" "16.0 +1displaylines" list [.t index "11.5 +2d lines"] \ [.t index "12.0 +2d lines"] [.t index "11.0 +2d lines"] \ [.t index "13.0 +2d lines"] [.t index "13.0 +3d lines"] \ [.t index "13.0 +4d lines"] -} {16.44 16.57 16.39 16.57 16.74 17.0} +} -result {16.38 16.50 16.33 16.50 16.67 17.0} +# under X11 we get the result {16.38 16.33 16.33 16.33 16.50 16.67} test textDisp-19.11.21 {TextWidgetCmd procedure, "index +displaylines"} { .t tag remove elide 1.0 end .t tag add elide "12.0" "16.0 +1displaylines" list [.t index "16.44 -2d lines"] \ - [.t index "16.57 -3d lines"] [.t index "16.39 -2d lines"] \ - [.t index "16.60 -4d lines"] [.t index "16.76 -4d lines"] \ - [.t index "17.0 -5d lines"] + [.t index "16.56 -3d lines"] [.t index "16.39 -2d lines"] \ + [.t index "16.59 -4d lines"] [.t index "16.75 -4d lines"] \ + [.t index "17.7 -5d lines"] } {11.5 11.0 11.0 10.3 11.2 11.0} test textDisp-19.11.22 {TextWidgetCmd procedure, "index +displaylines"} { .t tag remove elide 1.0 end @@ -2694,12 +2729,12 @@ test textDisp-19.11.22 {TextWidgetCmd procedure, "index +displaylines"} { test textDisp-19.11.23 {TextWidgetCmd procedure, "index +displaylines"} { .t tag remove elide 1.0 end .t tag add elide "12.3" "16.0 +1displaylines" - list [.t index "11.5 +1d lines"] [.t index "11.5 +2d lines"] \ - [.t index "12.0 +1d lines"] \ - [.t index "12.0 +2d lines"] [.t index "11.0 +2d lines"] \ + list [.t index "11.3 +1d lines"] [.t index "11.7 +2d lines"] \ + [.t index "12.3 +1d lines"] \ + [.t index "12.3 +2d lines"] [.t index "11.5 +2d lines"] \ [.t index "13.0 +2d lines"] [.t index "13.0 +3d lines"] \ [.t index "13.0 +4d lines"] -} {16.23 16.44 16.39 16.57 16.39 16.60 16.77 16.79} +} {16.18 16.41 16.37 16.55 16.39 16.55 16.76 17.0} .t tag remove elide 1.0 end test textDisp-19.11.24 {TextWidgetCmd procedure, "index +/-displaylines"} { list [.t index "11.5 + -1 display lines"] \ @@ -2747,11 +2782,10 @@ test textDisp-19.14 {GetYView procedure} { foreach i {2 3 4 5 6 7 8 9 10 11 12 13 14 15} { .t insert end "\nLine $i" } - .t insert end "\nThis last line wraps around four " - .t insert end "times with a little bit left on the last line." + .t insert end "\nThis last line is wrapping around four " + .t insert end "times with a bit left on the last line." # Need to update so everything is calculated. - update ; .t count -update -ypixels 1.0 end - update ; after 10 ; update + update ; .t sync; update set scrollInfo "unchanged" .t mark set insert 3.0 .t tag configure x -background red @@ -2767,8 +2801,8 @@ test textDisp-19.15 {GetYView procedure} { foreach i {2 3 4 5 6 7 8 9 10 11 12 13 14 15} { .t insert end "\nLine $i" } - .t insert end "\nThis last line wraps around four " - .t insert end "times with a bit little left on the last line." + .t insert end "\nThis last line is wrapping around four " + .t insert end "times with a bit left on the last line." update .t configure -yscrollcommand scrollError proc bgerror args { @@ -2795,10 +2829,10 @@ test textDisp-19.16 {count -ypixels} { foreach i {2 3 4 5 6 7 8 9 10 11 12 13 14 15} { .t insert end "\nLine $i" } - .t insert end "\nThis last line wraps around four " - .t insert end "times with a little bit left on the last line." + .t insert end "\nThis last line is wrapping around four " + .t insert end "times with a bit left on the last line." # Need to update so everything is calculated. - update ; .t count -update -ypixels 1.0 end ; update + update ; .t sync; update set res {} lappend res \ [.t count -ypixels 1.0 end] \ @@ -2865,6 +2899,7 @@ test textDisp-19.19 {count -ypixels with indices in elided lines} { update set res [list [.t count -ypixels 5.0 11.0] [.t count -ypixels 5.0 11.20]] } [list [expr {1 * $fixedHeight}] [expr {2 * $fixedHeight}]] + .t delete 1.0 end .t insert end "Line 1" for {set i 2} {$i <= 200} {incr i} { @@ -2873,28 +2908,28 @@ for {set i 2} {$i <= 200} {incr i} { .t configure -wrap word .t delete 50.0 51.0 .t insert 50.0 "This is a long line, one that will wrap around twice.\n" -test textDisp-20.1 {FindDLine} { +test textDisp-20.1 {FindDLine} {textfonts} { .t yview 48.0 list [.t dlineinfo 46.0] [.t dlineinfo 47.0] [.t dlineinfo 49.0] \ [.t dlineinfo 58.0] } [list {} {} [list 3 [expr {$fixedDiff + 16}] 49 [expr {$fixedDiff + 13}] [expr {$fixedDiff + 10}]] {}] -test textDisp-20.2 {FindDLine} { +test textDisp-20.2 {FindDLine} {textfonts} { .t yview 100.0 .t yview -pickplace 53.0 - list [.t dlineinfo 50.0] [.t dlineinfo 50.14] [.t dlineinfo 50.21] -} [list [list 3 [expr {-1 - $fixedDiff/2}] 140 [expr {$fixedDiff + 13}] [expr {$fixedDiff + 10}]] [list 3 [expr {-1 - $fixedDiff/2}] 140 [expr {$fixedDiff + 13}] [expr {$fixedDiff + 10}]] [list 3 [expr {12 + $fixedDiff/2}] 133 [expr {$fixedDiff + 13}] [expr {$fixedDiff + 10}]]] -test textDisp-20.3 {FindDLine} { + list [.t dlineinfo 50.0] [.t dlineinfo 50.14] [.t dlineinfo 50.15] +} [list [list 3 [expr {-1 - $fixedDiff/2}] 105 [expr {$fixedDiff + 13}] [expr {$fixedDiff + 10}]] [list 3 [expr {-1 - $fixedDiff/2}] 105 [expr {$fixedDiff + 13}] [expr {$fixedDiff + 10}]] [list 3 [expr {12 + $fixedDiff/2}] 140 [expr {$fixedDiff + 13}] [expr {$fixedDiff + 10}]]] +test textDisp-20.3 {FindDLine} {textfonts} { .t yview 100.0 .t yview 49.0 - list [.t dlineinfo 50.0] [.t dlineinfo 50.24] [.t dlineinfo 57.0] -} [list [list 3 [expr {$fixedDiff + 16}] 140 [expr {$fixedDiff + 13}] [expr {$fixedDiff + 10}]] [list 3 [expr {2*$fixedDiff + 29}] 133 [expr {$fixedDiff + 13}] [expr {$fixedDiff + 10}]] {}] -test textDisp-20.4 {FindDLine} { + list [.t dlineinfo 50.0] [.t dlineinfo 50.20] [.t dlineinfo 57.0] +} [list [list 3 [expr {$fixedDiff + 16}] 105 [expr {$fixedDiff + 13}] [expr {$fixedDiff + 10}]] [list 3 [expr {2*$fixedDiff + 29}] 140 [expr {$fixedDiff + 13}] [expr {$fixedDiff + 10}]] {}] +test textDisp-20.4 {FindDLine} {textfonts} { .t yview 100.0 .t yview 42.0 - list [.t dlineinfo 50.0] [.t dlineinfo 50.24] [.t dlineinfo 50.40] -} [list [list 3 [expr {8*$fixedDiff + 107}] 140 [expr {$fixedDiff + 13}] [expr {$fixedDiff + 10}]] [list 3 [expr {9*$fixedDiff + 120}] 133 [expr {$fixedDiff + 13}] [expr {$fixedDiff + 10}]] {}] + list [.t dlineinfo 50.0] [.t dlineinfo 50.20] [.t dlineinfo 50.40] +} [list [list 3 [expr {8*$fixedDiff + 107}] 105 [expr {$fixedDiff + 13}] [expr {$fixedDiff + 10}]] [list 3 [expr {9*$fixedDiff + 120}] 140 [expr {$fixedDiff + 13}] [expr {$fixedDiff + 10}]] {}] .t config -wrap none -test textDisp-20.5 {FindDLine} { +test textDisp-20.5 {FindDLine} {textfonts} { .t yview 100.0 .t yview 48.0 list [.t dlineinfo 50.0] [.t dlineinfo 50.20] [.t dlineinfo 50.40] @@ -2905,7 +2940,7 @@ test textDisp-21.1 {TkTextPixelIndex} {textfonts} { .t yview 48.0 list [.t index @-10,-10] [.t index @6,6] [.t index @22,6] \ [.t index @102,6] [.t index @38,[expr {$fixedHeight * 4 + 3}]] [.t index @44,67] -} {48.0 48.0 48.2 48.7 50.45 50.45} +} {48.0 48.0 48.2 48.7 50.40 50.40} .t insert end \n test textDisp-21.2 {TkTextPixelIndex} {textfonts} { .t yview 195.0 @@ -2961,7 +2996,7 @@ test textDisp-22.1 {TkTextCharBbox} {textfonts} { .t yview 48.0 list [.t bbox 47.2] [.t bbox 48.0] [.t bbox 50.5] [.t bbox 50.40] \ [.t bbox 58.0] -} [list {} [list 3 3 7 $fixedHeight] [list 38 [expr {3+2*$fixedHeight}] 7 $fixedHeight] [list 3 [expr {3+4*$fixedHeight}] 7 $fixedHeight] {}] +} [list {} [list 3 3 7 $fixedHeight] [list 38 [expr {3+2*$fixedHeight}] 7 $fixedHeight] [list 38 [expr {3+4*$fixedHeight}] 7 $fixedHeight] {}] test textDisp-22.2 {TkTextCharBbox} {textfonts} { .t config -wrap none .t yview 48.0 @@ -3085,13 +3120,13 @@ test textDisp-23.1 {TkTextDLineInfo} {textfonts} { .t yview 48.0 list [.t dlineinfo 47.3] [.t dlineinfo 48.0] [.t dlineinfo 50.40] \ [.t dlineinfo 56.0] -} [list {} [list 3 3 49 [expr {$fixedDiff + 13}] [expr {$fixedDiff + 10}]] [list 3 [expr {4*$fixedDiff + 55}] 91 [expr {$fixedDiff + 13}] [expr {$fixedDiff + 10}]] {}] +} [list {} [list 3 3 49 [expr {$fixedDiff + 13}] [expr {$fixedDiff + 10}]] [list 3 [expr {4*$fixedDiff + 55}] 126 [expr {$fixedDiff + 13}] [expr {$fixedDiff + 10}]] {}] test textDisp-23.2 {TkTextDLineInfo} {textfonts} { .t config -bd 4 -wrap word update .t yview 48.0 .t dlineinfo 50.40 -} [list 7 [expr {4*$fixedDiff + 59}] 91 [expr {$fixedDiff + 13}] [expr {$fixedDiff + 10}]] +} [list 7 [expr {4*$fixedDiff + 59}] 126 [expr {$fixedDiff + 13}] [expr {$fixedDiff + 10}]] .t config -bd 0 test textDisp-23.3 {TkTextDLineInfo} {textfonts} { .t config -wrap none @@ -3286,11 +3321,11 @@ test textDisp-24.17 {TkTextCharLayoutProc, -wrap word} {textfonts} { test textDisp-24.18 {TkTextCharLayoutProc, -wrap word} {textfonts} { .t configure -wrap word .t delete 1.0 end - .t insert 1.0 "xxThis is a line that wraps around" + .t insert 1.0 "xThis is a line that wraps around" wm geom . {} update - list [.t bbox 1.15] [.t bbox 1.16] [.t bbox 1.17] -} [list [list 108 3 7 $fixedHeight] [list 115 3 28 $fixedHeight] [list 3 [expr {$fixedDiff + 16}] 7 $fixedHeight]] + list [.t bbox 1.14] [.t bbox 1.15] [.t bbox 1.16] +} [list [list 101 3 7 $fixedHeight] [list 108 3 35 $fixedHeight] [list 3 [expr {$fixedDiff + 16}] 7 $fixedHeight]] test textDisp-24.19 {TkTextCharLayoutProc, -wrap word} {textfonts} { .t configure -wrap word .t delete 1.0 end @@ -3699,7 +3734,7 @@ test textDisp-28.1 {"yview" option with bizarre scroll command} { set result [.t2.t index @0,0] update lappend result [.t2.t index @0,0] -} {6.0 1.0} +} {6.0 2.0} test textDisp-29.1 {miscellaneous: lines wrap but are still too long} {textfonts} { catch {destroy .t2} @@ -3821,7 +3856,7 @@ test textDisp-29.2.5 {miscellaneous: can show last character} { set iWidth [lindex [.t2.t bbox end-2c] 2] .t2.t xview scroll 2 units set iWidth2 [lindex [.t2.t bbox end-2c] 2] - + if {($iWidth == $iWidth2) && $iWidth >= 2} { set result "correct" } else { @@ -3845,6 +3880,7 @@ test textDisp-29.3 {miscellaneous: lines wrap but are still too long} {textfonts update list [.t2.t xview] [winfo geom .t2.t.f] [.t2.t bbox 1.3] } [list [list [expr {16.0/30}] 1.0] 300x50+-155+[expr {$fixedDiff + 18}] {}] + test textDisp-30.1 {elidden text joining multiple logical lines} { .t2.t delete 1.0 end .t2.t insert 1.0 "1111\n2222\n3333" @@ -3894,7 +3930,7 @@ test textDisp-31.2 {line update index shifting} { set res } [list [expr {100 + $fixedHeight * 6}] [expr {100 + $fixedHeight * 8}] [expr {$fixedHeight * 9}] [expr {$fixedHeight * 7}] [expr {100 + $fixedHeight * 6}]] -test textDisp-31.3 {line update index shifting} { +test textDisp-31.3 {line update index shifting} -constraints win -body { # Should do exactly the same as the above, as long # as we are correctly tagging the correct lines for # recalculation. The 'update' and 'delay' must be @@ -3916,7 +3952,7 @@ test textDisp-31.3 {line update index shifting} { update ; after 1000 ; update lappend res [.t count -ypixels 1.0 end] set res -} [list [expr {100 + $fixedHeight * 6}] [expr {100 + $fixedHeight * 8}] [expr {$fixedHeight * 9}] [expr {$fixedHeight * 7}] [expr {100 + $fixedHeight * 6}]] +} -result [list [expr {100 + $fixedHeight * 6}] [expr {100 + $fixedHeight * 8}] [expr {$fixedHeight * 9}] [expr {$fixedHeight * 7}] [expr {100 + $fixedHeight * 6}]] test textDisp-31.4 {line embedded image height update} { set res {} @@ -3972,7 +4008,7 @@ test textDisp-31.6 {line update index shifting} { set res } [list [expr {100 + $fixedHeight * 6}] [expr {100 + $fixedHeight * 8}] [expr {$fixedHeight * 9}] [expr {$fixedHeight * 7}] [expr {100 + $fixedHeight * 6}]] -test textDisp-31.7 {line update index shifting, elided} { +test textDisp-31.7 {line update index shifting, elided} -constraints win -body { # The 'update' and 'delay' must be long enough to ensure all # asynchronous updates have been performed. set res {} @@ -3991,7 +4027,7 @@ test textDisp-31.7 {line update index shifting, elided} { update ; after 1000 ; update lappend res [.t count -ypixels 1.0 end] set res -} [list [expr {$fixedHeight * 1}] [expr {$fixedHeight * 3}] [expr {$fixedHeight * 3}] [expr {$fixedHeight * 2}] [expr {$fixedHeight * 1}] [expr {$fixedHeight * 1}]] +} -result [list [expr {$fixedHeight * 1}] [expr {$fixedHeight * 3}] [expr {$fixedHeight * 3}] [expr {$fixedHeight * 2}] [expr {$fixedHeight * 1}] [expr {$fixedHeight * 1}]] test textDisp-32.0 {everything elided} { # Must not crash @@ -4014,7 +4050,7 @@ test textDisp-32.1 {everything elided} { update ; update ; update ; update destroy .tt } {} -test textDisp-32.2 {elide and tags} { +test textDisp-32.2 {elide and tags} -constraints win -body { pack [text .tt -height 30 -width 100 -bd 0 \ -highlightthickness 0 -padx 0] .tt insert end \ @@ -4084,7 +4120,7 @@ test textDisp-32.2 {elide and tags} { [lindex [.tt bbox "1.0 + 0 displaychars"] 0]] destroy .tt set res -} {{1.0 20 20} {1.29 0 0} {1.0 0 0} {1.29 0 20}\ +} -result {{1.0 20 20} {1.29 0 0} {1.0 0 0} {1.29 0 20}\ {1.0 20 20} {1.29 0 20} {1.0 20 20}} test textDisp-32.3 "NULL undisplayProc problems: #1791052" -setup { set img [image create photo -data { @@ -4134,31 +4170,32 @@ test textDisp-33.1 {one line longer than fits in the widget} { set result "ok" } } {ok} -test textDisp-33.2 {one line longer than fits in the widget} { - destroy .tt - pack [text .tt -wrap char] - .tt debug 1 - set tk_textHeightCalc "" - .tt insert 1.0 [string repeat "more wrap + " 1] - after 100 ; update idletasks - # Nothing should have been recalculated. - set tk_textHeightCalc -} {} +# Test case 33.2 has been removed. The problem is that the revised +# implementation is also updating the line heights while computing +# the display lines for displaying the content, so we cannot +# distinguish anymore between the display process and the line +# height calculation. +#test textDisp-33.2 {one line longer than fits in the widget} { +# destroy .tt +# pack [text .tt -wrap char] +# set tk_textHeightCalc "" +# .tt insert 1.0 [string repeat "more wrap + " 1] +# after 100 ; update idletasks +# # Nothing should have been recalculated. +# set tk_textHeightCalc +#} {} test textDisp-33.3 {one line longer than fits in the widget} { destroy .tt pack [text .tt -wrap char] - .tt debug 1 set tk_textHeightCalc "" .tt insert 1.0 [string repeat "more wrap + " 300] - update ; .tt count -update -ypixels 1.0 end ; update + .tt sync # Each line should have been recalculated just once - .tt debug 0 expr {[llength $tk_textHeightCalc] == [.tt count -displaylines 1.0 end]} } {1} test textDisp-33.4 {one line longer than fits in the widget} { destroy .tt pack [text .tt -wrap char] - .tt debug 1 set tk_textHeightCalc "" .tt insert 1.0 [string repeat "more wrap + " 300] update ; update ; update @@ -4170,7 +4207,6 @@ test textDisp-33.4 {one line longer than fits in the widget} { set result "ok" } set idx [.tt index "1.0 + 1 displaylines"] - .tt debug 0 set result } {ok} destroy .tt @@ -4207,7 +4243,6 @@ test textDisp-34.1 {Line heights recalculation problem: bug 2677890} -setup { set result {} } -body { .t1 insert end $txt - .t1 debug 1 set ge [winfo geometry .] scan $ge "%dx%d+%d+%d" width height left top update @@ -4243,9 +4278,30 @@ test textDisp-35.1 {Init value of charHeight - Dancing scrollbar bug 1499165} -s destroy .t1 } -result {1 1} +test textDisp-36.1 {Display bug with 'yview insert'} -setup { + text .t1 -font $fixedFont -width 20 -height 3 -wrap word + pack .t1 + .t1 delete 1.0 end + .t1 tag configure elide -elide 1 + .t1 insert end "Line 1\nThis line is wrapping around two times." +} -body { + .t1 tag add elide 1.3 2.0 + .t1 yview insert + update + # wish8.7 now is crashing + .t1 yview scroll -1 pixels +} -cleanup { + destroy .t1 +} -result {} + deleteWindows option clear # cleanup cleanupTests return + +# Local Variables: +# mode: tcl +# End: +# vi:set ts=8 sw=4: |