diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2012-01-19 19:53:34 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2012-01-19 19:53:34 (GMT) |
commit | 6a1b23bb279925e25b7611184ad2915ff5043d8b (patch) | |
tree | f89178fd23eb2c6e8820b0e4024519aa7d1d6093 | |
parent | 312e43120625077580d3ac4702bfa73fee6fb953 (diff) | |
parent | 2931e05764b25ec1ac949a503b9691b1b7391793 (diff) | |
download | tk-6a1b23bb279925e25b7611184ad2915ff5043d8b.zip tk-6a1b23bb279925e25b7611184ad2915ff5043d8b.tar.gz tk-6a1b23bb279925e25b7611184ad2915ff5043d8b.tar.bz2 |
[Bug-3021557]: Moving the cursor in elided text freezes Tk
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | generic/tkText.c | 14 | ||||
-rw-r--r-- | tests/text.test | 18 |
3 files changed, 26 insertions, 11 deletions
@@ -1,3 +1,8 @@ +2012-01-19 Francois Vogel <fvogelnew1@free.fr> + + * generic/tkText.c: [Bug-3021557]: Moving the cursor in + * tests/text.test: elided text freezes Tk + 2011-12-13 Donal K. Fellows <dkf@users.sf.net> * doc/getOpenFile.n: Make example follow best practices. Issue spotted diff --git a/generic/tkText.c b/generic/tkText.c index 360240c..448cab1 100644 --- a/generic/tkText.c +++ b/generic/tkText.c @@ -920,7 +920,7 @@ TextWidgetObjCmd( * We're going to count up all display lines in the logical * line of 'indexFromPtr' up to, but not including the logical * line of 'indexToPtr', and then subtract off what we didn't - * what from 'from' and add on what we didn't count from 'to. + * want from 'from' and add on what we didn't count from 'to. */ while (index.linePtr != indexToPtr->linePtr) { @@ -929,17 +929,9 @@ TextWidgetObjCmd( /* * We might have skipped past indexToPtr, if we have * multiple logical lines in a single display line. - * Therefore we iterate through each intermediate logical - * line, just to check. Another approach would be just to - * use TkTextIndexCmp on every while() iteration, but that - * would be less efficient. */ - - while (fromPtr != index.linePtr) { - fromPtr = TkBTreeNextLine(textPtr, fromPtr); - if (fromPtr == indexToPtr->linePtr) { - break; - } + if (TkTextIndexCmp(&index,indexToPtr) > 0) { + break; } } diff --git a/tests/text.test b/tests/text.test index 6cd1a07..2225481 100644 --- a/tests/text.test +++ b/tests/text.test @@ -2615,6 +2615,24 @@ test text-10.38 {TextWidgetCmd procedure, "count" option} -setup { } -cleanup { destroy .t } -result {3 903 903 45} +test text-10.39 {TextWidgetCmd procedure, "count" option} -setup { + text .t + pack .t + update + set res {} +} -body { + .t insert end "Line 1 - This is Line 1\n" + .t insert end "Line 2 - This is Line 2\n" + .t insert end "Line 3 - This is Line 3\n" + .t insert end "Line 4 - This is Line 4\n" + .t insert end "Line 5 - This is Line 5\n" + lappend res [.t count -displaylines 1.19 3.24] [.t count -displaylines 1.0 end] + .t tag add hidden 2.9 3.17 + .t tag configure hidden -elide true + lappend res [.t count -displaylines 1.19 3.24] [.t count -displaylines 1.0 end] +} -cleanup { + destroy .t +} -result {2 6 2 5} test text-11.1 {counting with tag priority eliding} -setup { |