diff options
author | fvogel <fvogelnew1@free.fr> | 2015-12-26 21:23:47 (GMT) |
---|---|---|
committer | fvogel <fvogelnew1@free.fr> | 2015-12-26 21:23:47 (GMT) |
commit | c2534ffbad37e3ee0bf1a257c16807a1976e629b (patch) | |
tree | 965afc703d7d1eb3e3227d667ca88873dbd2b54d | |
parent | 7fba872bef36903476be033836a8394fd742a1c0 (diff) | |
parent | 1a7d3ba3cabd12bbfac8cf8a06c1cc2b755ce3dc (diff) | |
download | tk-c2534ffbad37e3ee0bf1a257c16807a1976e629b.zip tk-c2534ffbad37e3ee0bf1a257c16807a1976e629b.tar.gz tk-c2534ffbad37e3ee0bf1a257c16807a1976e629b.tar.bz2 |
Merged core-8-5-branch
-rw-r--r-- | generic/tkTextDisp.c | 9 | ||||
-rw-r--r-- | tests/textDisp.test | 26 |
2 files changed, 33 insertions, 2 deletions
diff --git a/generic/tkTextDisp.c b/generic/tkTextDisp.c index 39311a6..807009b 100644 --- a/generic/tkTextDisp.c +++ b/generic/tkTextDisp.c @@ -4867,9 +4867,16 @@ TextRedrawTag( /* * Round up the starting position if it's before the first line visible on - * the screen (we only care about what's on the screen). + * the screen (we only care about what's on the screen). Beware that the + * display info structure might need update, for instance if we arrived + * here from an 'after idle' script removing tags in a range whose + * display lines (and dInfo) were partially invalidated by a previous + * delete operation in the text widget. */ + if (dInfoPtr->flags & DINFO_OUT_OF_DATE) { + UpdateDisplayInfo(textPtr); + } dlPtr = dInfoPtr->dLinePtr; if (dlPtr == NULL) { return; diff --git a/tests/textDisp.test b/tests/textDisp.test index d5372b8..caba769 100644 --- a/tests/textDisp.test +++ b/tests/textDisp.test @@ -1333,6 +1333,30 @@ test textDisp-9.13 {TkTextRedrawTag} { update list $tk_textRelayout $tk_textRedraw } {{2.0 6.0 7.0} {2.0 6.0 7.0}} +test textDisp-9.14 {TkTextRedrawTag} { + pack [text .tnocrash] + for {set i 1} {$i < 6} {incr i} { + .tnocrash insert end \nfoo$i + } + .tnocrash tag configure mytag1 -relief raised + .tnocrash tag configure mytag2 -relief solid + update + proc doit {} { + .tnocrash tag add mytag1 4.0 5.0 + .tnocrash tag add mytag2 4.0 5.0 + after idle { + .tnocrash tag remove mytag1 1.0 end + .tnocrash tag remove mytag2 1.0 end + } + .tnocrash delete 1.0 2.0 + } + doit ; # must not crash + after 500 { + destroy .tnocrash + set done 1 + } + vwait done +} {} test textDisp-10.1 {TkTextRelayoutWindow} { .t configure -wrap char @@ -2021,9 +2045,9 @@ test textDisp-16.18 {TkTextYviewCmd procedure, "moveto" roundoff} {textfonts} { wm geometry .top1 +0+0 text .top1.t -height 3 -width 4 -wrap none -setgrid 1 -padx 6 \ -spacing3 6 - .top1.t insert end "1\n2\n3\n4\n5\n6" pack .top1.t update + .top1.t insert end "1\n2\n3\n4\n5\n6" .top1.t yview moveto 0.3333 set result [.top1.t yview] destroy .top1 |